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
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:
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:
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:
La copia también se puede hacer a la inversa, es decir, desde la máquina remota a la local:
Si nuestro ssh no usa el puerto por defecto podemos añadirlo con:
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:
4. Excluir directorios con rsync
Imaginemos que queremos tener sincronizada nuestra carpeta con proyectos de programación en symfony o node 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:
También se pueden meter las carpetas en un archivo txt y usarlo con la opción -‐exclude-from
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: