Anstatt mit tar auf Ihre lokale Festplatte zu schreiben, können Sie mit ssh direkt über das Netzwerk auf den Remote-Server schreiben.
server1$ tar -zc ./path | ssh server2 "cat > ~/file.tar.gz"
Alle Zeichenfolgen, die auf Ihren Befehl "ssh" folgen, werden auf dem Remoteserver anstelle der interaktiven Anmeldung ausgeführt. Sie können die Ein- / Ausgabe von und zu diesen Remote-Befehlen über SSH weiterleiten, als wären sie lokal. Wenn Sie den Befehl in Anführungszeichen setzen, werden Verwirrungen vermieden, insbesondere bei der Umleitung.
Oder Sie können die tar-Datei direkt auf dem anderen Server extrahieren:
server1$ tar -zc ./path | ssh server2 "tar -zx -C /destination"
Beachten Sie die selten verwendete -C
Option. Es bedeutet "Wechseln Sie zuerst in dieses Verzeichnis, bevor Sie etwas tun."
Oder möchten Sie vielleicht vom Zielserver "ziehen":
server2$ tar -zx -C /destination < <(ssh server2 "tar -zc -C /srcdir ./path")
Beachten Sie, dass das <(cmd)
Konstrukt für bash neu ist und auf älteren Systemen nicht funktioniert. Es führt ein Programm aus, sendet die Ausgabe an eine Pipe und ersetzt diese Pipe durch den Befehl, als wäre es eine Datei.
Ich hätte es einfach so schreiben können:
server2$ tar -zx -C /destination -f <(ssh server2 "tar -zc -C /srcdir ./path")
Oder wie folgt:
server2$ ssh server2 "tar -zc -C /srcdir ./path" | tar -zx -C /destination
Oder Sie können sich etwas Kummer ersparen und einfach rsync verwenden:
server1$ rsync -az ./path server2:/destination/
Denken Sie schließlich daran, dass das Komprimieren der Daten vor der Übertragung Ihre Bandbreite verringert. Bei einer sehr schnellen Verbindung kann der Vorgang jedoch länger dauern . Dies liegt daran, dass Ihr Computer möglicherweise nicht schnell genug komprimiert, um Schritt zu halten. Wenn das Komprimieren von 100 MB länger dauert als das Senden von 100 MB, ist es schneller, es unkomprimiert zu senden.
Alternativ können Sie Piping in Betracht ziehen, um sich selbst zu gzipen (anstatt die Option -z zu verwenden), damit Sie eine Komprimierungsstufe angeben können. Ich habe die Erfahrung gemacht, dass bei schnellen Netzwerkverbindungen mit komprimierbaren Daten die Verwendung von gzip auf Stufe 2 oder 3 (die Standardeinstellung ist 6) in den meisten Fällen den besten Gesamtdurchsatz ergibt. Wie so:
server1$ tar -c ./path | gzip -2 | ssh server2 "cat > ~/file.tar.gz"