Menú Close

rsync

El comando rsync en Linux es Una utilidad de sincronización y copia de seguridad de archivos rápida y confiable que copia solo los datos modificados mediante un algoritmo de transferencia delta. Conserva los permisos, la propiedad, las marcas de tiempo y admite compresión y cifrado. SSH, exclusiones y duplicación. Los administradores utilizan rsync para copias de seguridad locales y remotas, migraciones de servidores e implementaciones eficientes de sitios web.

Si manage Para servidores o sitios web Linux, dominar el comando rsync en Linux es esencial. En esta guía de usuario, aprenderá exactamente cómo funciona rsync, cómo instalarlo, opciones principales, ejemplos reales, optimización del rendimiento y mejores prácticas para copias de seguridad incrementales seguras, ya sea que esté sincronizando localmente o con un servidor remoto. SSH.


¿Qué es rsync y cómo funciona?

¿Qué es rsync y cómo funciona?

rsync (sincronización remota) es una herramienta de copia diferencial de archivos. En lugar de transferir archivos completos cada vez, rsync calcula las diferencias y envía solo los bloques modificados, lo que reduce drásticamente el ancho de banda y el tiempo.

Admite copias locales a locales y transferencias locales a remotas (o remotas a locales). vía SSH o un demonio rsync, mientras preserva metadatos y maneja enlaces simbólicos, dispositivos y enlaces duros.

Capacidades clave:

  • El algoritmo de transferencia delta copia solo los cambios.
  • Conserva los permisos, la propiedad y las marcas de tiempo.
  • Trabaja localmente o en otros lugares. SSHdemonio /rsync
  • Admite patrones de exclusión/inclusión y listas de archivos
  • Duplicación y poda con --delete
  • Compresión (-z) y resultados de progreso (-P/--info=progress2)

Instalar rsync en Linux

rsync está disponible en todas las distribuciones principales. Use su paquete manager:

Code
# Debian/Ubuntu
sudo apt update && sudo apt install rsync

# RHEL/CentOS/Rocky/Alma (RHEL 8+)
sudo dnf install rsync

# Fedora
sudo dnf install rsync

# Arch/Manjaro
sudo pacman -S rsync

Verificar instalación:

Code
rsync --version

Sintaxis básica e inicio rápido

La sintaxis de rsync es simple:

Code
rsync [OPTIONS] SOURCE DESTINATION

Ejemplos:

Code
# 1) Local directory to directory
rsync -av /home/user/Documents/ /mnt/backup/Documents/

# 2) Local to remote over SSH (port 22 by default)
rsync -av -e ssh /var/www/ user@server:/backups/www/

# 3) Remote to local download
rsync -av -e ssh user@server:/var/log/ /local/logs/

Por seguridad, haga un ensayo antes de ejecutar:

Code
rsync -av --dry-run --delete /source/ /dest/

Explicación de las opciones más utilizadas de rsync

Memoriza estas banderas fundamentales para moverte rápido y evitar errores:

  • -a (archivo): Copia y conserva de forma recursiva los permisos, la propiedad, las marcas de tiempo, los enlaces simbólicos y mucho más.
  • -v (verboso): Mostrar más resultados. Combinar con -a as -av.
  • -z (comprimir): Comprime los datos durante la transferencia, ideal para enlaces WAN.
  • -P (progreso + parcial): Muestra el progreso y conserva archivos parciales para reanudar la reproducción más rápidamente.
  • --info=progress2: Barra de progreso única y acumulativa para ejecuciones largas.
  • -e ssh: Usar SSH como medio de transporte para el cifrado y la autenticación.
  • --delete: Eliminar en el destino los archivos que ya no existen en el origen (espejo).
  • --exclude/--include: Omitir o incluir archivos/patrones específicos.
  • --exclude-from=FILE: Cargar patrones de exclusión desde un archivo.
  • --bwlimit=KBPS: Limita el ancho de banda para evitar la saturación de los enlaces.
  • --checksum: Comparación mediante suma de comprobación en lugar de tamaño/tiempo (más lento, pero más preciso).
  • --partial: Conservar los archivos transferidos parcialmente en caso de interrupción.
  • --backup --backup-dir=DIR: Guarda los archivos modificados o eliminados en un directorio de copia de seguridad.

Comportamiento de la barra diagonal final (fundamental para evitar errores)

