La principale differenza tra questi strumenti è il modo in cui copiano i file.
scp
fondamentalmente legge il file sorgente e lo scrive nella destinazione. Esegue una copia lineare semplice, localmente o su una rete.
rsync
copia anche i file localmente o su una rete. Impiega uno speciale algoritmo di trasferimento delta e alcune ottimizzazioni per rendere l'operazione molto più veloce. Considera la chiamata.
rsync A host:B
rsync
controllerà le dimensioni dei file e i timestamp di modifica di A e B e salterà qualsiasi ulteriore elaborazione se corrispondono.
Se il file di destinazione B esiste già, l'algoritmo di trasferimento delta assicurerà che solo le differenze tra A e B vengano inviate tramite il filo.
rsync
scriverà i dati in un file temporaneo T , e quindi sostituire il file di destinazione B con T per rendere l'aspetto di aggiornamento "atomica" per i processi che potrebbero utilizzare B .
Un'altra differenza tra loro riguarda l'invocazione. rsync
ha una pletora di opzioni da riga di comando, che consentono all'utente di ottimizzare il suo comportamento. Supporta regole di filtro complesse, viene eseguito in modalità batch, modalità demone, ecc. scp
Ha solo pochi switch.
In sintesi, utilizzare scp
per le attività quotidiane. Comandi digitati di tanto in tanto sulla shell interattiva. È più semplice da usare e in quei casi le rsync
ottimizzazioni non saranno di grande aiuto.
Per attività ricorrenti, come cron
lavori, utilizzare rsync
. Come accennato, su più invocazioni sfrutterà i dati già trasferiti, eseguendo molto rapidamente e risparmiando sulle risorse. È uno strumento eccellente per mantenere sincronizzate due directory su una rete.
Inoltre, quando si ha a che fare con file di grandi dimensioni, utilizzare rsync
con l' -P
opzione. Se il trasferimento viene interrotto, è possibile riprenderlo nel punto in cui si è interrotto emettendo nuovamente il comando. Vedi la risposta di Sid Kshatriya .