为什么使用 cp 文件比使用 Nautilus 的 GUI 复制慢一半以上?(AFC 协议)

为什么使用 cp 文件比使用 Nautilus 的 GUI 复制慢一半以上?(AFC 协议)

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

谁能提供一些线索来解释为什么使用 cp 文件比使用 Nautilus 的 GUI 复制要慢一半以上?

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

答案1

Nautilus 会经过更少的间接层,这可以解释这种差异。

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

相反,cp通过保险丝文件系统挂载在~/.gvfs,由进程处理gvfs-fuse-daemon,然后进程与 gvfs 后端对话。POSIX API 和 gvfs 之间的阻抗不匹配可能导致传输效率较低。

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

相关内容