Comando rsync de Linux: opciones y ejemplos de uso

Aviso de afiliados v3.1
Aviso de afiliados v3.2 (móvil)
Entorno de pruebaFamilia RHELAlmaLinux 9.8Cuenta rootVerificado el 2026-10-07

Si vuelves a copiar toda la carpeta cada vez para mantener dos servidores iguales, la transferencia ocupa el tamaño completo aunque solo haya cambiado un archivo. El comando rsynces la abreviatura de remote sync: compara origen y destino, envía solo los archivos que difieren y funciona igual entre carpetas locales y entre servidores conectados por SSH. Este artículo repasa el uso básico, las opciones y ejemplos de los dos métodos de conexión: SSH y el demonio rsync.

Las salidas de este artículo proceden de rsync 3.2.7 en AlmaLinux 9.8. Si no está instalado, se instala con el gestor de paquetes.

# Familia RHEL
dnf -y install rsync
# Familia Debian
apt -y install rsync

✅ Uso básico

La sintaxis básica es la siguiente.

rsync -opciones origen destino

Igual que con el comando cp, el origen va primero y el destino después. Si el origen termina en barra [/], solo entra el contenido de la carpeta en el destino; sin ella, entra la carpeta entera.

~]# rsync -av www/ backup/
sending incremental file list
index.html
img/
img/logo.png
~]# rsync -av www backup/
sending incremental file list
www/
www/index.html
www/img/
www/img/logo.png

Si ejecutas el mismo comando otra vez, la lista de archivos queda vacía y los bytes enviados bajan a unos cientos. Los archivos con el mismo tamaño y la misma fecha de modificación se omiten.

~]# rsync -av www/ backup/
sending incremental file list

sent 166 bytes  received 13 bytes  358.00 bytes/sec
total size is 3,015  speedup is 16.84

Con -r solo, sin -a, no se conservan las fechas de modificación y la siguiente ejecución vuelve a enviar los mismos archivos. Para sincronizar carpetas, usa -a por defecto.

La opción -n muestra solo qué archivos cambiarían, sin transferir nada, y el resultado termina en [(DRY RUN)]. Las opciones que borran archivos en el destino, como -⁠-delete, se comprueban primero con -n y luego se ejecutan.

~]# rsync -avn --delete www/ backup/
sending incremental file list
deleting old.bak
index.html

sent 188 bytes  received 39 bytes  454.00 bytes/sec
total size is 3,013  speedup is 13.27 (DRY RUN)

✅ Opciones del comando rsync y simulador

OpciónDescripción
-a--archiveCopia también los subdirectorios y conserva permisos, propietario, fecha de modificación y enlaces simbólicos (igual que -rlptgoD)
-v--verboseMuestra el nombre de cada archivo transferido y los totales
-z--compressComprime los datos durante la transferencia
-r--recursiveCopia también los subdirectorios (incluido en -a)
-t--timesConserva las fechas de modificación (incluido en -a). Es el criterio que decide qué archivos se omiten en la siguiente ejecución
-n--dry-runMuestra solo los archivos que cambiarían, sin transferir, y marca el final con (DRY RUN)
-u--updateOmite los archivos que son más recientes en el destino
-h--human-readableMuestra los bytes en unidades K, M y G
-PIgual que --partial --progress. Muestra el progreso por archivo y reanuda transferencias interrumpidas
-i--itemize-changesMuestra con un código qué cambió en cada archivo>f+++++++++ archivo nuevo · >f.st.⁠.⁠.⁠.⁠.⁠. tamaño y fecha cambiados · *deleting borrado
-e--rsh=COMMANDEspecifica el shell remoto-e 'ssh -p 2222 -i /root/.ssh/key.pem'
--deleteBorra del destino los archivos que ya no existen en el origen (requiere -r o -a)
--exclude=PATTERNExcluye los archivos y directorios que coinciden con el patrón--exclude '*.tmp' --exclude 'cache/'
--include=PATTERNColocado antes de --exclude, deja solo ese patrón fuera de la exclusión
--max-size=SIZENo transfiere archivos mayores que el tamaño indicado (--min-size para los más pequeños)--max-size=3M --min-size=10k
--bwlimit=RATELimita la velocidad de transferencia, en KiB/s
--statsMuestra estadísticas de número de archivos y transferencia
Simulador del comando rsyncrsync 3.2.7
[root@server work]#
Funciona solo dentro del navegador y no toca ningún archivo real. La carpeta www es el origen y la carpeta backup es la copia anterior. Escribe rsync con distintas opciones y comprueba el resultado con ll, cat y diff. Las direcciones remotas (user@host:ruta) solo se aceptan por su sintaxis; no se conecta. Pulsa [Empezar de nuevo] para deshacer los cambios. Con las teclas ↑↓ recuperas los comandos anteriores, y si escribes uknew help verás los comandos disponibles.

✅ Métodos de conexión: SSH y el demonio rsync

Hay dos formas de conectarse a un servidor remoto. Un solo dos puntos [:] tras el host pasa por SSH; dos puntos dobles [::] conectan directamente con el demonio rsync en el puerto 873.

AspectoMétodo SSH (:)Método del demonio rsync (::)
Sintaxisrsync -opciones user@host:/ruta /ruta-localrsync -opciones host::módulo/ruta /ruta-local
PuertoPuerto SSH (22 por defecto)873
CifradoCifrado por SSHSin cifrado
AutenticaciónClave SSH o contraseñahosts allow en rsyncd.conf; cuenta y contraseña opcionales
Configuración en el servidorNinguna (funciona en cuanto hay acceso SSH)Instalar rsync-daemon, /etc/rsyncd.conf, abrir el puerto 873
UsoCopias y despliegues entre servidores (la opción por defecto)Réplicas en una red interna sin entregar cuentas SSH

