Qué es rsync y cómo sincronizar archivos
Autor: Redacción Domeny.ForSale Publicado
En pocas palabras: rsync es una herramienta de línea de comandos para copiar y sincronizar archivos entre directorios u ordenadores. En ejecuciones posteriores omite los archivos que considera sin cambios y, al transferir datos por la red, puede enviar solo los fragmentos modificados. Sirve para actualizar copias de datos y trasladar archivos a un servidor, pero una sincronización normal no sustituye a una copia de seguridad con historial de versiones.
¿Cómo funciona rsync y en qué se diferencia de una copia normal?
Rsync compara el origen indicado con el destino y determina qué archivos debe transferir. De forma predeterminada, detecta los cambios principalmente a partir del tamaño del archivo y su fecha de modificación. Por tanto, no compara todo el contenido de cada archivo en cada ejecución.
En las transferencias por red, rsync puede utilizar un algoritmo diferencial, es decir, enviar los fragmentos que faltan o han cambiado en lugar de todo el archivo existente. Sin embargo, la primera copia a un directorio vacío exige transferir todos los datos seleccionados. En las copias locales, rsync transfiere de forma predeterminada los archivos completos que necesitan actualizarse, porque analizar sus fragmentos no siempre resulta ventajoso.
Por ejemplo, tienes un directorio con fotos de productos en tu ordenador y una copia en el servidor. Tras añadir cinco fotos, la siguiente ejecución de rsync enviará los archivos nuevos en lugar de volver a copiar toda la colección. Sin embargo, borrar una foto del origen no la elimina automáticamente del destino: para ello hace falta una opción específica.
¿Dónde se puede utilizar rsync?
Rsync se utiliza habitualmente en Linux y también está disponible en macOS. En Windows puedes utilizarlo, por ejemplo, mediante WSL, un entorno que permite ejecutar herramientas de Linux. Puedes comprobar si el programa está disponible y qué versión tiene con este comando:
rsync --version
Si el programa no está instalado, instálalo con el gestor de paquetes de tu sistema. Consulta los detalles de instalación y las opciones disponibles en la documentación de tu distribución o de la versión concreta del programa.
Para las transferencias habituales por SSH, rsync debe estar instalado en ambos ordenadores. SSH permite conectarse de forma cifrada a un ordenador remoto. También necesitas una cuenta con acceso al servidor, permisos de lectura en el origen y permisos de escritura en el destino; disponer únicamente de acceso por SFTP no siempre basta.
Primera sincronización paso a paso
La sintaxis básica es rsync [opciones] origen destino. Supongamos que quieres copiar el contenido del directorio proyectos al directorio existente /mnt/backup/proyectos/. Primero, haz una prueba sin guardar cambios:
rsync -av --dry-run --itemize-changes ~/proyectos/ /mnt/backup/proyectos/
Estas son las funciones de las opciones utilizadas:
-a— modo de archivo: copia subdirectorios y conserva enlaces simbólicos y metadatos básicos, en la medida en que lo permitan el sistema y los permisos.-v— muestra más información sobre el desarrollo de la operación.--dry-run— simula la operación sin copiar ni eliminar archivos.--itemize-changes— muestra el tipo de cambios previstos.
Comprueba que las rutas y la lista de cambios sean correctas. Si utilizas un disco externo, confirma también que esté montado en la ubicación adecuada. A continuación, ejecuta la copia real:
rsync -av --itemize-changes ~/proyectos/ /mnt/backup/proyectos/
La barra al final del origen cambia el significado del comando. El origen ~/proyectos/ indica que se copiará el contenido del directorio. El origen ~/proyectos indica que se copiará el directorio con su nombre; por tanto, si el directorio de destino ya existe, puede crearse un nivel adicional llamado proyectos.
El modo -a no conserva automáticamente todas las propiedades posibles de los archivos. Por ejemplo, las listas de control de acceso, los atributos extendidos y las relaciones entre enlaces duros requieren opciones adicionales y compatibilidad en ambos extremos.
¿Cómo enviar archivos al servidor por SSH?
Para copiar el contenido de un directorio local al servidor, puedes utilizar el siguiente modelo. Sustituye el nombre de la cuenta, la dirección del servidor y la ruta por tus propios valores:
rsync -av -e ssh --dry-run ./sitio/ usuario (at) serwer.example:/var/www/sitio/
La opción -e ssh indica el método de conexión. Tras comprobar el resultado, elimina --dry-run para realizar la transferencia. En la primera conexión, verifica la huella de la clave del servidor con la información facilitada por su administrador, en lugar de aceptar su identidad sin comprobarla.
Para descargar archivos, invierte el orden del origen y el destino: la ruta remota debe aparecer primero. Rsync funciona en una sola dirección: no ofrece una sincronización bidireccional automática ni resuelve conflictos entre dos copias editadas de forma independiente.
Eliminación de archivos y límites de las copias de seguridad
La opción --delete elimina del directorio de destino sincronizado los archivos que no están en el origen. Es útil para crear una copia espejo, pero una ruta incorrecta o un origen vacío pueden provocar la pérdida de datos necesarios. Antes de utilizarla, haz siempre una prueba con --dry-run --itemize-changes y revisa las eliminaciones previstas.
Incluso sin --delete, rsync puede sobrescribir una versión anterior de un archivo. Tampoco garantiza por sí solo una copia coherente de una base de datos en funcionamiento: para ello suele ser necesario exportar la base de datos o utilizar el mecanismo de copia que ofrece su motor.
Si vas a utilizar los datos para recuperarte de un error o una avería, planifica cómo conservar versiones anteriores y una copia independiente. Haz la primera prueba de rsync con un directorio de prueba pequeño y después comprueba que puedes recuperar un archivo concreto de la copia.
Consulta también: ¿Qué es 2FA?
