Wie beschleunigt man rsync?
Ich verwende rsync, um ein Verzeichnis auf meiner externen USB-Festplatte zu synchronisieren. Es geht um 150 Gigs Daten. 50000 + Dateien würde ich vermuten.
Es läuft derzeit die erste Synchronisierung, aber das Kopieren von Dateien mit einer Geschwindigkeit von nur 1-5 MB/s. Das scheint für ein USB 2.0-Gehäuse unglaublich langsam zu sein. Es gibt auch keine anderen Übertragungen auf dem Laufwerk.
Hier sind die Optionen, die ich verwendet habe:
rsync -avz --progress /mysourcefolder /mytargetfolder
Ich verwende Ubuntu Server 9.10.
8 answers
Verwenden Sie für die erste Synchronisierung einfach
cp -a /mysourcefolder /mytargetfolder
Rsync fügt nur Overhead hinzu, wenn das Ziel leer ist.
Auch.. die Option-z beendet wahrscheinlich Ihre Leistung, Sie sollten sie nicht verwenden, wenn Sie keine Daten über eine langsame Verbindung übertragen.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2010-02-17 00:13:13
Wenn Sie rsync mit einem schnellen Netzwerk oder Disk to Disk auf demselben Computer verwenden,
nicht mit compression-z
Und mit --inplace -
Beschleunigt es auf die Leistung der Festplatten oder des Netzwerks
Kompression verwendet viel CPU
not mit inplace macht die Festplatte thrash alot (es verwendet einen temp-Datei vor dem erstellen des endgültigen)
Komprimierung und Nichtverwendung von inplace ist besser, um dies über das Internet zu tun (langsam Netzwerk)
NEU: Achten Sie auf das Ziel... wenn NTFS" Komprimierung " aktiviert ist... dies verlangsamt stark große Dateien (ich würde sagen, 200MB+) rsync scheint fast ins Stocken geraten, es ist dadurch verursacht.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2016-06-03 03:50:19
Verwenden Sie die Option -W
. Dies deaktiviert delta/diff vergleichen. Wenn die Dateizeit/ - größe unterschiedlich ist, kopiert rsync die gesamte Datei.
Entfernen Sie auch die Option -z
. Dies ist nur zum Komprimieren des Netzwerkverkehrs nützlich.
Jetzt sollte rsync
so schnell sein wie cp
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2013-06-19 10:13:14
Erstens-die Anzahl der Dateien wird in diesem Fall ein wichtiger Faktor sein. Es ist eine durchschnittliche Größe von jeweils 3 MB. Es gibt wahrscheinlich einen Io-Engpass, der die Geschwindigkeit im Fall des OP beeinflusst. Mehr hier - das ist eine ziemlich trockene Lektüre, aber das Titelbild ist es wert.
Also, mit rsync in ein leeres Verzeichnis kopieren? Hier sind einige Möglichkeiten, es zu beschleunigen:
- Kein -z - definitiv nicht verwenden-z als in den OP.
- --no-compress könnte dich beschleunigen. Dies könnte die größte Auswirkung... mein Test bestand aus 13.000 Dateien mit einer Gesamtgröße von 200 MB und rsync 3.1.3. Ich habe mit einer anderen Partition auf demselben internen SSD-Laufwerk synchronisiert. Mit --no-compress bekomme ich 18 MBps und ohne es bekomme ich 15 MBps. cp bekommt übrigens 16 MBps. Das ist jedoch eine viel kleinere durchschnittliche Dateigröße. Außerdem-ich kann keine Dokumentation für --no-compress finden. Ich habe von diesem Beitrag erfahren stackexchange.com.
- - W to Kopieren Sie Dateien ganz - verwenden Sie dies immer, wenn Sie ich möchte nicht, dass es Unterschiede vergleicht; Egal, dass der Sinn von rsync darin besteht, Unterschiede zu vergleichen und nur die Änderungen zu aktualisieren.
- - S zum Behandeln von spärlichen Dateien nun-kann nicht schaden, wenn Sie keine spärlichen Dateien haben.
- --exclude-from oder etwas ähnliches zum ausschließen von Dateien, die Sie möglicherweise nicht benötigen verringert die Zeit, aber es wird nicht erhöhen Sie Ihre Geschwindigkeit übertragen.
- Es ist möglich wenn Sie die Ausgabe an eine Datei wie diese senden
rsync -a /source /destination >/somewhere/rsync.out 2>/somewhere/rsync.err
- die erste > im Grunde druckt eine Datei mit all den Dingen, die Sie normalerweise sehen würden, und das 2> bezieht sich auf Fehlermeldungen. - Schließlich könnte das Ausführen mehrerer Instanzen von rsync für verschiedene Teile Ihrer Übertragung eine große Hilfe sein.
Mein Befehl wäre:
rsync -avAXEWSlHh /source /destination --no-compress --info=progress2 --dry-run
Wenn alles gut aussähe, würde ich "--dry-run " löschen und loslassen. A, X und E decken erweiterte Attribute und Berechtigungen ab, die nicht von-a, l ist für Softlinks, H ist für Hardlinks und h ist für menschenlesbar.
Das Aktualisieren eines bereits synchronisierten Verzeichnisses auf einem USB-Laufwerk oder demselben Laufwerk oder über ein Netzwerk erfordert unterschiedliche rsync-Befehle, um die Übertragungsgeschwindigkeit zu maximieren.
Bonus - hier ist die rsync Manpage, und wenn Sie Ihre Festplattengeschwindigkeit testen möchten, ist bonnie++eine gute Option, und für Ihre Netzwerkgeschwindigkeit versuchen Sie es mit iperf .
*Die post ist schon fast zehn Jahre alt, aber von Suchmaschinen sicher, wie es, und ich halte es sehen. Es ist eine gute Frage, und ich denke nicht, dass die beste Antwort auf "Wie man rsync beschleunigt" "stattdessen cp verwenden" sein sollte."
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2018-09-26 21:49:16
Sie möchten definitiv rclone ausprobieren. Dieses Ding ist verrückt schnell :
$ tree /usr [...] 26105 Verzeichnisse, 293208-Dateien
$ sudo rclone sync /usr /home/fred/temp -P -L -- - transfers 64
Übertragen: 17.929 G / 17.929 GByte, 100%, 165.692 MByte/s, ETA 0s Fehler: 75 (Wiederholung kann helfen) Schecks: 691078 / 691078, 100% Übertragen: 345539 / 345539, 100% Verstrichene Zeit: 1m50.8s
Dies ist eine lokale Kopie von und ein LITEONIT LCS-256 (256 GB) SSD.
Sie können --ignore-checksum beim ersten Lauf hinzufügen, um es noch schneller zu machen.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2019-07-15 12:52:44
Vermeiden
-
-z
/--compress
: durch die Komprimierung wird nur die CPU geladen, da die Übertragung nicht über ein Netzwerk, sondern über RAM erfolgt. -
--append-verify
: unterbrochene Übertragung fortsetzen. Das klingt nach einer guten Idee, hat aber den gefährlichen Fehlerfall: Jede Zieldatei mit der gleichen Größe (oder größer) als die Quelle wird ignoriert. Außerdem wird die gesamte Datei am Ende überprüft, was bedeutet, dass--no-whole-file
nicht signifikant beschleunigt wird, während ein gefährlicher Fehlerfall hinzugefügt wird.
Benutze
-
-S
/--sparse
: in der Folge wurden die Nullen zu spärlichen Blöcken.]} -
--partial
oder-P
was--partial --progress
ist: Speichern Sie alle teilweise übertragenen Dateien für die zukünftige Wiederaufnahme. Hinweis: Dateien haben keinen temporären Namen, stellen Sie also sicher, dass nichts anderes erwartet, das Ziel zu verwenden, bis die gesamte Kopie abgeschlossen ist. -
--no-whole-file
damit alles, was zurückgewiesen werden muss, Delta Transfer verwendet. Das Lesen der Hälfte einer teilweise übertragenen Datei ist oft viel schneller als schreiben Sie es wieder. -
--inplace
um Dateikopien zu vermeiden (aber nur, wenn nichts das Ziel liest, bis die gesamte Übertragung abgeschlossen ist)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2019-09-13 07:27:22
Sie sagen nicht, welche Größenverteilung Ihre Dateien haben. Wenn es viele kleine Dateien gibt, verringert dies die Gesamtübertragungsrate, indem die Kopfbewegungslatenz sowohl im Quell-als auch im Ziellaufwerk erhöht wird, da das Tool neue Dateien öffnet und das Betriebssystem Verzeichniseinträge und andere Metadaten (wie das Journal des Dateisystems, wenn Sie Meta-Datenjournalisierung wie ext3/ext4 und NTFS standardmäßig verwenden) während der Übertragung auf dem neuesten Stand hält. Ein Dateikopierprozess wird nur "in seinen Schritt kommen" für größere Objekte, wenn eine einfache Massenübertragung stattfindet.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2010-02-17 01:15:26
Ich fand dies als meine Antwort
Https://gist.github.com/KartikTalwar/4393116
rsync -aHAXxv --numeric-ids --progress -e 'ssh -T -c [email protected] -o Compression=no -x ' <source_dir> user@<host>:<dest_dir>
Einige Erklärungen zu den Schaltern unten
Rsync (Jeder scheint-z zu mögen, aber es ist viel langsamer für mich)
a: archive mode - rescursive, preserves owner, preserves permissions, preserves modification times, preserves group, copies symlinks as symlinks, preserves device files.
H: preserves hard-links
A: preserves ACLs
X: preserves extended attributes
x: don't cross file-system boundaries
v: increase verbosity
--numeric-ds: don't map uid/gid values by user/group name
--progress: show progress during transfer
Ssh -
T: turn off pseudo-tty to decrease cpu load on destination.
c [email protected]: use the weakest but fastest SSH encryption.
o Compression=no: Turn off SSH compression.
x: turn off X forwarding if it is on by default.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2021-01-29 09:22:37