Ich muss regelmäßig den Inhalt eines Ordners in einem Netzwerkdateisystem auf meinen lokalen Computer kopieren. Es gibt viele Dateien (1000s) im Remote-Ordner, die alle relativ klein sind. Aufgrund des Netzwerk-Overheads cp remote_folder/* ~/local_folder/
dauert eine reguläre Kopie jedoch sehr lange (10 Minuten).
Ich glaube, es liegt daran, dass die Dateien nacheinander kopiert werden - jede Datei wartet, bis die vorherige abgeschlossen ist, bevor der Kopiervorgang beginnt.
Was ist der einfachste Weg, um die Geschwindigkeit dieser Kopie zu erhöhen? (Ich gehe davon aus, dass die Kopie parallel ausgeführt werden soll.)
Das Komprimieren der Dateien vor dem Kopieren beschleunigt die Arbeit nicht unbedingt, da sie möglicherweise alle auf verschiedenen Datenträgern auf verschiedenen Servern gespeichert sind.
Antworten:
Solange Sie die ausgeführten Kopierbefehle einschränken, können Sie möglicherweise ein Skript wie das von Scrutinizer bereitgestellte verwenden
quelle
&
Ende descp
Befehls kann diewhile
Schleife fortgesetzt und der nächste cp-Befehl gestartet werden, ohne zu warten. Derxargs
Befehl übergibt die Dateinamen in 4er-Gruppen (MAX_PARALLEL) an diewhile
Schleife.cp
. Offensichtlich können Sie die Berechnung durch das Multithreading beschleunigen . Aber ich denke nicht, dass dies auch für die Datenverarbeitung auf der Festplatte gilt.Wenn Sie GNU Parallel http://www.gnu.org/software/parallel/ installiert haben, können Sie dies tun:
Sie können GNU Parallel einfach installieren, indem Sie:
In den Introvideos zu GNU Parallel erfahren Sie mehr: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1
quelle
Eine Möglichkeit wäre, rsync zu verwenden, das nur die Änderungen kopiert - neue Dateien und die geänderten Teile anderer Dateien.
http://linux.die.net/man/1/rsync
Das Ausführen einer beliebigen Form des parallelen Kopiervorgangs wird wahrscheinlich Ihr Netzwerk überfluten und der Kopiervorgang wird nur zum Stillstand kommen oder an Engpässen auf der Quell- oder Zieldisk leiden.
quelle
Ehrlich gesagt ist das beste Tool Googles gsutil. Es werden parallele Kopien mit Verzeichnisrekursion verarbeitet. Die meisten anderen Methoden, die ich gesehen habe, können die Verzeichnisrekursion nicht verarbeiten. Sie erwähnen das lokale Dateisystem nicht ausdrücklich gegenüber lokalen Dateisystemkopien in ihren Dokumenten, aber es funktioniert wie ein Zauber.
Es ist eine weitere zu installierende Binärdatei, aber wahrscheinlich eine, die Sie bereits ausführen, wenn Sie die heutige Einführung von Cloud-Diensten in Betracht ziehen.
quelle
Parallele Synchronisation mit find:
In einem Unternehmens-LAN erreicht Single-Rsync etwa 800 Mbit / s. Mit 6-8 Jobs kann ich über 2,5 Gbit / s erreichen (auf Kosten der hohen Auslastung). Begrenzt durch die Scheiben.
quelle
Abhängig von der Topologie, die Sie haben, müssen Sie möglicherweise viele Dinge berücksichtigen. Bevor Sie jedoch über komplexe Lösungen nachdenken, können Sie einfach versuchen, die Aufgabe auf zwei Jobs aufzuteilen und zu prüfen, ob sich der Zeitaufwand erheblich verringert:
Das nächste Mal versuchen:
(Möglicherweise möchten Sie [al] * durch etwas anderes ersetzen, das ungefähr der Hälfte der Dateien entspricht - möglicherweise [0-4] * - abhängig vom Inhalt des Ordners.)
Wenn sich die Zeit nicht dramatisch verbessert, ist es möglicherweise wichtiger zu prüfen, ob alle Dateien kopiert werden müssen (wie hoch ist das Verhältnis von geänderten Dateien zu allen Dateien?)
quelle