为什么 cp 文件而不是使用 Nautilus 的 GUI 副本要慢一半以上?(亚足联协议)

Mat*_*att 9 nautilus

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

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

顺便说一句,我可以通过终端副本来判断它的运行速度,我有一个带有 pv 的脚本 [简而言之,它是:pv $1 > $2],并且速度约为 1.5MB/s。所以我也尝试了 cp,并du每秒设置一个循环到文件,它每秒跳到接近 2 MB 的地方。

Jam*_*dge 15

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

Nautilus 是一个原生的 gvfs 应用程序,因此它直接与 gvfs 后端通信。

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

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