La principal diferencia entre estas herramientas es cómo copian los archivos.
scp
básicamente lee el archivo fuente y lo escribe en el destino. Realiza una copia lineal simple, localmente o sobre una red.
rsync
tambié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
rsync
verificará 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.
rsync
va 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. rsync
tiene 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. scp
tiene solo unos pocos interruptores.
En resumen, utilícelo scp
para 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 rsync
optimizaciones no ayudarán mucho.
Para tareas recurrentes, como cron
trabajos, 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 rsync
con la -P
opción. Si se interrumpe la transferencia, puede reanudarla donde se detuvo volviendo a emitir el comando. Ver la respuesta de Sid Kshatriya .