Dank der wunderbaren Antwort von Scott Pack (ich wusste vorher nicht, wie man das mit ssh macht), kann ich diese Verbesserung anbieten (wenn bash
es Ihre Shell ist). Dies fügt eine parallele Komprimierung, eine Fortschrittsanzeige und eine Überprüfung der Integrität über die Netzwerkverbindung hinzu:
tar c file_list |
tee >(sha512sum >&2) |
pv -prab |
pigz -9 |
ssh [user@]remote_host '
gunzip |
tee >(sha512sum >&2) |
tar xC /directory/to/extract/to
'
pv
ist ein nettes Progress-Viewer-Programm für Ihre Pipe und pigz
ein paralleles GZIP-Programm, das so viele Threads verwendet, wie Ihre CPU standardmäßig hat (ich glaube, bis zu 8 max). Sie können die Komprimierungsstufe abzustimmen , um besser das Verhältnis von CPU zu passen Bandbreite zu vernetzen und sie tauschen mit pxz -9e
und pxz -d
wenn Sie viel mehr CPU als Bandbreite. Sie müssen nur überprüfen, ob die beiden Summen nach Abschluss übereinstimmen.
Diese Option ist nützlich für sehr große Datenmengen sowie Netzwerke mit hoher Latenz, aber nicht sehr hilfreich, wenn die Verbindung instabil ist und ausfällt. In diesen Fällen ist rsync wahrscheinlich die beste Wahl, da es fortgesetzt werden kann.
Beispielausgabe:
6c1fe5a75cc0280709a794bdfd23d7b8b655f0bbb4c320e59729c5cd952b4b1f84861b52d1eddb601259e78249d3e6618f8a1edbd20b281d6cd15f80c8593c3e - ]
176MiB [9.36MiB/s] [9.36MiB/s] [ <=> ]
6c1fe5a75cc0280709a794bdfd23d7b8b655f0bbb4c320e59729c5cd952b4b1f84861b52d1eddb601259e78249d3e6618f8a1edbd20b281d6cd15f80c8593c3e -
Für Blockgeräte:
dd if=/dev/src_device bs=1024k |
tee >(sha512sum >&2) |
pv -prab |
pigz -9 |
ssh [user@]remote_host '
gunzip |
tee >(sha512sum >&2) |
dd of=/dev/src_device bs=1024k
'
Stellen Sie sicher, dass sie die gleiche Größe oder das gleiche Limit haben (count =, skip =, seek = usw.).
Wenn ich Dateisysteme auf diese Weise kopiere, werde ich häufig zuerst dd if=/dev/zero of=/thefs/zero.dat bs=64k && sync && rm /thefs/zero.dat && umount /thefs
den größten Teil des unbenutzten Speicherplatzes auf Null setzen, was den xfer beschleunigt.