Per quanto riguarda i trasferimenti di files tra servers UNIX, scp è la soluzione ottimale: non richiede di aprire porte (ok, oltre a quella di ssh, ma chi non lo usa oggigiorno?), è sicuro e soprattutto è veloce.
Quando si parla di trasferimenti di grandi files, tuttavia, entra in gioco un fattore molto importante, ovvero il resume del trasferimento; ovvero, la possibilità di poter riprendere il trasferimento di un file dal punto in cui lo si era interrotto. scp non offre la possibilità di effettuare trasferimenti con resume. Per sopperire a questa mancanza, usiamo rsync in questo modo:
rsync -a -v -z --partial --progress --rsh=ssh file_locale username@macchina_remota:/home/username/
Il file_locale
(che può essere anche una directory) verrà copiato sulla macchina remota, nella home dell’utente username
. Le altre opzioni passate a rsync permettono di avere un output dettagliato e di abilitare la compressione durante il trasferimento.
Si può costruire un alias per questo comando in modo da avere scp in modalità resume, basta semplicemente aggiungere la seguente riga nel file .bashrc
, presente nella propria home directory (se usate un’altra shell, come ad es. zsh, confido che sappiate quale file modificare):
alias scpresume='rsync –a –v –z --partial --progress --rsh=ssh'
A questo punto per trasferire un file si procede in questo modo:
scp filename username@macchina_remota:/home/username
SE si presenta un problema durante la copia, si usa scpresume:
scpresume filename username@macchina_remota:/home/username