
Macht es einen Unterschied, ob ich rsync mit einem Remote-Host (ssh://) als Quelle/Ziel ausführe oder einen lokalen Pfad verwende, um das gemountete Verzeichnis über sshfs freizugeben?
Könnte es Unterschiede hinsichtlich der Sicherheit oder der Kopiergeschwindigkeit geben, ohne dass Schalter verwendet werden? Verwenden Sie einfach den Rsync-Archivmodus und den Remote-Host-Pfad (SSH). Dasselbe gilt für die SSHFS-Einbindung, nur mit Quelle und Ziel (keine Verschlüsselungsänderungen, nur Standard).
Antwort1
SSHFS ist praktisch, funktioniert aber nicht gut mit rsync oder allgemeiner mit Synchronisierungstools.
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 geänderten Teile zu übertragen. Dies ist nur dann eine Optimierung, wenn die Netzwerkbandbreite deutlich kleiner ist als die Festplattenbandbreite, was normalerweise der Fall ist. Aber 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 bei einer lokalen Kopie (was es für rsync ist, selbst wenn eine der Seiten auf SSHFS ist) einfach die gesamte Datei.
SSHFS wirkt sich auch nachteilig auf die Leistung aus, wenn viele kleine Dateien vorhanden sind. Rsync muss zumindest die Metadaten jeder Datei überprüfen, um festzustellen, ob sie geändert wurde. Bei SSHFS erfordert dies für jede Datei einen Netzwerk-Roundtrip. 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 SFTP-Zugriff, während rsync die Möglichkeit erfordert, Code (insbesondere das rsync-Programm) über eine Shell auszuführen. Wenn der Benutzer kein Shell-Konto hat, ist es möglich und üblich, ein Konto mit einer speziellen Shell bereitzustellen, die nur die Ausführung einiger Programme zulässt, darunter sftp-server
und rsync
. SieheBenötigen Sie eine Shell für SCP?
Wenn Sie nur neue Dateien kopieren und die Anzahl der Dateien nicht sehr groß ist, gibt es keinen bedeutenden Leistungsunterschied.
SSHFS stellt eine SSH-Verbindung her, wenn das Dateisystem gemountet wird, und behält diese Verbindung bei, bis es gemountet wird. Rsync stellt bei jedem Ausführen eine neue Verbindung her, aber Sie können auch dieMultiplexing-Funktion und Huckepack-Funktion auf einer einzigen Hauptverbindungum eine jedesmalige Authentifizierung zu vermeiden.
SSHFS ist ein FUSE-Dateisystem und unterstützt daher nur traditionelle Unix-Metadaten und ACL. Rsync kann erweiterte Attribute übertragen (Sie müssen verwenden rsync -aAX
; beachten Sie, dass ein plain -a
nur traditionelle Unix-Metadaten beibehält).
Antwort2
Um Ihre Hauptfrage zu beantworten: ja, es gibt Unterschiede.sshfs
eine bestehende Verbindung besteht, um den Zugriff auf Remote-Dateien über einen sicheren Kanal zu ermöglichen, und bei rsync über ssh, wird dieser sichere Kanal eingerichtetum mit einer Remote-Rsync-Instanz zu kommunizieren.
Um Ihre zweite Frage zu beantworten: Das Rsync über SSH wird in den meisten, wenn nicht allen Fällen schneller sein, da das Rsync auf dem Remote-System intelligenter nach Dateien sucht, die nicht synchronisiert werden müssen, und vor allem, weil es parallel zu Ihrem lokalen Rsync ausgeführt wird, um diese Informationen zu sammeln.
Die Sicherheit beider Wege ist, bei ähnlicher Konfiguration der SSH-Parameter (Schlüssellänge, Algorithmen), gleich. Was die Standardeinstellungen für Ihr Quell- und Zielsystem sind, hängt von den Distributionskombinationen auf diesen Systemen ab.