Ich habe ein rsyncSkript 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 rsyncBefehl 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 rsyncProzesse parallel (unter Verwendung von &, xargsoder parallel), wäre es meine Zeit sparen.
Ich habe versucht mit dem folgenden Befehl parallel(nachdem ich cdin 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 rsyncProzesse ausführen, um die Ausführungszeit zu verkürzen?
rsyncs ist jedoch unsere oberste Priorität.
rsyncs parallel stehen jetzt im Vordergrund.