Molto spesso vuoi per connessioni poco affidabili o per control-c selvaggi capita che un trasferimento di un file molto grande s’interrompa durante la sua copia.
Purtroppo se si effettua una copia tramite scp sono dolori, perchè in caso d’interruzione va ricopiato il file per intero e se ci mancano soltanto gli ultimi 2 Mb di un tar grosso un paio di Gb ( la solita legge di murphy ) come si fa? Semplice usiamo rsync :-)
Rsync grazie al suo algoritmo per il controllo delle differenze riesce a capire lo stato d’avanzamento di un file e continuarne la copia.
Per far ripartire il trasferimento usiamo
rsync –partial –progress –rsh=ssh $file_da_trasferire $user@$host:$Path_file_interrotto
oppure se l’scp lo facevamo dall’host remoto sulla macchina locale
rsync –partial –progress –rsh=ssh $user@$host:$file_remoto $file_locale_interrotto
Inutile dire che rsync deve essere installato :-)
Note:
Tutti gli S.O: Nel far ripartire il resume crea un file temporaneo di dimensioni pari al pezzo già trasferito nella cartella del file di destinazione quindi occhio allo spazio su disco.
Solaris: Se nel caso non fosse già installato è possibile scaricarlo da sunfreeware.
Ps. La snippet l’ho pubblicata anche su commandline-fu un repository di snipet utili per per ogni esigenza, se volete la potete anche votare ( richiede registrazione )
http://www.commandlinefu.com/commands/view/1818/resume-scp-of-a-big-file