Cuando deseamos respaldar una aplicación o sitio web que es muy pesado usamos respaldos incrementales y no diferenciales para ahorrar espacio de almacenamiento.
El siguiente es un script que muestra como hacer un respaldo incremental con una política de retención de 30 días usando rsync.
#!/bin/sh
#La fecha de hoy
TODAY=`date '+%d-%m-%Y'`
#La fecha de ayer
DAY1=`date '+%d-%m-%Y' -d "1 day ago"`
#La fecha hace 30 dias
DAY30=`date '+%d-%m-%Y' -d "30 days ago"`
#Directorio de origen
SRC="/var/www/htdocs/mi_sitio_web"
#Directorio de destino
TRG="/backup/mi_sitio_web/$TODAY"
#Directorio de enlace
LNK="/backup/mi_sitio_web/$DAY1"
#Eliminar el respaldo de hace 30 dias en caso de existir
if [[ -d /backup/mi_sitio_web/$DAY30 ]]; then
rm -rf /backup/mi_sitio_web/$DAY30
fi
#Ejecutar respaldo incremental
rsync -avh --delete --link-dest=$LNK $SRC $TRG
*Nota: Este script asume que ya tienes un respaldo completo en el directorio /backup/mi_sitio_web/
Explicación:
La parte fundamental en este script es la opción --link-dest. El uso común de rsync es de las siguientes 2 formas:
rsync -a /alfa /beta
Este comando copia el directorio alfa y todo su contenido dentro del directorio beta
rsync -a /alfa/ /beta
Este comando copia el contenido del directorio alfa dentro del directorio beta
rsync compara el contenido del directorio de origen contra el directorio de destino y copia las diferencias haciendo una sincronización del contenido pero, cuando usamos la opción --link-dest le decimos a rsync que compare contra un directorio diferente para hacer la sincronización. Ejemplo
rsync -a --link-dest=/gama /alfa /beta
En este ejemplo le estamos diciendo a rsync que compare a alfa contra gama y sincronice en “beta” haciendo un enlace entre ellos. Usando esto a nuestro favor es como logramos hacer respaldos incrementales utilizando rsync.
Deja tus comentarios y/o sugerencias

Leave a Reply