rsync trata una barra diagonal final en la fuente de manera diferente:

  • rsync -av /src/ /dst/ significa “copiar el contenido de /src cobren /dst.
  • rsync -av /src /dst/ significa «copiar el directorio src en sí mismo /dst» (resultado: /dst/src/...).

Al reflejar el contenido del directorio, agregue la barra diagonal final en la fuente.

Casos de uso comunes de rsync con ejemplos reales

1) Copias de seguridad locales con modo de archivo

Conservar atributos y copiar sólo los archivos modificados:

Code
rsync -av /home/user/Pictures/ /mnt/backup/Pictures/

2) Sincronización remota segura a través de SSH

Usar SSH para cifrado y autenticación basada en claves:

Code
# Default SSH port (22)
rsync -avz -e ssh /var/www/ user@host:/data/www/

# Custom port (e.g., 2222)
rsync -avz -e "ssh -p 2222" /var/www/ user@host:/data/www/

3) Duplicar un directorio (agregar o eliminar para que coincida con la fuente)

Asegúrese de que el destino sea un espejo exacto:

Code
# Always dry-run first to confirm deletions
rsync -av --dry-run --delete /srv/files/ /srv/mirror/

# Then run for real
rsync -av --delete /srv/files/ /srv/mirror/

4) Excluir archivos y carpetas

Omite archivos temporales, cachés o carpetas grandes que no necesitas:

Code
rsync -av --exclude=".git" --exclude="node_modules" --exclude="*.tmp" 
/project/ /backup/project/

Utilice un archivo de exclusión para facilitar la lectura:

Code
# exclude.txt
.git
node_modules
*.tmp
cache/
Code
rsync -av --exclude-from=exclude.txt /project/ /backup/project/

5) Copias de seguridad incrementales con versiones

Almacene instantáneas diarias de manera eficiente utilizando enlaces físicos (--link-dest), ahorrando espacio y conservando el historial:

Code
# Prepare directories
sudo mkdir -p /backups/www
cd /backups/www

# Create a dated snapshot using link-dest to the latest one
DATE=$(date +%F)
rsync -a --delete 
  --link-dest=/backups/www/latest 
  /var/www/ /backups/www/$DATE/

# Update the "latest" symlink
rm -f /backups/www/latest
ln -s /backups/www/$DATE /backups/www/latest

Esto permite realizar copias de seguridad diarias rápidas y que ahorran espacio, a la vez que le permite consultar o restaurar datos cualquier día.

6) Reanudar transferencias interrumpidas

Usar -P (o --partial --progress) para reanudar y ver el progreso:

Code
rsync -avP -e ssh /large/archive.iso user@host:/srv/archive/

7) Verificar la integridad con sumas de comprobación

Cuando la precisión importa más que la velocidad, fuerce la comparación de suma de comprobación:

Code
rsync -av --checksum /source/ /dest/

Mejores prácticas de seguridad para rsync

  • Utilice SSH transporte (-e ssh) con autenticación basada en claves y desactivación de inicios de sesión con contraseña en los servidores.
  • Use una cuenta de usuario restringida para las copias de seguridad (con privilegios mínimos). Evite ejecutar como root a menos que sea necesario.
  • Para extracciones remotas que necesitan archivos solo de root, considere sudo rsync con un apretado sudoers regla.
  • Limitar SSH por IP y puerto, y utilice reglas de firewall; agregue autenticación de dos factores o claves de hardware para hosts críticos.
  • Evite exponer el demonio rsync directamente en Internet a menos que comprenda completamente las ACL y la autenticación del módulo.

On managed VPS o Servidores Dedicados en YouStable, puede habilitar SSH Acceso restringido mediante clave y políticas de firewall desde el primer día para garantizar copias de seguridad basadas en rsync sin complicaciones.

Consejos para optimizar el rendimiento

  • Comprimir sobre WAN: -zEn redes LAN rápidas, la compresión puede ralentizar las transferencias: pruebe en ambos sentidos.
  • Mostrar el progreso de manera eficiente: --info=progress2 para grandes operaciones.
  • Elija la estrategia de transferencia: --whole-file favorece el rendimiento de la LAN; --inplace evita archivos temporales para actualizaciones muy grandes.
  • Omitir ruido: Usar --exclude Patrones para evitar registros, cachés y artefactos de compilación.
  • Acelerar si es necesario: --bwlimit=20480 límites a ~20 MB/s para proteger el tráfico de producción.
  • Aumentar SSH Rendimiento de los cifrados: try -e "ssh -c aes128-gcm@openssh.com" en el moderno AbiertoSSH para un cifrado más rápido.

