Hoy he comenzado a hacer una modificación del script de respaldo que hice hace algunos meses: SK- Server UP: Respaldar bases de datos y archivos
Es un script que he usado mucho y he visto que la opción de transferencia la uso poco y que aveces tengo inconvenientes por que tengo que buscar la clave de plesk o el ispconfig, así que he hecho unas modificaciones y he dejado el script modificado solo para respaldar bases de datos y para agilizar el proceso que detecte automáticamente la clave de plesk, cpanel e ispconfig.
Lo he probado en 3 servidores ( plesk, cpanel e ispconfig ( añadido soporte a DirectAdmin ) y funciona de maravilla, aunque, aún tengo pensado hacerle muchas mejoras, más que nada para agilizar el procesos, quiero hacer el script interactivo, que haya que descargarlo y ejecutarlo y sobre la marcha pregunte por el servidor o lo detecte de una vez, es fácil de hacer pero lleva su tiempo, por ahora dejo la beta 1 que es la que seguiré usando y espero que en los próximos días tenga un rato para hacer las mejoras y el script me ahorre mucho más tiempo… que básicamente es evitar editar el archivo siempre que lo use, pero ya funciona bien 🙂
Backup All Data Bases: Ispconfig, cPanel, DirectAdmin, Plesk
skdumpbd.sh
####
# 21 Dic 2014: añadido conteo de bases de datos.
# 5 Sep solucionados unos bugs en beta 0.2, se a añadido segundos y minutos a los nombres para poder crear varios backups seguidos, quitando la restricción de 1 backup diario, si se hacía más de un backup pedía borrar o sobre escribir el anterior.
# 9 de octure añadido soporte para directadmin beta 0.3
###
Editamos las lineas:
Expira, por si queremos ejecutarlo en un cron.
servertype aquí ponemos normal, si queremos definir la clave más abajo, si no podemos plesk, cpanel o ispconfig para no escribir la contraseña en el script.
backupin una carpeta vacía donde se guardarán los backups.
Respaldar todas las bases de datos del servidor
#!/bin/bash
# Respaldamos todas las bases de datos del servidor,
# Creamos un archivo con el log,
#
# v0.4 Cambios menores, añadido conteo de bases de datos.
# 21 de dic del 2014
# Maks Skamasle | Skamasle.com | [email protected] | twiter @skamasle
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details. http://www.gnu.org/licenses/
# Bajo licencia GNU GPL http://www.gnu.org/licenses/ se distribuye sin ninguna garantía.
# Actualizaciones y más: http://kb.skamasle.com/2014/respaldar-todas-las-bases-de-datos-backup-all-data-bases-plesk-cpanel-ispconfig/
backupin=/root/sk-mysqldump # Ruta para guardar los backup
expira=5 # Número de días que se retienen los backups de MSYQL en local (archivos mayores a 2 días se borran antes del backup)
# Datos de mysql.
# Tipo de servidor.
# Detectamos el tipo de servidor, plesk, cpanel o ispconfig para obtener automaticamente la clave de la base de datos.
# Si el servidor no es plesk, cpanel o ispconfig dejamos como "normal" y definimos la clave en la parte de abajo en mypass.
#################
#################
servertype=cpanel # Opciones: normal, cpanel, plesk, ipsconfig, directadmin
#################
#################
myuser="root"
mypass="pass" # Root Password
myhost="localhost"
if [ $servertype = plesk ]; then
myuser="admin"
mypass=`cat /etc/psa/.psa.shadow`
fi
if [ $servertype = cpanel ]; then
# cPanel algunos servidores en el .my.cnf tienen " en el pass y otros no así que hay que
# editar el cut -d '"' en caso de no tener comillas cambiar el " por un =, las versiones viejas no tiene
# comillas.... las nuevas luego de 11.32 suelen tenerlo
mypass=`cat /root/.my.cnf |grep password | cut -d '"' -f2`
fi
if [ $servertype = ispconfig ]; then
mypass=`cat /usr/local/ispconfig/server/lib/mysql_clientdb.conf |grep password | cut -d "'" -f2`
fi
if [ $servertype = directadmin ]; then
myuser="da_admin"
mypass=`cat /usr/local/directadmin/conf/mysql.conf |grep passwd | cut -d "=" -f2`
fi
MKDIR=/bin/mkdir
TOUCH=/bin/touch
logfile=/root/SK-BackupLog.txt
fecha=$(/bin/date)
if [ ! -d $backupin ]; then
$MKDIR $backupin
else
find $backupin -type d -mtime +$expira | xargs rm -Rf
fi
if [ ! -e $logfile ]; then
$TOUCH $logfile
fi
carpetabk=$backupin/`date +%Y-%m-%d-h%H%M-%S`
if [ ! -d $carpetabk ]; then
$MKDIR -p $carpetabk
fi
# no hace falta cambiarlo
lists=$(echo "show databases;" | mysql -h $myhost -u $myuser -p$mypass | grep -v Database | grep -v information_schema | grep -v performance_schema | grep -v phpmyadmin | grep -v mysql)
echo "Comenzando el respaldo de las bases de datos" >> $logfile
tput setaf 1
tput bold
echo "Comenzando el respaldo de las bases de datos"
tput sgr0
echo $fecha >> $logfile
C=0
for db in $lists
do
tput setaf 2
echo "Respaldo base de datos $db"
mysqldump -h $myhost -u$myuser -p$mypass --opt $db > $carpetabk/$db.sql 2>/tmp/skdump_errorlog
echo "Respaldando $db" >> $logfile
tput setaf 3
echo "Comprimiendo (gzip) base de datos --- $db"
tput sgr0
gzip $carpetabk/$db.sql
let "C = $C + 1"
done
echo "Backup completo, se respaldaron $C Bases de Datos!" >> $logfile
echo $fecha >> $logfile
echo "Puedes revisar el log en $logfile y el errorlog en /tmp/skdump_errorlog"
tput setaf 2
echo "Se respaldaron $C Bases de datos"
tput sgr0
wget http://mirror.skamasle.com/scripts/skdumpbd.sh
chmod +x skdumpbd.sh
./skdumpbd.sh