Categorie:
Non so a voi, ma a me ultimamente è capitato! Una possente copia sicura remota (scp
) di un file non proprio smilzo si è interrotta per strada. Argggghhh… Come fare per completare la copia senza ricominciare da capo? Questa funzione viene spesso chiamata resume (p.e. nel protocollo FTP).
Ebbene sembra che un parametro specifico per il resume in scp
non sia stato implementato (man scp).
Scavando velocemente in rete ho raggiunto codesta pagina:
- http://joen.dk/wordpress/?p=34 (in english)
che ci fornisce un efficace quanto furbo barbatrucco: usare il mitico rsync
data la sua caratteristica di «appoggiarsi» a sshd
e non solo a rsyncd
(quando installato e se in ascolto) sulla macchina remota!
esempio
Quindi se stavamo per esempio copiando un file sulla macchina pippo con il comando
$ scp bigfile.iso pippo:/home/pluto/
e poi a causa di varii problemi il link è caduto (qualcuno ha detto alice ADSL???) ,
il magico comando per completare la copia diventa
$ rsync --partial --progress -e ssh bigfile.iso pippo:/home/pluto/
Naturalmente l’opzione topica è --partial
che dice a rsync
che una parte del file è già stata trasferita.
alias
Può tornare comodo fare un alias di questo comando nella vostra shell preferita in modo da richiamarlo velocemente in caso di futuro bisogno. Per esempio per la bash
la dichiarazione è
alias scpresume='rsync --partial --progress -e ssh'
(che nome di fantasia ehh!) e va messa in uno dei file letti all’avvio dalla shell (tipicamente ~/.bashrc
o ~/.bash_aliases
).