Respaldo de todas las bases de datos del servidor (script)

Mensajes
21
Puntuación de reacción
0
Bueno, toca una mejora del script de respaldos de BDS Que he hecho hace un par de meses y que ya he probado en más de 30 servidores, varios cpanel, varios, plesk varios ispconfig y 1 directadmin ya que hasta hoy añadi soporte para directadmin..

Es igual que el SK-serverUp, pero le quiete la función de transferir archivos por Rsync y LFTP, me di cuenta que era bastante liosa la configuración y que es más fácil hacer un simple cron con rsync para transferir las bases de datos en vez de editar el archivo de configuración que tenia el script..
Ahora el script solo respalda bases de datos, se puede ejecutar directamente como ./script.sh o bien hacer un cron, por defecto esta configurado para guardar 5 días de bases de datos, comprimidas en gz.
Antes que nada se tiene que editar esta linea:
Código:
#################
servertype=normal # Opciones: normal, cpanel, plesk, ipsconfig, directadmin
#################
El script saca la clave automáticamente, o sea que no hay que escribir la clave en el archivo de configuración por seguridad, al menos que no se tenga ningún panel y tampoco seteado el .my.cnf con la clave ahí si habría que escribir la clave... dejando servertipy con la opción normal y luego escribiendo la clave unas lineas más abajo:
Código:
mypass="pass" # Root Password
Por lo demás se puede editar el tiempo que guarda los backups y la ruta donde se guardan.
Código:
wget http://mirror.skamasle.com/scripts/skdumpbd.sh
Código:
chmod +x skdumpbd.sh
Código:
./skdumpbd.sh

El script aunque no recomiendo que lo copien y peguen desde aquí si no que lo bajen por los saltos de linea:

Código:
#!/bin/bash
# Respaldamos todas las bases de datos del servidor, 
# Creamos un archivo con el log, 
# 
# v0.3 beta Añadido soporte a directadmin.
# 9 de oct del 2014
# Maks Skamasle | Skamasle.com | yo@skamasle.com | 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. [url]http://www.gnu.org/licenses/[/url]
# Bajo licencia GNU GPL [url]http://www.gnu.org/licenses/[/url] se distribuye sin ninguna garantía.
# Actualizaciones  y más: [url]http://kb.skamasle.com/2014/respaldar-todas-las-bases-de-datos-backup-all-data-bases-plesk-cpanel-ispconfig/[/url]
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=ispconfig # 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

for db in $lists
do
# el "yes |" sobre escribe los archivos si ya existen de un backup anterior (por si se ejecuta dos veces)
		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
done
echo "Backup completo!" >> $logfile
echo $fecha >> $logfile
echo "Puedes revisar el log en $logfile y el errorlog en /tmp/skdump_errorlog"
Más info: Respaldar todas las bases de datos | Backup All Data Bases: Plesk, cPanel, Ispconfig, DirectAdmin | Base de Conocimientos
 
Mensajes
180
Puntuación de reacción
0
Buen script para hacer backups a diario y rotarlos, yo añadiria justo esa funcion de rotado y ampliaria la lista de Cpanels a los que hace respaldo.
Buen aporte!
 
Mensajes
21
Puntuación de reacción
0
Buen script para hacer backups a diario y rotarlos, yo añadiria justo esa funcion de rotado y ampliaria la lista de Cpanels a los que hace respaldo.
Buen aporte!

HOla Madrid, el script funciona con cualquier panel y cualquier servidor, si le pones la clave de root dentro en las opciones, en cuanto a lo de rotarlas, para eso es el script, hace respaldo y rota, o sea guarda los días que quieres y luego va borrando las bds más viejas. por defecto guarda 5 días de backups.
 
Arriba