Ich versuche, mit dem folgenden Befehl Tausende kleiner Dateien von einem Server auf einen anderen zu übertragen:
rsync -zr --delete /home/user/ [email protected]::backup
Derzeit dauert die Übertragung sehr lange (ich habe sie nicht zeitlich festgelegt). Gibt es eine Möglichkeit, dies zu beschleunigen? Sollte ich ein anderes Tool verwenden? Sollte ich rsync über ssh verwenden, anstatt das rsync-Protokoll zu verwenden?
stat()
.-a
aber-r
?Antworten:
Sie müssen den Engpass ermitteln. Es ist kein Rsync. Es ist wahrscheinlich nicht Ihre Netzwerkbandbreite. Wie @Zoredache angedeutet hat, ist es höchstwahrscheinlich die große Anzahl von Iops, die von allen
stat()
Aufrufen generiert werden . Jedes Synchronisierungstool muss die Dateien angeben. Während der Synchronisierung ausführeniostat
, um zu überprüfen.So wird die Frage; wie optimiere ich stat? Zwei einfache Antworten:
noatime
und füge a hinzudir_index
).Wenn die Beschränkung zufällig nicht auf Ihrer Festplatte liegt, können Sie versuchen, den Verzeichnisbaum in mehrere unterschiedliche Bäume aufzuteilen und mehrere rsyncs auszuführen.
quelle
Die Komprimierung ist für kleine Dateien (z. B. weniger als 100 Byte) nicht sehr nützlich. Bei kleinen Dateien kann die komprimierte Version manchmal sogar größer sein als das Original. Versuchen Sie den
rsync
Befehl ohne die-z
Flagge.ssh
ist gut für die Sicherheit, wird aber die Übertragung nicht schneller machen. Tatsächlich würde dies die Übertragung verlangsamen, da eine Ver- / Entschlüsselung erforderlich ist.rsync
scheint beim ersten Start möglicherweise nicht schnell zu sein, da viele Daten übertragen werden müssen. Wenn Sie diesen Befehl jedoch in regelmäßigen Abständen ausführen möchten, sind nachfolgende Ausführungen möglicherweise viel schneller, darsync
es sinnvoll ist, unveränderte Dateien nicht zu übertragen.quelle
rsync
Client verwenden, wird hinter den Kulissen SSH verwendet. Sie müssen sich sehr viel Mühe geben, um die Verschlüsselung zu deaktivieren, wenn Sie rsync verwenden. Siehe: stackoverflow.com/a/1821574/64911Welche Version von rsync verwenden Sie? Alles, was älter als 3.0.0 ist (an beiden Enden), verfügt nicht über die Funktion für inkrementelle Dateilisten, die große Übertragungen beschleunigt.
quelle
Fügen Sie
-v --progress
Ihrer rsync-Befehlszeile hinzursync erfolgt in 2 Schritten:
Wenn Sie Tausende kleiner Dateien in verschachtelten Verzeichnissen synchronisieren, verbringt rsync die meiste Zeit damit, in Unterverzeichnisse zu gehen und alle Dateien zu finden
Wenn keine Zeit für das Durchsuchen aufgewendet wird, kann dies einfach daran liegen, dass bei jeder neuen Dateiübertragung alle Latenzen hinzugefügt werden.
quelle
Wenn ext3- oder ext4-Dateisysteme betroffen sind, überprüfen Sie, ob bei beiden die Funktion dir_index aktiviert ist! Dieser verdreifachte Rsync-Durchsatz in meinem Fall.
Details finden Sie in meiner Antwort unter: /server//a/759421/80414
quelle