Mit tar über ssh Dateien schneller kopieren als per scp

Wer viele kleine Dateien von einem Server zum anderen kopieren muss, der kann z.B. scp benutzen. Das ist allerdings langsam, da für jede Datei die Netzwerklatenz hinzukommt, da zusätzlich zum Datenstream noch eine Anweisung „Hier kommt Datei xy“ geschickt werden muss.

Um das ganze zu optimieren, schicken wir einen Datenstream, welcher bereits mehrere Dateien versteht, hierzu bietet sich tar an. Tar wurde übrigens geschrieben, um viele Dateien auf Bandlaufwerke zu speichern, und in gewisser Weise übertragen wir jetzt auf diese Weise ähnlich, wie man damals auf Band aufnahm. In einem Schub:

Ohne Komprimierung (für hohe Bandbreiten)

tar -cf - /quelle | ssh user@example tar -xvf - -C /ziel/

Mit bzip2-Komprimierung (für langsamere Verbindungen)

tar -cjf - /quelle | ssh user@example tar -xjvf - -C /ziel/

Diese Methode hat außerdem den Vorteil, dass tar auch Symlinks kopiert und die Dateiberechtigungen beibehalten kann. Falls die Dateiberechtigungen beibehalten werden sollen, muss noch der Parameter p(reserve permissions) eingefügt werden. Dies sieht dann so aus:

Ohne Komprimierung (für hohe Bandbreiten)

tar -pcf - /quelle | ssh user@example tar -pxvf - -C /ziel/

Mit bzip2-Komprimierung (für langsamere Verbindungen)

tar -pcjf - /quelle | ssh user@example tar -pxjvf - -C /ziel/

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.