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
- rsync
- sobre el algoritmo de rsync
- The geek stuff
- Created by Pete
- atareao.es