Copias de seguridad en Linux con rsync: la receta mínima

Copias de seguridad en Linux con rsync: la receta mínima

No hace falta un programa de copias de seguridad complicado para proteger un servidor pequeño o un equipo Linux de casa. Con rsync, un script de diez líneas y un temporizador tienes copias incrementales con historial. Esta es la receta que usamos.

La idea: instantáneas con enlaces duros

rsync tiene una opción, --link-dest, que compara con la copia anterior y, para los ficheros que no han cambiado, crea un enlace duro en lugar de copiarlos otra vez. Resultado: cada día tienes una carpeta que parece una copia completa, pero solo ocupa lo que ha cambiado.

El script

#!/bin/sh
set -eu
ORIGEN="/home /etc /srv"
DESTINO="/mnt/copias"
HOY=$(date +%F)
rsync -a --delete \
  --link-dest="$DESTINO/ultima" \
  $ORIGEN "$DESTINO/$HOY/"
ln -sfn "$DESTINO/$HOY" "$DESTINO/ultima"
# Conserva 30 días
find "$DESTINO" -maxdepth 1 -type d -name '20*' -mtime +30 -exec rm -rf {} +

Guárdalo como /usr/local/bin/copia.sh y dale permisos de ejecución.

Programarlo

Con cron, a las tres de la madrugada:

0 3 * * * /usr/local/bin/copia.sh >> /var/log/copia.log 2>&1

Si prefieres systemd, un servicio oneshot más un temporizador con OnCalendar=*-*-* 03:00 y Persistent=true, que ejecuta la copia al arrancar si el equipo estaba apagado a esa hora.

Tres reglas que no nos saltamos

  1. Una copia en el mismo disco no es una copia. El destino debe ser otro disco, y al menos una vez por semana, otro lugar.
  2. Prueba a restaurar. Una vez al mes recuperamos un fichero al azar. Una copia que no se ha restaurado nunca es una esperanza, no una copia.
  3. Las bases de datos, aparte. Copiar los ficheros de una base de datos en uso puede darte una copia corrupta. Haz antes un volcado (pg_dump, mysqldump) y copia el volcado.

¿Y fuera de casa?

El mismo script sirve para un destino remoto cambiando DESTINO por usuario@servidor:/ruta y usando claves SSH. Si quieres cifrado en el destino y deduplicación entre equipos, el siguiente paso natural es BorgBackup o restic.