Bash script para backups incrementales
Reemplazar en los scripts las referencias a:
DIR
: el directorio que queremos backupear/path/to/dir
: la ruta al directorio que CONTIENE aDIR
/path/to/workspace
: la ruta a un directorio que usemos temporalmente para alojar los tar/snar/backup
: un directorio donde se alojan los backups, probablemente un servidor de almacenamiento montado en un directorio localDATE
: una variable que declaro para tener referencia de la fecha y usarla en los nombres de los archivos (no es necesario cambiarla)
Correr por primera vez el script full-back-up.sh a mano para inicializar los archivos incrementales y el snapshot.
Estos scripts sirven principalmente para guardar estados de un directorio de manera incremental. Dicho de otra manera, podemos armar estos scripts para que hagan backup de un sitio que tenemos publicado sin tener que copiar todos los archivos, solo los que hayan cambiado. Ejemplo de las variables de referencia:
DIR
: /var/www/misitio/path/to/dir
: /var/www/path/to/workspace
: /var/backups/sitioweb/backup
: /mount/backupserverNFS
Para que estos scripts tengan sentido habrá que ponerlos en el cron.
Hay que estar atento que la cuenta que genere el crontab tenga permisos de lectura/escritura en los directorios correspondientes.
Luego, el backup full no queremos correrlo muy seguido, en mi caso es cada 10 días a las 3AM (o, según dicen, cada vez que el día del mes es múltiplo de 10). Ej:
0 3 */10 * * /path/to/full-backup.sh
Y para que el incremental se corra todos los días a las 4AM:
0 4 * * * /path/to/incremental-backup.sh
Es importante que corras la primera vez el full-back-up.sh a mano (no esperes que lo haga el cron).
El incremental del tar se puede usar de 2 maneras:
- Creando incrementales directos sobre un full back up (simple)
- Creando niveles de incrementales (menos simple)
En el primer caso, se hace un incremental usando el parametro --listed-incremental
y un archivo de
snapshot (.snar) que se encarga de comparar y definir las diferencias para incluir en el incremental. Para restaurar
DIR
bastará con extraer el full backup y luego el de la fecha a restaurar.
tar -xzpf DIR-20130720-full.tar.gz tar -xzpf DIR-20130724-incremental.tar.gz
En el segundo, el incremental se hace siempre sobre otro incremental. Si bien esta forma da más control sobre
el incremental y el tamaño de archivo, cuando se quiere restaurar DIR
habrá que hacerlo secuencialmente
como están hechos los incrementales. Ejemplo considerando que tenemos 4 incrementales:
tar -xzpf DIR-20130720-full.tar.gz tar -xzpf DIR-20130721-incremental.tar.gz tar -xzpf DIR-20130722-incremental.tar.gz tar -xzpf DIR-20130723-incremental.tar.gz tar -xzpf DIR-20130724-incremental.tar.gz