La seguridad primero

Aunque sean tareas comunes, a veces armarse un script ad-hoc para backups lleva su tiempo. En mi caso necesitaba respaldar el repositorio SVN, varias bases de datos y el www root.

Quizás lo interesante aquí sean 2 cosas:

Por un lado, evitar acumular backups antiguos, con lo cual la primer linea del ejemplo se encargará de quitarlos del medio: El comando find permite definir un parámetro mtime a fin de filtrar solo ciertos archivos con una antigüedad especificada, luego mediante el parámetro exec nos encargamos de invocar al comando rm para que elimine dichos archivos.

Por otro, crear los archivos de forma tal que en el nombre del archivo se almacene la fecha de creación (más bonito para visualizar y almacenar), para esto utilizamos simplemente `date +%F_%T` antes del nombre del archivo.

Aquí un ejemplo de script similar al que uso frecuentemente:

echo ----------------------------
echo REALIZANDO BACKUP...
echo ----------------------------

# Eliminar todos los backups realizados con mas de 5 dias de antiguedad
# find parameters:
# -mtime files data was last modified n*24 hours ago
# -exec execute command (en este caso rm, sin parametros)
find /var/backup/*.zip -mtime +4 -exec rm {} \;

# -------------------- SVN Backup ---------------
# zip parameters:
# -9 compress better
# -q quiet operation
# -r recurse into directories
zip -9 -q -r `date +%F_%T`_repositorios.zip /path_to_svn_repo

# --------------------- BD DUMP -----------------
# pg_dump parameters:
# -h host
# -p port
# -U database username
# -F output format (en este caso plain-text)
# -f output file
pg_dump -h server -p 5432 -U username -F p -f my_database.sql my_database
zip -9 -q `date +%F_%T`_my_database.zip my_database.sql
rm my_database.sql -f

# ----------------- WWWROOT Backup ---------------
zip -9 -q -r `date +%F_%T`_wwwroot.zip /path_to_wwwroot

echo -------------------------------------------
echo FINALIZADO EL PROCESO DE COPIAS DE RESPALDO
echo -------------------------------------------

Luego podemos cronear el backup para que se ejecute todas las noches:

0 23 * * * sh make_backup.sh

Leave a comment

Your comment