RSYNC, equivalente a robocopy en Linux

Publicado el 26 noviembre 2020 por Ubuntizando

Puede que llegado un momento dado necesites hacer un volcado o migración de datos de un servidor a otro. Más a allá de hacer una simple copia de seguridad en nuestros PC este es un proceso un poco más complejo en entornos de producción debido principalmente a que necesitamos conservar la estructura de directorios, permisos, etc para garantizar que lo que existe en la ubicación B es exactamente la información que existe en A.

Linux dispone de una utilidad que facilita el proceso,  RSYNC.  Personalmente lo  uso para hacer un backup de mis archivos más importantes a un disco duro pero en pronto veremos que se trata de una navaja suiza.

Descripción del comando:
Rsync se define a si mismo como rápida, versátil, remota ( y local ) herramienta de copiado de ficheros.

Instalación:
sudo apt install rsync

Sintaxis:
rsync [opciones] origen destino

Parámetros y configuraciones:
Si consultamos la documentación y opciones disponibles para RSYNC (man rsync) encontraremos más de 2000 páginas de información. Esto sirve para hacernos una idea de lo potente que puede ser esta herramienta. Pero vamos a resumir las opciones más comunes.

-a: Archiva. Es una buena configuración. Es sinónimo que especificar “-DGgloprt”
-b: Hace una copia de los ficheros, aún estando en el destino. Normalmente no es útil utilizar esta opción, a no ser que se quiera tener copia de cada una de las versiones del fichero.
-g: Preserva el grupo de los ficheros que van a ser replicados. Importante para los backups.
-H: Preserva los “hard-links”. Esta opción ralentiza el copiado, pero es muy recomendable.
-l: Copia los “symlinks” como “symlinks”. Sin esta opción marcada, un enlace simbólico sería respaldado como un fichero.
-n: Dry run ( Ejecución Seca ): Lista los ficheros que van a ser transferidos, pero no hace el respaldo.
-o: Preserva el usuario posesor de los ficheros que van a ser replicados. Importante.
-p: Preserva los permisos de los ficheros. Importante.
-r: Activa la recursividad. Para incluir todos los subdirectorios de una carpeta.
–rsh=’ssh’: Utiliza SSH par la transmisión de datos.
-t: Preserva las fechas de modificación de cada fichero.
-v: Hace una de los ficheros que son transferidos.
-vv: Igual que -v, pero además muestra los ficheros que no van a ser copiados.
-vvv: Igual que -vv, pero también imprime información de debug de rsync
-z: Activa la compresión. Importante si hacemos respaldos a través de Internet.

Pero ya vale de teoría, mejor mostremos un ejemplo equivalente a usar el comando robocopy en Windows:

rsync -auv --exclude '.svn' --exclude '*.pyc' source destination

Esto copiará de forma recursiva el origen al destino y excluir los archivos más antiguos, así como”.svn’ y ‘*.pyc’ directorios/archivos. Así de fácil.

Más información