La principale differenza tra questi strumenti è il modo in cui copiano i file.
scpfondamentalmente legge il file sorgente e lo scrive nella destinazione. Esegue una copia lineare semplice, localmente o su una rete.
rsynccopia 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
rsynccontrollerà 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.
rsyncscriverà 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. rsyncha 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. scpHa solo pochi switch.
In sintesi, utilizzare scpper le attività quotidiane. Comandi digitati di tanto in tanto sulla shell interattiva. È più semplice da usare e in quei casi le rsyncottimizzazioni non saranno di grande aiuto.
Per attività ricorrenti, come cronlavori, 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 rsynccon l' -Popzione. Se il trasferimento viene interrotto, è possibile riprenderlo nel punto in cui si è interrotto emettendo nuovamente il comando. Vedi la risposta di Sid Kshatriya .