// Engineering Log

Protocolos de transferencia de archivos: Parte 7 — Rsync

Publicado el 22.09.2026

// Ruta rapida

Este articulo pertenece al tema Servidores e infraestructura.

Rsync — utilidad para copiar y sincronizar archivos, herramienta estándar de administradores de Linux y Unix. Su característica principal es la transferencia delta: si el archivo ya existe en el lado de destino, rsync transmite sólo las partes que han cambiado, no el archivo completo. Para copias de seguridad y espejos esto ahorra tiempo y tráfico por varios órdenes de magnitud.

Cómo funciona la transferencia delta

El lado de destino divide su copia del archivo en bloques y envía sumas de verificación de esos bloques. El lado de origen busca bloques coincidentes en la nueva versión del archivo y transmite sólo los datos que no están en el destino, más instrucciones sobre cómo reconstruir el archivo a partir de los bloques antiguos. Para archivos que no existen en el destino, rsync los transmite por completo. Por defecto los archivos modificados se determinan por tamaño y tiempo de modificación; la opción -c fuerza la comparación por sumas de verificación, lo que es más lento pero más fiable.

Opciones principales

bash
rsync -a --delete --partial --dry-run -v /srv/www/ backup@192.0.2.20:/backup/www/
  • -a (archive) — copia recursiva conservando permisos, propietarios, tiempos de modificación y enlaces simbólicos;
  • --delete — eliminar en el destino los archivos que ya no están en el origen (hace la copia un espejo exacto);
  • -z — comprimir los datos durante la transferencia (útil en enlaces lentos, inútil para archivos ya comprimidos como archivos .zip o vídeo);
  • --partial — no borrar el archivo parcialmente transferido en caso de interrupción, para poder reanudar desde donde se quedó;
  • --dry-run (-n) — mostrar lo que se haría sin cambiar nada;
  • -v — salida detallada.

Detalle importante: la barra inclinada al final de la ruta de origen. /srv/www/ copia el contenido del directorio, mientras que /srv/www copia el propio directorio dentro del destino. Un error de un solo carácter junto con --delete puede borrar los archivos equivocados, por lo que siempre ejecute el nuevo comando primero con --dry-run.

A través de SSH

Si en la ruta se indica un servidor remoto (user@host:/path), rsync se ejecuta en él a través de SSH: los datos se cifran y para el acceso se usan las habituales claves SSH. Para especificar puerto o clave, use -e:

bash
rsync -a -e "ssh -p 2222 -i ~/.ssh/backup_key" /srv/data/ backup@192.0.2.20:/backup/data/

Para copias automáticas, cree en el servidor de destino un usuario separado con acceso sólo al directorio de copias y con una clave independiente.

Un espejo simple con --delete no protege contra errores: un archivo borrado o dañado en el origen desaparecerá también de la copia en minutos. La opción --link-dest permite almacenar instantáneas diarias casi sin coste adicional: los archivos no modificados en la nueva instantánea se convierten en enlaces duros a los archivos de la instantánea anterior.

bash
today=$(date +%F)
rsync -a --delete --link-dest=/backup/latest /srv/data/ /backup/$today/
ln -sfn /backup/$today /backup/latest

Cada directorio /backup/AAAA-MM-DD parece una copia completa, pero sólo ocupan espacio los archivos modificados. Las instantáneas antiguas se eliminan con un rm -rf normal, sin afectar a las demás.

Demonio rsync y el puerto 873

Además de funcionar vía SSH, rsync puede ejecutarse como un servicio independiente (rsync --daemon), escuchando el puerto TCP 873. Este modo lo usan los espejos de distribuciones para distribuir paquetes. El protocolo del demonio no cifra los datos, y el propio demonio es un objetivo atractivo para ataques. No hace falta abrir el puerto 873 en Internet para copias de seguridad: use SSH o limite el acceso al demonio a la red interna y al cortafuegos.

Vulnerabilidades y actualizaciones

En enero de 2025 se lanzó rsync 3.4.0, que corrigió seis vulnerabilidades: desbordamiento de búfer al procesar sumas de verificación (CVE-2024-12084), filtración de contenido de la pila (CVE-2024-12085), posibilidad de que el servidor lea archivos arbitrarios del cliente (CVE-2024-12086), escritura de archivos fuera del directorio de destino mediante enlaces simbólicos (CVE-2024-12087), evasión de --safe-links (CVE-2024-12088) y condición de carrera al procesar enlaces simbólicos (CVE-2024-12747). Algunas de ellas permitían ejecución de código en el servidor con el demonio en ejecución. A septiembre de 2026 la versión actual es 3.5.1 (21 de septiembre de 2026). Compruebe la versión con rsync --version y actualice el paquete si es anterior a 3.4.0.

Errores típicos

  • Barra final en la ruta — se copia algo distinto a lo esperado; con --delete esto puede provocar pérdida de datos.
  • Espejo en lugar de copia de seguridad — --delete sin historial de instantáneas traslada errores y borrados a la copia.
  • Copia que nadie ha verificado — restaure periódicamente algunos archivos y compruebe su contenido.
  • Demonio rsync expuesto — puerto 873 en Internet sin restricciones de acceso.
  • Permisos y propietarios — al copiar sin root los propietarios de los archivos se pierden en el lado de destino; para una copia completa del sistema ejecute rsync con privilegios de root en ambos extremos.

// Tarea parecida

Si estas resolviendo algo parecido

Este articulo pertenece a uno de los temas principales de trabajo. Puedes seguir leyendo sobre el tema, ir a la pagina principal para entender a que me dedico o abrir directamente los servicios.

Tema del articulo

Servidores e infraestructura

VPS, Linux, stack web, migraciones, hosting, bases de datos y operacion base.

Tareas frecuentes de esta tema

  • Migrar un sitio o servicio a un nuevo servidor
  • Configurar Linux, Nginx, base de datos y copias de seguridad
  • Entender por que el sistema funciona de forma inestable

// Siguiente paso

Si necesitas ayuda con este tema y no solo otro articulo, es mejor ir directo a la pagina del servicio. La pagina principal y la seleccion de materiales quedan como rutas secundarias.

Abrir servicios

// Contact

¿Necesitas ayuda?

Escríbeme y te ayudaré a resolver el problema

Respondo en un día laborable (03:00-13:00 GMT)

Или оставьте заявку здесь:

Confirme que no es un bot.

Escribir y recibir una respuesta rápida