Warum ist das Kopieren einer Datei per CP über die Hälfte langsamer als das Kopieren über die GUI von Nautilus? (AFC-Protokoll)

Warum ist das Kopieren einer Datei per CP über die Hälfte langsamer als das Kopieren über die GUI von Nautilus? (AFC-Protokoll)

Ich habe einen iPod Touch mit Jailbreak und das Paket afc2add. Wenn ich ihn an meinen Ubuntu-Laptop anschließe, werden das Medienverzeichnis meines iPods sowie die Dateifreigabeordner der App automatisch gemountet. Wenn ich Nautilus verwende, um eine Datei in den Medienordner zu übertragen, liegt die Geschwindigkeit bei etwa 5 MB/s. Wenn ich jedoch ein Terminal verwende, um eine Datei in den ~/.gvfs/Matt's iPodOrdner zu kopieren [in Nautilus wird sie als „Matts iPod“ angezeigt], habe ich nur eine Geschwindigkeit von etwa 2 MB/s festgestellt.

Kann irgendjemand einen Hinweis darauf geben, warum das Kopieren einer Datei per CP über die Hälfte langsamer ist als die Verwendung der GUI-Kopie von Nautilus?

Übrigens kann ich mit einer Terminalkopie feststellen, wie schnell es geht. Ich habe ein Skript mit pv [Kurz gesagt: pv $1 > $2], und das lief ungefähr 1,5 MB/s. Also habe ich auch cp ausprobiert und jede Sekunde eine Schleife zur Datei eingerichtet du, und es sprang um etwa 2 MB pro Sekunde hoch.

Antwort1

Nautilus würde weniger Indirektionsebenen durchlaufen, was den Unterschied erklären könnte.

Nautilus ist eine native GVFS-Anwendung und kommuniziert daher direkt mit den GVFS-Backends.

Im Gegensatz dazu cpkommuniziert man mit dem Kernel über eineSICHERUNGDateisystem ~/.gvfs, das unter gemountet ist und vom gvfs-fuse-daemonProzess verwaltet wird, der wiederum mit den gvfs-Backends kommuniziert. Impedanzfehlanpassungen zwischen der POSIX-API und gvfs könnten für die weniger effizienten Übertragungen verantwortlich sein.

Möglicherweise können Sie eine ähnliche Leistung auf der Befehlszeile erzielen, indem Sie den gvfs-copyBefehl aus dem gvfs-binPaket verwenden und ihn in die entsprechende URL kopieren.

verwandte Informationen