scp-Dateien aus einem bestimmten Ordner parallel

scp-Dateien aus einem bestimmten Ordner parallel

Ich möchte Dateien per SCP machineAin mein Verzeichnis übertragen machineBund mache das folgendermaßen: Ich kopiere mehrere Dateien nacheinander von primaryOrdner machineAzu primaryOrdner machineBund secondaryvon Ordner machineAzu secondaryOrdner machineB.

trinity@machineB:~$ scp trinity@machineA:/data01/primary/* /data01/primary/
trinity@machineB:~$ scp trinity@machineA:/data02/secondary/* /data02/secondary/

Gibt es eine Möglichkeit, mehrere Dateien parallel zu kopieren? Etwa fünf Dateien gleichzeitig aus einem Ordner? Anstatt also jeweils eine Datei zu kopieren, möchte ich fünf Dateien aus primären bzw. sekundären Ordnern kopieren?

machineAGrundsätzlich möchte ich alles, was sich in primären und sekundären Ordnern befindet, parallel kopieren machineB.

Ich habe auch GNU Parallel auf meiner Box installiert, falls ich das verwenden kann. Ich habe den folgenden Befehl ausprobiert, aber er funktioniert nicht. Ich hatte erwartet, dass er 5 Dateien gleichzeitig parallel kopieren sollte, bis alles aus diesem Ordner kopiert ist.

parallel -j 5 scp trinity@machineA:/data01/primary/* /data01/primary/

Stimmt etwas mit meiner parallelen Syntax nicht? Wie kann ich am besten fünf Dateien parallel aus einem Remote-Ordner kopieren, bis alles daraus kopiert ist?

Antwort1

Warum glauben Sie, dass die parallele Verbindung es schneller machen würde? SCP ist ein sehr einfaches Tool zum Übertragen einiger kleiner Dateien, nichts für Durchsatz und Leistung. Das Ausführen von mehreren parallelen Prozessen könnte es etwas schneller machen, aber nicht wesentlich. Was Sie auf die andere Weise tun können, ist:

  • Verwenden Sie sftp, um einen besseren Durchsatz und intelligenteres Kopieren zu erreichen (sollte ausreichen), beispielsweise durch-r
  • Verwenden Sie diese Option ControlMaster, um den Overhead paralleler TCP-Verbindungen zu vermeiden.
  • Verwenden Sie die richtigen Parameter für dieparallel

Ich würde mit Folgendem beginnen sftp:

sftp -r trinity@machineA:/data01/primary/ /data01/primary/

Antwort2

Die *-Erweiterung muss auf der Remote-Seite erfolgen:

ssh machineA 'parallel -j 5 scp {} machineB:/data01/primary/ ::: /data01/primary/*'

verwandte Informationen