私はジェイルブレイクされた iPod Touch を持っており、afc2add パッケージも持っています。これを Ubuntu ラップトップに接続すると、iPod のメディア ディレクトリとアプリのファイル共有フォルダが自動的にマウントされます。Nautilus を使用してメディア フォルダにファイルを転送すると、最高速度は約 5MB/s になります。ただし、ターミナルを使用してファイルをフォルダにコピーすると~/.gvfs/Matt's iPod
(Nautilus では「Matt's iPod」として表示されます)、速度は約 2MB/s までしか上がりません。
Nautilus の GUI コピーを使用する代わりに、ファイルを cp すると半分以上遅くなる理由について、何か手がかりを教えていただけますか?
ちなみに、ターミナル コピーで速度がどれくらいかわかります。pv [簡単に言うと、次のようになりますpv $1 > $2
] を使用したスクリプトがあり、約 1.5MB/秒で実行されていました。そこで、cp も試し、1 秒ごとにファイルへのループを設定したところdu
、1 秒あたり約 2 MB に跳ね上がりました。
答え1
Nautilus は間接的なレイヤーをより少なく通過するため、この違いが生じる可能性があります。
Nautilus はネイティブの gvfs アプリケーションなので、gvfs バックエンドと直接通信します。
対照的に、cp
カーネルと通信するのはヒューズにマウントされたファイル システムはプロセス~/.gvfs
によって処理されgvfs-fuse-daemon
、次に gvfs バックエンドと通信します。POSIX API と gvfs 間のインピーダンスの不一致により、転送の効率が低下する可能性があります。
gvfs-copy
パッケージのコマンドgvfs-bin
を適切な URL にコピーして使用することで、コマンド ラインで同様のパフォーマンスが得られる可能性があります。