rsync
Sincroniza archivos y carpetas entre local y remoto, copiando solo lo que cambió.
Copia y sincroniza archivos y carpetas de forma eficiente: la segunda vez solo transfiere lo que cambió. Funciona en la misma máquina o entre equipos usando SSH. Lo usas para respaldos, para subir un proyecto a un servidor o para mantener dos carpetas iguales. Ubuntu lo trae instalado; en Debian quizá tengas que instalarlo con sudo apt install rsync.
rsync [opciones] ORIGEN DESTINOrsync puede borrar archivos en el destino si usas --delete. Siempre prueba con --dry-run primero. También ten cuidado con las barras al final de las rutas (carpeta/ vs carpeta).
Despiece
5 ejemplosSincronizar carpeta local (solo copia lo nuevo)
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | rsync | Comando | El comando para sincronizar archivos. |
| 2 | -av | Opción | a preserva atributos, v muestra lo que copia. |
| 3 | fotos/ | Argumento | Carpeta origen con barra al final: copia contenido, no la carpeta fotos. |
| 4 | respaldo_fotos/ | Argumento | Carpeta destino. |
Copia fotos/ a respaldo_fotos/. La segunda vez, solo copia lo que cambió.
Sincronizar incluyendo la carpeta raíz
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | rsync | Comando | El comando para sincronizar archivos. |
| 2 | -av | Opción | Modo archivo con verbose. |
| 3 | fotos | Argumento | Sin barra al final: copia la carpeta fotos completa dentro de destino. |
| 4 | respaldo_fotos/ | Argumento | Carpeta destino. |
Queda respaldo_fotos/fotos/ con todo el contenido.
Probar antes de sincronizar (dry-run)
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | rsync | Comando | El comando para sincronizar archivos. |
| 2 | -av | Opción | Modo archivo con verbose. |
| 3 | --dry-run | Opción | Simula sin hacer cambios. |
| 4 | fotos/ | Argumento | Carpeta origen. |
| 5 | respaldo_fotos/ | Argumento | Carpeta destino. |
Muestra qué archivos se copiarían/borrarían, pero no modifica nada.
Subir a un servidor que usa otro puerto de SSH
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | rsync | Comando | El comando para sincronizar archivos. |
| 2 | -avz | Opción | a conserva permisos y fechas, v muestra lo que copia y z comprime para la red. |
| 3 | -e | Opción | Indica cómo conectarse al servidor. |
| 4 | "ssh -p 2222" | Valor | Usa ssh por el puerto 2222. Sin -e, rsync usaría ssh por el puerto normal, el 22. |
| 5 | proyecto/ | Argumento | La carpeta local. Con / al final se copia su contenido. |
| 6 | usuario@servidor:/home/usuario/proyecto/ | Argumento | El destino: usuario, equipo y ruta dentro de ese equipo. |
Sube al servidor solo lo que cambió desde la última vez. Si tu servidor usa el puerto 22 normal, quita el -e: rsync -avz proyecto/ usuario@servidor:/home/usuario/proyecto/.
Sincronización espejo con borrado
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | rsync | Comando | El comando para sincronizar archivos. |
| 2 | -av | Opción | Modo archivo con verbose. |
| 3 | --delete | Opción | Borra en destino lo que no existe en origen. Hacer espejo exacto. |
| 4 | --dry-run | Opción | Siempre probar primero antes de aplicar --delete. |
| 5 | respaldo_fotos/ | Argumento | Carpeta origen del espejo. |
| 6 | fotos/ | Argumento | Carpeta destino que quedará idéntica al origen. |
Simula hacer que fotos/ sea idéntica a respaldo_fotos/: borra archivos que solo existan en fotos/.
Opciones
Las que sí vas a usar| Opción | Qué hace |
|---|---|
| -a--archive | Modo archivo: preserva permisos, dueño, grupo, fechas, enlaces simbólicos. Es el más usado para respaldos. |
| -v--verbose | Muestra lo que va copiando. |
| -z--compress | Comprime datos durante la transferencia (útil para red). |
| -r--recursive | Copia carpetas y todo su contenido recursivamente. |
| -n--dry-run | Simula la sincronización sin hacer cambios reales. Ideal para probar. |
| --delete | Elimina archivos en DESTINO que ya no existen en ORIGEN (sincronización espejo). |
| -P | Equivale a --partial --progress. Muestra progreso y permite reanudar transferencias interrumpidas. |
| -e--rsh | Cambia cómo se conecta al otro equipo. rsync ya usa ssh por omisión; -e sirve para pasarle opciones, como -e "ssh -p 2222" para otro puerto. |
Fallas comunes
| Falla | Remedio |
|---|---|
| Confundir fotos/ vs fotos. | Con barra al final (fotos/), copia solo el contenido. Sin barra, copia la carpeta fotos dentro del destino. |
| Borrar archivos por error con --delete. | Nunca uses --delete sin --dry-run primero. También revisa bien origen/destino. |
| Fallo de permisos SSH. | Verifica que puedas hacer ssh usuario@servidor. Revisa permisos de la carpeta destino remota. |
| Sobreescribir dueño/grupo sin privilegios. | Preservar dueño (-a incluye -o) requiere permisos de root en destino remoto para cambiar propietario. |
Preguntas frecuentes
- ¿Cuál es la ventaja de rsync sobre cp?
- rsync solo copia lo que cambió, usa menos ancho de banda y tiempo. También puede sincronizar con servidores remotos via SSH.
- ¿Qué hace -a en rsync?
- Activa modo archivo: preserva permisos, timestamps, dueño, grupo, enlaces simbólicos y copia recursivamente. Es el equivalente a -rlptgoD.
- ¿Cómo pruebo rsync sin modificar nada?
- Agrega --dry-run (o -n). Así ves qué haría sin ejecutar cambios.
- ¿Cuándo usar --delete?
- Cuando quieres que el destino quede exactamente igual al origen (espejo). Borra archivos que ya no existen en origen.
- ¿Cómo subir archivos a un servidor con rsync?
- Con rsync -avz proyecto/ usuario@servidor:/var/www/proyecto/. rsync usa SSH por omisión, así que basta con que puedas entrar por ssh a ese servidor. Si usa otro puerto, agrega -e "ssh -p 2222".