!/bin/bash # # Autor : FG 29.03.2011 # Modif.: FG 30.03.2011 # Script para realizar backup de la base # de datos MySql # # Crontab: # m h dom mon dow command #00 04 01 * * /usr/local/bin/backup.sh # # Configuracion base de datos DbUser=root DbHost=127.0.0.1 DbPass=1234 DbName=pruebas # Configuracion numero maximo de backups a guardar MaxBackups=7 # Configuracion de comandos MySqlDump_cmd=/usr/bin/mysqldump Tar_cmd=/bin/tar LOCAL_SCP_CMD=/usr/bin/scp LOCAL_SSH_CMD=/usr/bin/ssh # Configuracion de directorios DirTmp=/tmp DirBackup=/backups # Configuracion archivo de backup HOY=`date +"%Y-%m-%d_%H_%M_%S"` FileNameBackup=backup_$HOY # Configuracion archivos temporales y backups (Ojo no cambiar la extension del archivo) FileTmpBackup=$DirTmp/$FileNameBackup.sql FileBackup=$DirBackup/$FileNameBackup.tgz BackupsFilePath=$DirTmp/backupspaths # Configuracion SSH para enviar backup a otro servidor ENABLED_REMOTE_BACKUP_SSH=1 CLAVE_SSH=/usr/local/bin/ssh_keys/id_rsa IP_REMOTE_SSH=192.168.0.1 PORT_REMOTE_SSH=22 USER_SSH=root HOY_SSH=`date +"%u"` FileNameBackup_SSH=backup_$HOY_SSH.tgz REMOTE_FILE_SSH=/ backups/ $FileNameBackup_SSH LOCAL_FILE_SSH=$FileBackup # Inicio del proceso de backup echo "Generando backup de la base de Datos MySql..." # Comprobacion de existencia de los directorios necesarios if [ ! -d "$DirTmp" ]; then echo "Error, el directorio temporal '$DirTmp' no existe." exit fi if [ ! -d "$DirBackup" ]; then echo "Error, el directorio para las copias '$DirBackup' no existe." exit fi # Crear archivo SQL con estructura y datos de la base de datos MySql $MySqlDump_cmd -u $DbUser --host $DbHost --password=$DbPass $DbName > $FileTmpBackup chmod 777 $FileTmpBackup # Comprime el script de backup de la base de datos MySql $Tar_cmd czvf $FileBackup $FileTmpBackup &> /dev/null rm $FileTmpBackup # Borra los backups antiguos echo "Realizado limpieza de backups antiguos..." find $DirBackup -name '*.tgz' | sort -r > $BackupsFilePath chmod 777 $BackupsFilePath i=1 while read file; do if [ $i -gt $MaxBackups ]; then echo "Eliminando backup antiguo: $file " chmod 777 $file rm $file fi i=`expr $i + 1` done < $BackupsFilePath rm $BackupsFilePath # Envia el backup al servidor remoto si la funcion esta activada if [ $ENABLED_REMOTE_BACKUP_SSH = 1 ]; then echo "Copiando backup al servidor remoto..." $LOCAL_SCP_CMD -P $PORT_REMOTE_SSH \ -i $CLAVE_SSH $LOCAL_FILE_SSH \ $USER_SSH@$IP_REMOTE_SSH:$REMOTE_FILE_SSH fi echo "Terminado de realizar backup de la base de Datos MySql."
Script para realizar backup de base de datos MySql y enviarlo por SSH a otro servidor.
d
Autor: FG
Visto en Crea tu software
Etiquetas:
Administración,
Base de Datos,
Consola,
MySql,
Respaldo de Datos,
Servicios,
Servidor,
SysAdmin,
Terminal
Suscribirse a:
Enviar comentarios (Atom)
0 comentarios:
Publicar un comentario