Dank der wunderbaren Antwort von Scott Pack (ich wusste vorher nicht, wie man das mit ssh macht), kann ich diese Verbesserung anbieten (wenn bashes 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
'
pvist ein nettes Progress-Viewer-Programm für Ihre Pipe und pigzein 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 -9eund pxz -dwenn 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 /thefsden größten Teil des unbenutzten Speicherplatzes auf Null setzen, was den xfer beschleunigt.