我有一个越狱的 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。