Ich habe ein rsync
Skript verwendet, um Daten auf einem Host mit den Daten auf einem anderen Host zu synchronisieren. Die Daten enthalten zahlreiche kleine Dateien, die zu fast 1,2 TB beitragen.
Um diese Dateien zu synchronisieren, habe ich den rsync
Befehl wie folgt verwendet:
rsync -avzm --stats --human-readable --include-from proj.lst /data/projects REMOTEHOST:/data/
Die Inhalte von proj.lst lauten wie folgt:
+ proj1
+ proj1/*
+ proj1/*/*
+ proj1/*/*/*.tar
+ proj1/*/*/*.pdf
+ proj2
+ proj2/*
+ proj2/*/*
+ proj2/*/*/*.tar
+ proj2/*/*/*.pdf
...
...
...
- *
Als Test habe ich zwei dieser Projekte (8,5 GB Daten) ausgewählt und den obigen Befehl ausgeführt. Da es sich um einen sequentiellen Prozess handelt, dauert der Vorgang 14 Minuten und 58 Sekunden. Für 1,2 TB Daten würde es also mehrere Stunden dauern.
Wenn ich mehrere würde könnte rsync
Prozesse parallel (unter Verwendung von &
, xargs
oder parallel
), wäre es meine Zeit sparen.
Ich habe versucht mit dem folgenden Befehl parallel
(nachdem ich cd
in das Quellverzeichnis gegangen bin ) und es dauerte 12 Minuten 37 Sekunden, um auszuführen:
parallel --will-cite -j 5 rsync -avzm --stats --human-readable {} REMOTEHOST:/data/ ::: .
Dies hätte 5-mal weniger Zeit in Anspruch nehmen sollen, tat es aber nicht. Ich denke, ich gehe irgendwo falsch.
Wie kann ich mehrere rsync
Prozesse ausführen, um die Ausführungszeit zu verkürzen?
rsync
s ist jedoch unsere oberste Priorität.
rsync
s parallel stehen jetzt im Vordergrund.