SSHFS ist praktisch, passt aber nicht gut zu rsync oder allgemeiner zu Synchronisationstools.
Das größte Problem ist, dass SSHFS die Leistungsoptimierungen von rsync weitgehend zunichte macht. Insbesondere bei mittleren bis großen Dateien berechnet rsync, wenn es feststellt, dass eine Datei geändert wurde, Prüfsummen für Teile der Datei auf jeder Seite, um nur die Teile zu übertragen, die geändert wurden. Dies ist nur dann eine Optimierung, wenn die Netzwerkbandbreite erheblich kleiner als die Festplattenbandbreite ist, was normalerweise der Fall ist. Bei SSHFS ist die "Festplatten" -Bandbreite tatsächlich die Netzwerkbandbreite, sodass rsync die gesamte Datei lesen müsste, um zu bestimmen, was kopiert werden soll. Tatsächlich kopiert rsync mit einer lokalen Kopie (was rsync betrifft, selbst wenn sich eine der Seiten auf SSHFS befindet) nur die gesamte Datei.
SSHFS beeinträchtigt auch die Leistung, wenn viele kleine Dateien vorhanden sind. Rsync muss mindestens die Metadaten jeder Datei überprüfen, um festzustellen, ob sie geändert wurde. Bei SSHFS ist für jede Datei ein Netzwerk-Roundtrip erforderlich. Mit rsync über SSH können beide Seiten parallel arbeiten und Informationen in großen Mengen übertragen, was viel schneller ist.
In Bezug auf Zugriffsbeschränkungen erfordert SSHFS einen SFTP-Zugriff, während rsync die Fähigkeit erfordert, Code (insbesondere das rsync-Programm) über eine Shell auszuführen. Wenn der Benutzer kein Shell-Konto hat, ist es möglich und üblich, einem Konto eine spezielle Shell zur Verfügung zu stellen, mit der nur wenige Programme ausgeführt werden können, einschließlich sftp-server
und rsync
. Siehe Benötigen Sie eine Shell für SCP?
Wenn Sie nur neue Dateien kopieren und nicht sehr viele Dateien vorhanden sind, gibt es keinen signifikanten Leistungsunterschied.
SSHFS stellt eine SSH-Verbindung her, wenn das Dateisystem bereitgestellt wird, und behält diese Verbindung bei, bis die Bereitstellung aufgehoben wird. Rsync stellt jedes Mal eine neue Verbindung her, wenn Sie sie ausführen. Sie können jedoch die Multiplexing-Funktion und das Huckepack für eine einzelne Hauptverbindung verwenden , um eine Authentifizierung jedes Mal zu vermeiden.
SSHFS ist ein FUSE-Dateisystem und unterstützt daher nur herkömmliche Unix-Metadaten und ACLs. Rsync kann erweiterte Attribute übertragen (Sie müssen verwenden rsync -aAX
, beachten Sie, dass in einer Ebene -a
nur herkömmliche Unix-Metadaten erhalten bleiben).
rsync --no-whole-file /mounted/file.tar.gz /home/local/file.tar.gz
. Wenn ichrsync
für diesen Vorgang während der Berechnung der Prüfsumme verwende, um nur die geänderten Teile zu übertragen,rsync
sollte die gesamte Datei gelesen werden, wodurch die vollständigen Daten heruntergeladen werden und nicht nur der aktualisierte Abschnitt? @Gillessshfs
Verbindung ist? Bitte sehen Sie: unix.stackexchange.com/q/544404/198423 @GillesUm Ihre Hauptfrage zu beantworten: Ja, es gibt Unterschiede. Wenn
sshfs
eine Verbindung besteht, die den Zugriff auf Remote-Dateien über einen sicheren Kanal ermöglicht, und mit rsync über ssh, ist dieser sichere Kanal so eingerichtet, dass er mit einer Remote-rsync-Instanz kommuniziert .Um Ihre sekundäre Frage zu beantworten: Die rsync über ssh ist für die meisten, wenn nicht alle Instanzen schneller, da die rsync auf dem Remote-System mehr Intelligenz beim Auffinden von Dateien bietet, die nicht synchronisiert werden müssen, aber hauptsächlich, weil sie parallel zu Ihrer ausgeführt wird lokaler rsync, um diese Informationen zu sammeln.
Die Sicherheit beider Möglichkeiten ist unter der Annahme einer ähnlichen Konfiguration der ssh-Parameter (Schlüssellänge, Algorithmen) gleich. Welche Standardeinstellungen für Ihr Quell- und Zielsystem gelten, hängt von den Verteilungskombinationen auf diesen Systemen ab.
quelle