Modo demonio Rsync (avanzado)

rsync puede ejecutarse como un demonio (TCP 873) que sirve módulos con nombre. Esto puede ser eficiente en redes confiables, pero requiere ACL y autenticación cuidadosas. Ejemplo mínimo:

Code
# /etc/rsyncd.conf
uid = nobody
gid = nogroup
use chroot = yes
read only = yes
hosts allow = 10.0.0.0/24

[files]
    path = /srv/exports/files
    comment = Files export

Iniciar el demonio temporalmente:

Code
sudo rsync --daemon --config=/etc/rsyncd.conf

Conectarse desde un cliente:

Code
rsync -av rsync://server/files/ /local/dir/

Solución de errores comunes de rsync

Permiso denegado

Causa: permisos insuficientes o SSH Problemas de autenticación. Solución: asegúrese de que el usuario, los permisos de archivo y la clave sean correctos. SSH. Probar sudo cuando corresponda, o ajustar la propiedad con chown.

No se pudieron establecer horarios ni propiedad

Causa: no se ejecuta como un usuario con privilegios. Solución: ejecute rsync con sudo sobre el destino o evitar preservar la propiedad (--no-owner --no-group) cuando no es necesario.

mkstemp falló: Permiso denegado

Causa: Restricciones de escritura en el directorio de destino. Solución: compruebe los permisos del directorio y el espacio libre; intente --inplace Si los archivos temporales están bloqueados.

Desajuste de la versión del protocolo

Causa: rsync muy antiguo en un lado. Solución: actualizar rsync en ambos extremos. Usando SSH El transporte generalmente evita los problemas del protocolo demonio.

Rsync vs SCP vs Rclone: ​​Cuándo usar qué

  • sincronizar: Ideal para sincronizaciones incrementales, duplicación, copias de seguridad y actualizaciones delta parciales localmente o en otro lugar. SSHLógica de exclusión/inclusión avanzada.
  • SCP/SFTP: Copia simple de archivos SSHNo utiliza algoritmo delta ni lógica de sincronización avanzada; es adecuado para transferencias puntuales.
  • Rclone: Priorizamos la sincronización en la nube con S3, GCS, OneDrive, etc. Si tu destino es el almacenamiento de objetos, rclone es ideal; para servidores POSIX, rsync es la mejor opción.

Flujos de trabajo de alojamiento web en el mundo real (WordPress, LAMP y más)

Implementación de un sitio de WordPress

Sincronizar temas y cargas de forma segura:

Code
# From staging to production, preserving permissions
rsync -avz -e ssh --exclude="wp-content/cache" 
/var/www/stage.example.com/ wpuser@prod:/var/www/example.com/

Para completar la implementación, combine esto con una exportación/importación de la base de datos. Para migraciones sin tiempo de inactividad, ponga el sitio en modo de mantenimiento, sincronice los archivos con rsync, sincronice la base de datos y, a continuación, desactive el modo de mantenimiento.

Copias de seguridad nocturnas del servidor

Ejecutar un trabajo cron que utilice --link-dest para crear instantáneas fechadas. Guárdelas en un disco separado o en un servidor de respaldo remoto. Si usa YouStableVPS o alojamiento dedicado, configure un destino externo seguro y monitoree el ancho de banda con --bwlimit para ventanas de respaldo predecibles.

Migrar un sitio entre hosts

Utilice rsync sobre SSH copiar /var/www, archivos de configuración en /etc (con cuidado) y datos de usuario. Realice una sincronización delta final durante una ventana de transición programada para capturar los cambios de último minuto y luego cambie. DNS.

Consejos profesionales desde el campo

  • Realice siempre un ensayo en seco con --dry-run antes de usar --delete.
  • Utilice rutas absolutas en los scripts cron para evitar sorpresas al cambiar los directorios de trabajo.
  • Salida de registro con --log-file=/var/log/rsync-backup.log para auditorías y resolución de problemas.
  • Combine rsync con instantáneas (LVM, ZFS, Btrfs) para realizar copias de seguridad consistentes de datos en vivo.
  • Para bases de datos, volcar primero (mysqldump or pg_dump), luego rsync los archivos de volcado.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *