Respaldar todas las bases de datos | Backup All Data Bases: Plesk, cPanel, Ispconfig, DirectAdmin

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
Maks Skamasle (123 Posts)

Maks Skamasle, sysadmin, fotógrafo aficionado y me gusta el tomar té por las madrugadas cuando no hay ruido ni sol.