La principal diferencia entre estas herramientas es cómo copian los archivos.
scpbásicamente lee el archivo fuente y lo escribe en el destino. Realiza una copia lineal simple, localmente o sobre una red.
rsynctambién copia archivos localmente o en una red. Pero emplea un algoritmo especial de transferencia delta y algunas optimizaciones para que la operación sea mucho más rápida. Considera la llamada.
rsync A host:B
rsyncverificará los tamaños de los archivos y las marcas de tiempo de modificación de A y B , y omitirá cualquier procesamiento adicional si coinciden.
Si el archivo de destino B ya existe, el algoritmo de transferencia delta se asegurará de que solo las diferencias entre A y B se envíen por cable.
rsyncva a escribir los datos en un archivo temporal T , y luego vuelva a colocar el archivo de destino B con T para hacer la mirada de actualización "atómica" a los procesos que puedan estar utilizando B .
Otra diferencia entre ellos se refiere a la invocación. rsynctiene una gran cantidad de opciones de línea de comandos, lo que permite al usuario ajustar su comportamiento. Admite reglas de filtro complejas, se ejecuta en modo por lotes, modo demonio, etc. scptiene solo unos pocos interruptores.
En resumen, utilícelo scppara sus tareas diarias. Comandos que escribe de vez en cuando en su shell interactivo. Es más simple de usar, y en esos casos las rsyncoptimizaciones no ayudarán mucho.
Para tareas recurrentes, como crontrabajos, use rsync. Como se mencionó, en las invocaciones múltiples aprovechará los datos que ya se transfirieron, con un rendimiento muy rápido y ahorrando recursos. Es una excelente herramienta para mantener dos directorios sincronizados en una red.
Además, cuando se trata de archivos grandes, use rsynccon la -Popción. Si se interrumpe la transferencia, puede reanudarla donde se detuvo volviendo a emitir el comando. Ver la respuesta de Sid Kshatriya .