
Cuáles son las cualidades que se le puede pedir a un sistema de backup?
- Copias locales y remotas.
- Backups incrementales.
- Backups completos.
- Bajo ancho de banda en caso de copias remotas.
- Fácil de restaurar.
- Copias de sistemas Windows (Deltacopy) y Linux.
La herramienta "rsync" es la navaja suiza que nos permitirá hacer todo esto sin esfuerzo, simplemente indagando un poco en su sintaxis.
Para ahorraros un poco de trabajo, en este post os presento un sencillo script que os permitirá realizar backups diarios en una memoria USB flash o disco externo, pudiendo configurar cuántos días queremos retener la información.
Funcionamiento
Para este sencillo script vamos a utilizar una combinación de las siguientes opciones de rsync:
- -a: Modo archivo. Combinación de opciones que facilitan la copia de archivos y sus propiedades (-rlptgoD (no -H,-A,-X))
- -v: Verbosidad activa para ver todo el proceso en pantalla.
- --delete: Fuerza el borrado de los ficheros que ya no existen.
- --link-des: Crea un enlace físico en vez de copiar el fichero si el fichero no se ha modificado a partir un directorio inicial con el que comparar los ficheros. Esta es la opción que crea la magia de rsync.
Las variables configurables de este script son:
- DAYS: Número de días de reciclado de los backups.
- SOURCE_DIR: Directorio que contiene los ficheros que queremos copiar.
- BACKUP_DIR: Ruta del punto de montaje de la unidad externa y directorio donde queremos la copia.
Este script creará tantos directorios como días hayamos configurado daily.0 -> daily.N. En cada uno de los directorios encontraremos todo el contenido de la copia de ese mismo día, con la ventaja que los ficheros que no han sido modificados entre los directorios de los diferentes días, solo habrá un fichero real y todos los demás serán enlaces físicos al original que no ocupan espacio en disco.
En el momento que un fichero se modifique, se copiará de nuevo en vez de crear un enlace físico, por lo que nunca tendremos 2 ficheros iguales que ocupen espacio en nuestro disco de copias.
#!/bin/bash
readonly DAYS=30
readonly SOURCE_DIR="/folder/to/backup"
readonly BACKUP_DIR="/path/to/my/external/memory"
rm -rf "${BACKUP_DIR}/daily.${DAYS}"
for (( c=DAYS-1; c>=0; c--))
do
plusone=$(expr $c + 1)
mv "${BACKUP_DIR}/daily.${c}" "${BACKUP_DIR}/daily.${plusone}"
done
rsync -av --delete "$SOURCE_DIR" --link-dest "${BACKUP_DIR}/daily.1" "${BACKUP_DIR}/daily.0"
Tarea de Cron
Para que el script se ejecute diariamente, crearemos una tarea de cron.
En mi caso, lanzo la tarea de backup diariamente a las 22:05, una vez asegurado que he terminado mi trabajo diario.
Abrimos el editor de tareas de cron desde el terminal de Linux:
crontab -e
Y suponiendo que nuestro script se llama backup.sh, escribimos la siguiente línea en la lista de tareas:
5 22 * * * /path/to/script/backup.sh
Si todo ha ido bien ya tendremos nuestras copias de seguridad en marcha. Espero que os sea útil.
- Inicie sesión o registrese para enviar comentarios