🔲 Método SSH

Si puedes acceder al servidor por SSH, funciona sin configurar nada en el servidor. Si el puerto es distinto o usas un archivo de clave, pon el comando ssh tal cual en la opción -e.

# local → remoto
rsync -avz /home/2server_data/ root@192.168.45.239:/home/1server_data/
# remoto → local
rsync -avz root@192.168.45.239:/home/1server_data/html_Remote /home/2server_data
# Puerto SSH y archivo de clave
rsync -avz -e 'ssh -p 2222 -i /root/.ssh/key.pem' root@192.168.45.239:/home/1server_data/ /home/2server_data
comando rsync: resultado de la ejecución de remoto a local

Para dejar fuera ciertos archivos o directorios, añade -⁠-exclude una vez por patrón o agrupa los patrones entre llaves y escríbelos de una vez.

rsync -avz --exclude 'html_Remote_Excertion' --exclude 'Exception_File' root@192.168.45.239:/home/1server_data/ /home/2server_data
rsync -avz --exclude={'html_Remote_excertion/*','Exception_File'} root@192.168.45.239:/home/1server_data/ /home/2server_data
comando rsync: de remoto a local, excluyendo archivos y directorios concretos

🔲 Método del demonio rsync

El demonio rsync permite el acceso por módulos en el puerto 873 sin cuenta SSH. El tráfico no va cifrado, así que se usa entre servidores de la misma red interna.

En AlmaLinux 9, instala el paquete rsync-daemon y arranca el servicio. En servidores con firewalld, abre el puerto 873; en servidores en la nube, ábrelo en el cortafuegos de la consola. El método xinetd que se usaba en RHEL 8 y anteriores desapareció en 9.

dnf -y install rsync-daemon
systemctl enable --now rsyncd
firewall-cmd --permanent --add-port=873/tcp
firewall-cmd --reload

En el archivo de configuración [/etc/rsyncd.conf] se indican el nombre del módulo, su ruta y los hosts permitidos. Con read only en yes, desde el remoto solo se puede descargar.

[myhome]
path = /home
uid = root
gid = root
use chroot = yes
read only = yes
hosts allow = 192.168.45.182
max connections = 3
timeout = 30

Desde el remoto, solo dos puntos dobles tras el host muestran la lista de módulos; con el nombre del módulo se listan los archivos que contiene.

~]# rsync 192.168.45.239::
myhome
home
~]# rsync 192.168.45.239::myhome
drwxr-xr-x          4,096 2025/06/12 22:14:39 .
drwxr-xr-x          4,096 2025/06/12 22:21:10 1server_data
drwxr-xr-x          4,096 2025/06/12 22:14:39 2server_data

La copia usa la forma [host::módulo/ruta]. -⁠-delete elimina del destino los archivos que no están en el origen, y -⁠-include deja fuera de la exclusión solo los elementos puestos antes de -⁠-exclude.

~]# rsync -avz 192.168.45.239::myhome/1server_data/ /home/2server_data/
receiving incremental file list
./
Exception_File
html_Remote/
html_Remote_Excertion/

sent 58 bytes  received 332 bytes  780.00 bytes/sec
total size is 442  speedup is 1.13
~]# rsync -avz --delete 192.168.45.239::myhome/1server_data/ /home/2server_data/
~]# rsync -avz --include '*.html' --exclude 'exclude.txt' 192.168.45.239::myhome/1server_data/ /home/2server_data/
comando rsync: de remoto a local con la opción delete
comando rsync: de remoto a local con las opciones delete, include y exclude

En un servidor con SELinux activado, el acceso a la ruta del módulo puede bloquearse con [Permission denied (13)]. En la prueba pasó tras desactivar SELinux con [setenforce 0].

~]# rsync -avz 192.168.45.239::myhome/1server_data/ /home/2server_data/
receiving incremental file list
rsync: change_dir "/1server_data" (in myhome) failed: Permission denied (13)
sent 8 bytes  received 90 bytes  65.33 bytes/sec
total size is 0  speedup is 0.00
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1658) [Receiver=3.1.2]

-⁠-bwlimit limita la velocidad en KiB/s y, con -P, se ve además el progreso de cada archivo. -⁠-max-size y -⁠-min-size transfieren solo los archivos dentro del rango de tamaño indicado.

rsync -avzP --bwlimit=100 192.168.45.239::myhome/1server_data/ /home/2server_data/
rsync -avz --max-size='3M' --min-size='10k' 192.168.45.239::myhome/1server_data/ /home/2server_data/
comando rsync: de remoto a local, ancho de banda limitado a 100kb y progreso con la opción -P

ℹ️ Aviso de afiliados
El contenido de este sitio incluye enlaces de afiliado. Cuando un visitante compra un producto o servicio a través de uno de ellos, el sitio recibe una comisión del vendedor. El importe que paga el comprador(baja durante las promociones ↓)no aumenta. Los precios, descuentos y existencias publicados corresponden al momento de redacción y pueden variar, así que confírmalos con el vendedor antes de comprar. Los productos se eligen y evalúan con criterios propios, y las comisiones no influyen en el orden ni en el contenido de las reseñas.

Deja una respuesta

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

Demuestra que eres humano: 3   +   4   =