Verwenden Sie tar
:
tar cvzf - -T list_of_filenames | ssh hostname tar xzf -
Ich würde dafür gerne scp verwenden, aber scp erlaubt nur die Übertragung einer Datei auf einmal.
Ich bin mir ziemlich sicher, dass das nicht stimmt, zumindest nicht für scp
Befehl, der von OpenSSH bereitgestellt wird, das in den meisten Linux-Distributionen enthalten ist.
Ich verwende scp file1 file2 ... fileN [email protected]:/destination/directory/
ziemlich häufig.
Für eine transparente Komprimierung hat das SSH-Protokoll diese eingebaut und scp
können es verwenden, wenn Sie den -C
angeben Option in der Befehlszeile. Für viele ähnliche kleine Dateien werden Sie feststellen, dass die von Akira vorgeschlagene Option tar+gz eine bessere Komprimierung erzielt, da sie die Ähnlichkeit zwischen solchen Dateien nutzen kann, in denen scp
komprimiert jede Datei als separate Entität. Im Allgemeinen bevorzuge ich jedoch die Verwendung von scp, da es einfacher ist, eine teilweise Übertragung fortzusetzen (oder, obwohl ich weiß, dass der Fragesteller in dieser Situation keine Option hat) rsync
da dies sowohl noch einfacher fortzusetzen ist als auch den Gesamtstrom-Komprimierungsvorteil der tar+gz-Option teilt.
Nicht scp -r yourdir otherhost:/otherdir
arbeiten?
Versuchen Sie dann Folgendes:
tar cfz - . | ssh otherhost "cd /mydir; tar xvzf -"
die z
-flag to tar macht Komprimierung. Oder Sie können -C für ssh verwenden:
tar cf - . | ssh -C otherhost "cd /mydir; tar xvf -"