Backup con rsync

¿Cómo realizo un backup? ¿Puedo hacer el backup de manera remota? ¿Cómo puedo mantenerlo sincronizado de manera eficiente copiando solo los cambios desde el último backup?

En esta entrada vamos a ver cómo realizar un backup y mantenerlo sincronizado.

Es importante aclarar que este método se puede utilizar para realizar backups de sistema, pero no es el objetivo de este artículo.

El objetivo es realizar un backup de una localización en concreto y mantenerlo sincronizado cada vez que queramos, sin necesidad de realizar el backup completo de nuevo; es decir, «actualizar» el backup con los cambios desde la anterior sincronización.

Rsync

Para ello utilizaremos la herramienta rsync. Rsync nos va a permitir realizar copias eficientes y sincronizar dos localizaciones transfiriendo únicamente los cambios.

Permite también el uso a través de SSH para realizar copias en remoto.

Asumimos que «rsync» está instalado tanto en la máquina local como en la máquina remota si se va a copiar desde/a una máquina externa.

Para ver el significado de cada flag o modificador de rsync en los ejemplos, revisa el último apartado de esta entrada «Opciones de Rsync».

Ejemplos de Backup

Revisaremos las opciones más comunes a la hora de realizar backups con rsync a través de algunos ejemplos:

  1. Backup local con rsync
  2. Backup remoto con key
  3. Backup remoto con/sin password

A partir de estos ejemplos se puede adaptar fácilmente a casi cualquier situación.

Si hay alguna situación que no se cubre, o si tienes alguna duda, puedes indicarlo en los comentarios.

Un caso especial que no veremos en esta entrada se produce cuando se quiere utilizar rsync para mover archivos, para esto tenemos una entrada especializada que puedes consultar en Rsync copia y borrado de origen.

Sincronización

Todos los ejemplos sincronizan el contenido del origen, por lo que si algún elemento se elimina de la fuente, se eliminará de la copia la próxima vez que se sincronice.

El modo de realizar el backup por primera vez y el modo de sincronizarlo se invoca exactamente de la misma manera, por lo que, cada vez que quieras sincronizar, simplemente ejecuta de nuevo el comando rsync que has preparado.

1. Backup local con rsync

En este ejemplo realizaremos el backup de «/my/important/location/» en «/mnt/backupUnit/MyImpLocBackup».

Esas rutas pueden ser locales o puntos de montaje (por ejemplo, smbfs/cifs, nfs, sshfs …)


rsync -vrlptog \
--stats \
--delete-before \
--log-file=/mnt/backupUnit\MyImpLoc_Backup.log \
--exclude lost+found \
/my/important/location/ \
/mnt/backupUnit/MyImpLocBackup

No olvides sustituir las rutas de origen y destino de los archivos y la ruta del log para adaptarlo a tus necesidades.

2. Backup remoto con key

En este ejemplo queremos realizar un backup del directorio «/MyFiles» en un servidor remoto al cual accedemos con key.

Vamos a realizar el backup del directorio «/MyFiles» remoto en el directorio «/mnt/backupUnit/MyFilesBackup/» en local.


rsync -vrlptog \
--stats \
--delete-before
-e "ssh -i /home/myuser/keyfile.pem" \
--logfile=/mnt/backupUnit/transfer.log \
ubuntu@dns.compute.amazonaws.com:/MyFiles/ \
/mnt/backupUnit/MyFilesBackup/

Como vemos en el ejemplo, así lo haríamos en caso de tener una máquina en Amazon.

No olvides sustituir las rutas de origen y destino de los archivos, así como la dirección del vps o servidor, usuario, llave o keyfile y la ruta del log si aplica.

3. Backup remoto con/sin password

En este ejemplo queremos realizar el backup de «/MyFiles» en un servidor remoto al cual accedemos con usuario y password.

Con password

Esta forma es muy habitual a la hora de realizar estas copias a mano.

rsync -vrlptog \
--stats \
--delete-before \
--logfile=/mnt/backupUnit/transfer.log \
usuario@myserver.example.com:/MyFiles/ \
/mnt/backupUnit/MyFilesBackup/

Una vez ejecutada la sentencia anterior, nos solicitará el password del usuario indicado para iniciar la copia.

Sin password

Es habitual que estas copias se quieran automatizar, para eso se puede realizar de la misma manera pero hay que configurar previamente el acceso sin password al servidor.

Una vez realizado, el comando rsync es exactamente el mismo, solo que, gracias a la configuración realizada, no pedirá contraseña al ejecutarse.

rsync -vrlptog \
--stats \
--delete-before \
--logfile=/mnt/backupUnit/transfer.log \
usuario@myserver.example.com:/MyFiles/ \
/mnt/backupUnit/MyFilesBackup/

Una vez finalizado tendremos nuestro respaldo sincronizado y el log en «/mnt/backupUnit/transfer.log»

Opciones de Rsync

Revisamos las opciones de rsync para saber lo que estamos realizando y modificarlo en caso necesario.

-vrlptog

v: «verbose» Aumenta el nivel de detalle en la información de salida de rsync.

r: «recursivo» Incluye los subdirectorios.

l: «links» Copia los enlaces simbólicos como enlaces simbólicos.

p: «perms» Mantiene los permisos.

t: «times» Mantiene las fechas de modificación.

o: «owner» Mantiene el usuario.

g: «group» Mantiene el grupo.

–stats

Al final de la copia/sincronización presenta un informe de la transferencia que ha tenido lugar.

–delete-before

Elimina del destino aquellos archivos que ya no existen en la fuente antes de empezar la copia. Especialmente útil para evitar un uso excesivo de espacio en la unidad de backup.

–log-file=/path/MyImpLoc_Backup.log

Especifica la ruta y el nombre si quieres crear un log.

–exclude lost+found

Con «exclude» puedes indicar los elementos que deseas ignorar en la copia/sincronización.

 

Para mayor información, puedes consultar la página del manual de rsync:


man rsync

O consultar la salida de:


rsync --help

 

 

 

 

 

 

Deja una respuesta

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