Normalerweise kann ich Dateien sicher von einem Rechner auf einen anderen kopieren mit
> scp [email protected] ssh [email protected]:/home/user/my_files/* .
was bei großen Datensätzen sehr langsam ist.
Mir wurde gesagt, dass die von mir verwendeten Maschinen über eine sehr schnelle Verbindung verfügen, auf die mit wget zugegriffen werden kann. Wie führe ich stattdessen dieselbe Dateiübertragung mit wget durch?
Antwort1
Wenn Sie über eine schnelle, sichere und stabile Netzwerkverbindung zwischen diesen beiden Maschinen verfügen, können Sie eine Kombination aus netcat
und verwenden tar
, wie folgt.
Führen Sie auf dem Zielcomputer Folgendes aus:
nc -l 10000 | tar -C /destination/directory -xzf -
Führen Sie auf dem Quellcomputer Folgendes aus:
tar -cz /source/directory | nc dst-machine-ip-address 10000
Beachten Sie, dass keine Verschlüsselung verwendet wird, der Datenverkehr also abgehört werden kann und Sie, wenn die Verbindung aus irgendeinem Grund unterbrochen wird, wieder von vorne beginnen müssen.
Persönlich würde ich mit weitermachen rsync
.
Antwort2
Die Leistung vonscpkann durch zwei Faktoren verursacht werden:
- Die Kosten der Verschlüsselung, die für langsame Prozessoren zu hoch sein können,
- Die Anzahl der Roundtrips, die zum Anfordern einer einzelnen Datei erforderlich sind.
Bei einer großen Anzahl kleiner Dateien ist es das zweite. Meine erste Idee war, zu empfehlen,sftp, da es auf dem Remote-Host ein anderes Programm verwendet. Nach einem Test ergibt sich jedoch eine ähnliche Leistung.
Die Lösung, die funktioniert, ist die Verwendung eines Programms, das sowohl auf dem Client als auch auf dem Server installiert ist und nur einen Datenstrom zurücksendet (anstatt Tausenden vonsshKanäle):
Wenn Sie habenrsyncVerwenden Sie auf dem Remote-Server (und installieren Sie es auf dem Client) Folgendes:
rsync -av -e "ssh [email protected]" [email protected]:/home/user/my_files .
Andernfalls können SieTeer:
ssh -o [email protected] -e none [email protected] \ tar -c /home/user/my_files | tar -x