เหตุใดจึงช้ากว่าครึ่งในการ cp ไฟล์แทนที่จะใช้การคัดลอก GUI ของ Nautilus (โปรโตคอล AFC)


9

ฉันมี iPod Touch ที่คุกแล้วและฉันมีแพ็คเกจ afc2add เมื่อฉันเสียบเข้ากับแล็ปท็อป ubuntu ของฉันมันจะเปิดไดเรกทอรี Media ของ iPod โดยอัตโนมัติรวมถึงโฟลเดอร์แชร์ไฟล์แอปด้วย เมื่อฉันใช้ Nautilus เพื่อถ่ายโอนไฟล์ไปยังโฟลเดอร์ Media มันจะมีความเร็วสูงสุดประมาณ 5MB / s อย่างไรก็ตามเมื่อฉันใช้เทอร์มินัลเพื่อคัดลอกไฟล์ไปยัง~/.gvfs/Matt's iPodโฟลเดอร์ [ใน Nautilus มันจะปรากฏขึ้นเป็น "iPod ของ Matt"] ฉันเพิ่งเห็นมันขึ้นไปประมาณ 2MB / s

ใครบ้างให้เบาะแสว่าทำไมมันช้ากว่าครึ่งหนึ่งในการ cp ไฟล์แทนที่จะใช้สำเนา GUI ของ Nautilus?

โดยวิธีการที่ฉันสามารถบอกได้ว่ามันจะเร็วไปกับสำเนา terminal ฉันมีสคริปต์กับ pv [ในสรุปมันคือ: pv $1 > $2] และที่จะไปประมาณ 1.5MB / s ดังนั้นฉันจึงลอง cp และตั้งค่าลูปไปduที่ไฟล์ทุกวินาทีและมันก็กระโดดขึ้นมาใกล้ ๆ กับ 2 MB ทุกวินาที


นอกจากนี้ยังสามารถโพสต์เวลาเลี้ยวกลับทั้งหมดในทั้งสองกรณี?
samarasa

น่าแปลกที่กรณีของฉันตรงกันข้าม: cp เร็วกว่าการคัดลอกด้วย Nautilus 8 เท่า ฉันอิจฉาคุณ :)
marcio

คำตอบ:


15

Nautilus จะผ่านชั้นทางอ้อมน้อยลงซึ่งอาจอธิบายถึงความแตกต่าง

Nautilus เป็นแอปพลิเคชัน gvfs ดั้งเดิมดังนั้นจึงสื่อสารกับแบ็กเอนด์ gvfs โดยตรง

ในทางตรงกันข้ามcpคือการพูดคุยกับเคอร์เนลผ่านระบบไฟล์FUSEซึ่งติดตั้งที่~/.gvfsซึ่งจัดการโดยgvfs-fuse-daemonกระบวนการซึ่งจะพูดถึงแบ็กเอนด์ gvfs ความต้านทานที่ไม่ตรงกันระหว่าง POSIX API และ gvfs อาจอธิบายถึงการถ่ายโอนที่มีประสิทธิภาพน้อยกว่า

คุณอาจได้รับประสิทธิภาพที่คล้ายกันในบรรทัดคำสั่งโดยใช้gvfs-copyคำสั่งจากgvfs-binแพ็คเกจคัดลอกไปยัง URL ที่เหมาะสม


คุณพระช่วย. มันเพิ่มขึ้นถึง 11MB / s เป็นวินาทีและเฉลี่ยประมาณ 6 หรือ 7MB / s ในภายหลัง! ขอบคุณ!
แมตต์

1
ดีใจที่ได้ยินแบบนั้น. อินเทอร์เฟซ FUSE ไปยัง gvfs นั้นมีวัตถุประสงค์เพื่อเป็นความเข้ากันได้แบบย้อนหลังที่อนุญาตให้แอปพลิเคชันทั้งหมดเข้าถึงไฟล์แทนที่จะเป็นวิธีการเข้าถึงที่ต้องการ
James Henstridge
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.