为什么用cp代替使用Nautilus的GUI副本要慢一半以上?(AFC协议)


9

我有一个越狱的iPod Touch,并且我有afc2add软件包。当我将其插入ubuntu笔记本电脑时,它会自动挂载iPod的Media目录以及应用程序文件共享文件夹。当我使用Nautilus将文件传输到Media文件夹时,其峰值约为5MB / s。但是,当我使用终端将文件复制到文件~/.gvfs/Matt's iPod夹中时(在Nautilus中,它显示为“ Matt的iPod”),我只看到它的速度大约为2MB / s。

任何人都可以提供任何线索来说明为什么使用cp而不是使用Nautilus的GUI副本将文件cp慢一半以上?

顺便说一句,我可以告诉我终端复制的速度如何,我有一个带pv的脚本[简而言之是:pv $1 > $2],大约是1.5MB / s。所以我也尝试了cp,并du每秒建立一个到文件的循环,然后每秒跳近2 MB。


在这两种情况下,还可以发布总周转时间吗?
samarasa

奇怪的是,我的情况恰恰相反:cp比使用Nautilus复制快8倍。我很羡慕您:)
marcio

Answers:


15

Nautilus将经历较少的间接层,这可以解释差异。

Nautilus是本机gvfs应用程序,因此它直接与gvfs后端通信。

相反,cp是通过安装在的FUSE文件系统与内核通信,该文件系统~/.gvfsgvfs-fuse-daemon进程处理,而进程又与gvfs后端通信。POSIX API和gvfs之间的阻抗不匹配可能是导致传输效率较低的原因。

使用软件包中的gvfs-copy命令并gvfs-bin复制到适当的URL,您也许可以在命令行上获得类似的性能。


哦,我的天啊。每秒上升到11MB / s,之后平均达到6或7MB / s!谢谢!
马特

1
这是个好消息。gvfs的FUSE接口旨在用作向后兼容的填充程序,它允许所有应用程序访问文件,而不是首选的访问方法。
James Henstridge
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.