Como Realizar Respaldos automaticos en servidores Linux
El propósito de esta entrada es tratar un tema importante, como lo es el respaldo de archivos en un servidor Linux.
Cuando se tienen plataformas con bases de datos, además de respaldar los archivos, también se tienen que respaldar las bases de datos. Una política interesante que sigo desde hace tiempo es mantener 3 respaldos el ultimo, el penúltimo y antepenúltimo, gracias a lo cual los vamos rotando a medida que se creen nuevos respaldos.
A continuación pongo un script de ejemplo para respaldar los datos de un sistema de blog, pero puede ser usado análogamente en cualquier sistema:
#!/bin/sh # respaldaXX.sh Script generico para respaldar Base de datos y Archivos, manteniendo 3 respaldos anteriores. # @autor Juan C. Mardones Koning # @version 20.3.2009-00:01 DBNAME="xx_db" DBUSER="xx_usr" DBPASS="my_pass" DBHOST="mysql.my_host.com" DATE=`date +%F_%H-%M` DIRECTORY="/home/my_user/my_plataform" HOME_BACKUP="/home/respaldos/my_plataform" HOME_BACKUP_FILES="/home/respaldos/my_plataform/files" # backup database rm $HOME_BACKUP/antepenultima.sql mv $HOME_BACKUP/penultima.sql $HOME_BACKUP/antepenultima.sql mv $HOME_BACKUP/ultima-*.sql $HOME_BACKUP/penultima.sql mysqldump -u $DBUSER -h $DBHOST -p$DBPASS $DBNAME > $HOME_BACKUP/ultima-$DATE.sql # backup Files rm $HOME_BACKUP_FILES/antepenultima.tar.gz mv $HOME_BACKUP_FILES/penultima.tar.gz $HOME_BACKUP_FILES/antepenultima.tar.gz mv $HOME_BACKUP_FILES/ultima-*.tar.gz $HOME_BACKUP_FILES/penultima.tar.gz tar -czPf $HOME_BACKUP_FILES/ultima-$DATE.tar.gz $DIRECTORY
Una vez tenemos un script de respaldo, es importante activarlo de forma automática, para ello utilizaremos cron. Podemos agregar comandos al cron con el comando crontab -e, que sirve para editar.
La sintaxis es muy sencilla, la podemos ver detalladamente acá, pero un resumen corto nos quedaría así:
##########################################################
#minute (0-59), #
#| hour (0-23), #
#| | day of the month (1-31), #
#| | | month of the year (1-12), #
#| | | | day of the week (0-6 with 0=Sunday) #
#| | | | | commands #
##########################################################
15 02 * * *
Ahora que conocemos la sintaxis de cron, solo basta agregar algo como esto en el archivo de crontab
# Backups JCM # Todos los Lunes a las 1:15 15 1 * * 1 /home/scripts/respaldarBlog.sh # Todos los Martes a las 2:20 20 2 * * 2 /home/scripts/respaldarWiki.sh
Poco entendia del cron y de los comandos para automatizar repaldos, te agradezco la información….
Bye.
De nada, suerte en todo.