Grazie alla meravigliosa risposta di Scott Pack (prima non sapevo come farlo con ssh), posso offrire questo miglioramento (se bashè la tua shell). Ciò aggiungerà la compressione parallela, un indicatore di avanzamento e verificherà l'integrità attraverso il collegamento di rete:
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è un bel programma di visualizzazione dei progressi per la tua pipe ed pigzè un programma gzip parallelo che utilizza tutti i thread quanti la tua CPU ha di default (credo fino a 8 max). È possibile ottimizzare il livello di compressione per adattarsi meglio al rapporto tra CPU e banda di rete e scambiarlo con pxz -9ee pxz -dse si dispone di una CPU molto maggiore della larghezza di banda. Devi solo verificare che le due somme corrispondano al completamento.
Questa opzione è utile per grandi quantità di dati e reti ad alta latenza, ma non molto utile se il collegamento è instabile e si interrompe. In questi casi, rsync è probabilmente la scelta migliore in quanto può riprendere.
Uscita campione:
6c1fe5a75cc0280709a794bdfd23d7b8b655f0bbb4c320e59729c5cd952b4b1f84861b52d1eddb601259e78249d3e6618f8a1edbd20b281d6cd15f80c8593c3e - ]
176MiB [9.36MiB/s] [9.36MiB/s] [ <=> ]
6c1fe5a75cc0280709a794bdfd23d7b8b655f0bbb4c320e59729c5cd952b4b1f84861b52d1eddb601259e78249d3e6618f8a1edbd20b281d6cd15f80c8593c3e -
Per i dispositivi a blocchi:
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
'
Ovviamente, assicurati che abbiano la stessa dimensione o limite con count =, skip =, seek =, ecc.
Quando copio i filesystem in questo modo, spesso per prima dd if=/dev/zero of=/thefs/zero.dat bs=64k && sync && rm /thefs/zero.dat && umount /thefscosa azzererò la maggior parte dello spazio inutilizzato, il che accelera lo xfer.