Rsync es una herramienta para sincronizar el contenido de 2 carpetas diferentes. Funciona en modo local y en modo remoto. Fue lanzada en junio de 1996. Está disponible como software libre bajo la licencia GNU General Public License.
Utilizar rsync para sincronizar 2 carpetas diferentes
Existen muchos programas con interfaz gráfica para sincronizar 2 carpetas pero en ocasiones puede resultar más sencillo utilizar Terminal y comandos que ya existen en macOS sin tener que instalar ningún otro programa. El uso de rsync es lo suficientemente sencillo para tenerlo en cuenta.
El comando básico para sincronizar 2 carpetas que pueden estar en el mismo disco o en discos distintos o incluso en 2 ordenadores conectados es:
rsync -avP /Ruta-a-la-carpeta-origen/ /Ruta-a-la-carpeta-destino
Observa que origen termina en / pero destino no. Las opciones de este comando son:
- a: modo archive, esta opción es la más habitual ya que copia archivos y directorios recursivamente y preserva enlaces, permisos y fechas de cada elemento
- v: modo verbose, muestra información detallada de lo que se va ejecutando
- P: mantiene los datos parcialmente transferidos hasta su transferencia completa y muestra información del progreso.
Una opción muy útil que mejora la sincronización es delete que borra en destino archivos y carpetas que ya no existen en origen. Esta opción se suele escribir al final del comando básico y tiene 2 variantes dependiendo de si los datos se borran antes o después de la transferencia:
- –delete-before: los elementos que no existen en origen se borran en destino antes de (no durante) la trasferencia. Es decir: rsync borra en destino los elementos que no existen en origen > rsync transfiere los datos.
- –delete-after: los elementos que no existen en origen se borran en destino después de (no durante) la trasferencia. Es decir: rsync transfiere los datos > rsync borra en destino los elementos que no existen en origen.
El comando básico completo quedaría así (con la variante before / after):
rsync -avP /Ruta-a-la-carpeta-origen/ /Ruta-a-la-carpeta-destino --delete-before rsync -avP /Ruta-a-la-carpeta-origen/ /Ruta-a-la-carpeta-destino --delete-after
A medida que se van copiando los elementos, rsync va mostrando el nº de elementos transferidos, restantes y el total. Con este simple comando sincronizo carpetas de forma habitual sin fallos o interrupciones en la copia.
Otras opciones para tener en cuenta son:
- -h: modo human, salida de números en formato más legible
- -z: comprime datos de los archivos al transferir, útil sobre todo en copias remotas.
Versión de rsync en macOS 10.13 High Sierra
High Sierra viene con una versión antigua de rsync, 2.6.9 que data de 2006, se comprueba con el comando rsync –version:
rsync version 2.6.9 protocol version 29 Copyright (C) 1996-2006 by Andrew Tridgell, Wayne Davison, and others.
En macOS por defecto está instalada en la carpeta /usr/bin/rsync y las páginas man en /usr/share/man/man1/rsync.1.gz y /usr/share/man/man5/rsyncd.conf.5.gz. Puedes instalar una versión más moderna de rsync (actualmente es la 3.1.3) desde el código fuente con estos comandos de Terminal ejecutados en la carpeta descargada y descomprimida:
./configure make sudo make install
Si no tienes instalada la herramienta yodl2man (permite generar o instalar las páginas man de ayuda) al terminar la configuración obtienes este aviso:
rsync 3.1.3 configuration successful Note that yodl2man was not found, so pre-existing manpage files will be used w/o change (if available).
Puedes continuar porque lo único que va a pasar es que se conservarán las páginas man de la versión anterior y no se instalarán las nuevas. Al terminar el proceso obtienes rsync 3.1.3 en /usr/local en lugar de /usr. Se comprueba que está bien instalada con el comando rsync –version:
rsync version 3.1.3 protocol version 31 Copyright (C) 1996-2018 by Andrew Tridgell, Wayne Davison, and others.
Chris1111 ofrece un paquete instalador con la versión más reciente de rsync. Este paquete requiere para funcionar que tanto SIP como Gatekeeper estén desactivados.
Para no tener simultáneamente las 2 versiones en el sistema independientemente del método de instalación elegido, puedes borrar la 2.6.9 y quedarte sólo con la 3.1.3. Para ello ejecuta este comando en Terminal antes o después de instalar la versión nueva:
sudo rm /usr/bin/rsync /usr/share/man/man1/rsync.1.gz /usr/share/man/man5/rsyncd.conf.5.gz