Soporte técnico & Área de clientes

Si ya eres cliente y necesitas ayuda no dudes en pedirla, por favor, envíanos un ticket pulsando el botón de más abajo.

Acceder al área de soporte

Otras contactos de soporte
(+34) 968 102 998 soporte@kimerikal.com Calle Farmaceútico Antonio Carazo Villar, 17, Murcia
Síguenos en las redes

Comando rsync para crear copias de seguridad incrementales

1. Copiar un archivo a otra ruta local

2. Sincronizar directorios localmente

3. Sincronizar directorios remotos por SSH

4. Excluir directorios con rsync

5. La opción delete

6. Comando Rsync completo sincronización de directorios remotos con borrado de archivos y exclusión de carpetas

1. Copiar un archivo a otra ruta local

Este sería el uso más básico que podemos dar rsync, realmente no vamos a utilizar este comando únicamente para copiar un archivo (por muy incremental que sea la copia) pero para empezar nos vale:

rsync -a /path/to/my/file.ext /new/path/

Por supuesto, el usuario debe tener permisos de lectura y escritura para copiar el archivo.

2. Sincronizar directorios localmente

La verdadera potencia de rsync radica en las copias incrementales de directorios y sobre todo cuando la copia se hace a otro dispositivo remoto y no en la misma máquina.

Un ejemplo de sincronización de directorios locales, por ejemplo, quiero tener una copia actualizada de mi directorio /www/ en mi carpeta de usuario:

rsync -a /var/www/ /home/MY_USER/backup/

Un dato interesante es que si la ruta de destino no existe, rsync, la creará si tiene permisos, si se omite la barra al final del directorio “/”, rsync, copiará el directorio de origen dentro del directorio de destino.

3. Sincronizar directorios remotos por SSH

Vamos a ver la verdadera fuerza de este comando sincronizando directorios de máquinas remotas. En este ejemplo sincronizamos un directorio de nuestra máquina a otra remota:

rsync -a /local/path/ SSH_USER@XX.XX.XX.XX:/target/folder/

La copia también se puede hacer a la inversa, es decir, desde la máquina remota a la local:

rsync -a SSH_USER@XX.XX.XX.XX:/target/folder/ /local/path/

Si nuestro ssh no usa el puerto por defecto podemos añadirlo con:

rsync -a -e “ssh -p PORT” /local/path/ SSH_USER@XX.XX.XX.XX:/target/folder/

Si nuestra transferencia de datos es muy grande, es recomendable añadir la opción -P que es capaz de crear una sesión con la máquina de destino:

rsync -a -P -e “ssh -p PORT” /local/path/ SSH_USER@XX.XX.XX.XX:/target/folder/

4. Excluir directorios con rsync

Imaginemos que queremos tener sincronizada nuestra carpeta con proyectos de programación en symfonynode o cualquier otro lenguaje y no queremos que ciertas carpetas como podría ser vendor o quizá node_modules, o alguna carpeta de caché o tmp podemos usar la opción -‐exclude con la ruta relativa a dicha carpeta:

rsync -a -‐exclude=vendor -‐exclude=tmp -‐exclude=node_modules -P -e “ssh -p PORT” /local/path/ SSH_USER@XX.XX.XX.XX:/target/folder/

También se pueden meter las carpetas en un archivo txt y usarlo con la opción -‐exclude-from

rsync -a -‐exclude-from=’/path/to/my/exclude-file.txt’ -P -e “ssh -p PORT” /local/path/ SSH_USER@XX.XX.XX.XX:/target/folder/

En nuestro archivo exclude-file.txt escribimos el nombre de las carpetas, una por cada línea:

vendor
node_modules
tmp
cache
log

5. La opción delete

Por defecto, rsync, no elimina los archivos o ficheros que se borran en el origen, para hacer que rsync también elimine los archivos en el destino habrá que añadir a nuestro comando la opción -‐delete:

rsync -a -‐delete -‐exclude-from=’/path/to/my/exclude-file.txt’ -P -e “ssh -p PORT” /local/path/ SSH_USER@XX.XX.XX.XX:/target/folder/

6. Comando Rsync completo sincronización de directorios remotos con borrado de archivos y exclusión de carpetas

rsync -avh -‐delete -‐exclude-from=’/root/exclude-file.txt’ -P -e “ssh -p 8080” /var/www/ SSH_USER@XX.XX.XX.XX:/home/backups/my-server/