Cuando necesitamos hacer una copia de seguridad de un directorio, una de las opciones más
sencillas en sistemas tipo Unix es usar rsync. Su mayor ventaja frente a
un simple cp es que es incremental: la primera vez copia todo, y en las sucesivas solo copia
los archivos que han cambiado, lo que lo hace mucho más rápido para copias de seguridad
periódicas. Además, con la opción -a conserva permisos, fechas y enlaces simbólicos.
Para hacer una copia de seguridad de nuestro directorio personal en un disco externo:
rsync -av /home/usuario/ /mnt/disco-externo/backup/
La opción -a activa el modo archivo y -v el modo detallado para ver qué se está copiando.
Si queremos que los archivos borrados en el origen también se eliminen del destino, añadimos
--delete:
rsync -av --delete /home/usuario/ /mnt/disco-externo/backup/
Hay que prestar atención a la barra final en el directorio de origen: rsync ... /home/usuario/
copia el contenido de la carpeta, mientras que rsync ... /home/usuario (sin barra) copia la
carpeta entera, con lo que el backup quedaría en backup/usuario/ en vez de directamente en
backup/.
rsync también funciona sobre SSH para hacer
copias a un servidor remoto. La sintaxis es la misma, sustituyendo la ruta local por
usuario@servidor:/ruta/:
rsync -avz /home/usuario/ usuario@example.com:/home/usuario/backup/
La opción -z activa la compresión durante la transferencia, lo que puede reducir el tiempo
en conexiones lentas.
Si necesitamos excluir algún directorio del backup, por ejemplo la caché del navegador, usamos
--exclude:
rsync -av --exclude='.cache' /home/usuario/ /mnt/disco-externo/backup/
Para automatizar la copia de seguridad podemos añadir el comando al
cron del usuario. Con crontab -e editamos la tabla de
tareas programadas y añadimos una línea con la frecuencia y el comando:
0 2 * * * rsync -av /home/usuario/ /mnt/disco-externo/backup/
Esto ejecutaría la copia cada día a las 2:00. El único requisito es que el disco externo esté
montado en /mnt/disco-externo/ antes de que se ejecute la tarea.