====== Rsync ======
Rsync es un software que se utiliza para copiar y sincronizar archivos entre dos o más sistemas. Es un software muy eficiente que utiliza un algoritmo de copia diferencia, lo que significa que solo copia los datos que han cambiado desde la última sincronización.
* [[https://rsync.samba.org/|Web]]
* [[https://github.com/WayneD/rsync|Repositorio de código]]
===== Opciones =====
* ''-a'': mantiene todo (tiempos de modificación, acceso, enlaces, permisos, grupos) y navega por todos los subdirectorios. Sustituye a todas estas opciones juntas: ''rlptgoD''.
* ''-P'': muestra el progreso de la operación.
* ''-v'': muestra detalles sobre la ejecución del comando (si se usa ''-P'' no es necesario incluir esta opción).
* ''-n'': ejecuta rsync, pero no realiza cambios. Modo de prueba (//dry-run//).
===== Casos de uso =====
==== Copia de seguridad ====
Rsync se puede utilizar para crear copias de seguridad de archivos y directorios.
Hacer una copia de seguridad del directorio ''/home/pepito/documentos'' en ''/backup'':
rsync -a /home/pepito/documentos /backup
==== Sincronizar con un servidor remoto ====
rsync -a -e ssh /home/pepito/documentos pepito@servidor-externo:/backup/
* ''-e'': especificamos qué comando se usará en el remoto. En este caso ''[[informatica:software:ssh|ssh]]''.
==== Alternativa a cp para mostrar progreso de la copia ====
El comando ''cp'' no cuenta con un indicador de progreso de la copia del archivo. Podemos usar ''rsync'' para ello:
rsync --progress archivo.txt /ruta/destino
La opción ''%%--%%progress'' se puede abreviar con ''-P''
===== Usar un puerto diferente al 22 =====
rsync -avP -e 'ssh -p 22222' /origen/ usuario@servidor:/destino
La opción ''e'' permite especificar que shell remota usar, así que aprovechamos para indicar ''ssh'' y pasarle la opción para modificar el puerto a usar en la conexión.
===== Recursos =====
* [[https://es.wikipedia.org/wiki/Rsync|Rsync]] en Wikipedia.