OVH Community, your new community space.

[SCRIPT] Backup ISPConfig


djbill
27/06/2016, 10:43
Cita Publicado inicialmente por tonysanchez
Aunque el post es viejo...

Que mania de fusilar script de terceros, publicados con licencia GNU y ser incapaces de poner los créditos.

OpenSOurce noes hacer lo que a uno le da la gana, ni todo es gratis. Es un concpeto que muchos, no llegais a enteder. Os quedais, en el todo es gratis.
Espero que no lo digas por mi script, es producción propia; si piensas que lo he copiado y que se encuentra publicado dime dónde y pondré los créditos.

djbill
25/09/2013, 08:59
Gracias por la aclaracion; tengo pendiente implementar la encriptacion por OpenSSL, que parece muy sencillo.

Saludos.

Guille
24/09/2013, 17:20
Muchas gracias djbill, por compartir tu script.
Yo suprimiria del backup de /etc los ficheros /etc/fstab y /etc/network/interfaces, que al restaurar en otra maquina pueden darte algun que otro susto.
Por otro lado meter archivos gz sin password en sitios remotos creo que es bastante dudoso. Podrias utilizar ccrypt

ccrypt -k mypassword $TMP_DIR/mysql-$i-$FECHA.sql.bz2

cyry
24/09/2013, 12:14
Yo uno no confio en esos 'tools' ya que no son oficiales.
Gracias por el script de todos modos.

djbill
24/09/2013, 11:39
Buenas, a continuacion os dejo un script para realizar backup del panel de control ISPConfig 3.0.5 en Debian 7 que además sube los ficheros a Mega.co.nz como servidor de respaldo de backup (Son 50Gb gratuitos)

Para el funcionamiento del almacenamiento en la nube se necesitan las MegaTool que se pueden obtener de http://megatools.megous.com/

Quedaría pendiente realizar tambien el backup de los directorios de las webs.

Código:
#!/bin/bash
# Script que crea un backup de ISPConfig 3.0.5 en Debian 7

# Definicion de funciones
function log {
        curenttime_x=`date "+%Y-%m-%d %H:%M:%S"`
        echo "$curenttime_x - $1 $2 $3 $4 $5 $6 $7 $8 $9" >> $LOG_DIR/$LOG_FILE
}

function email {
	echo "Subject: `hostname` ISPConfig3 backup `date +'%F'` log" > $TMP_DIR/$EML_FILE
	echo "From: localhost@`hostname`" >> $TMP_DIR/$EML_FILE
	echo "To: $EMAILTO" >> $TMP_DIR/$EML_FILE
	echo "" >> $TMP_DIR/$EML_FILE
	cat $1 $2 $3 $4 $5 $6 $7 $8 $9 >> $TMP_DIR/$EML_FILE
	cat $TMP_DIR/$EML_FILE | /usr/sbin/sendmail -t
	rm -f $TMP_DIR/$EML_FILE 2>/dev/null
}

function check_dirs {
	if [ -d $BACKUP_DIR ]; then
		log "--Directory $BACKUP_DIR exists"
	else
		mkdir -p $BACKUP_DIR
		log "--Directory $BACKUP_DIR created"
	fi
	
	if [ -d $LOG_DIR ]; then
		log "--Directory $LOG_DIR exists"
	else
		mkdir -p $LOG_DIR
		log "--Directory $LOG_DIR created"
	fi
	
	if [ -d $TMP_DIR ]; then
		log "--Directory $TMP_DIR exists"
	else
		mkdir -p $TMP_DIR
		log "--Directory $TMP_DIR created"
	fi
}

#Definicion de variables
#Direccion de email para enviar los log
EMAILTO=tudirecciondecorreo@gmail.com

#define fecha YYYYmmddHHMMSS
FECHA=`date '+%Y%m%d%H%M%S'`

#define backup_dir
BACKUP_DIR=/backup/`hostname`

#define backup_file
BACKUP_FILE=ISPConfig-Backup-`hostname`_$FECHA.tar.gz

#define log_dir
LOG_DIR=$BACKUP_DIR/log

#define log_file
LOG_FILE=ISPConfig-Backup-`hostname`_$FECHA.log

#define tmp_dir
TMP_DIR=$BACKUP_DIR/tmp

#define eml_file
EML_FILE=ISPConfig-Backup-`hostname`_$FECHA.eml

#Ejecucion del backup
# Backup de ficheros de ISPConfig
log "Inicio del Backup"
check_dirs

log "-Backup of "/usr/local/ispconfig" directory..."
tar pcfz $TMP_DIR/ispconfig-software_$FECHA.tar.gz /usr/local/ispconfig 2> /dev/null

# Backup de ficheros de configuracion
log "-Backup of "/etc" directory..."
tar pcfz $TMP_DIR/etc_$FECHA.tar.gz /etc 2> /dev/null

# Backup de BBDD
log "-Backup of MySQL Databases"
for i in `mysql -Bse 'show databases'`; do
	log "--Starting mysqldump of $i"
	mysqldump $i | bzip2 > $TMP_DIR/mysql-$i-$FECHA.sql.bz2
	log "--Dump of $i done"
done
log "Fin del Backup"

# Empaquetado de todos los ficheros de backup
log "Inicio del empaquetado y compresion de todos los ficheros de backup"
tar czvf $BACKUP_DIR/$BACKUP_FILE $TMP_DIR/ispconfig-software_$FECHA.tar.gz $TMP_DIR/etc_$FECHA.tar.gz $TMP_DIR/mysql-*-$FECHA.sql.bz2
log "Fin del empaquetado y compresion de todos los ficheros de backup"

# Copia a CLOUD
log "Copiando $BACKUP_DIR/$BACKUP_FILE a CLOUD en /Root/Backup_`hostname`"
/usr/local/bin/megaput --no-ask-password --no-progress --reload --config=/root/.megarc --path=/Root/Backup_`hostname` $BACKUP_DIR/$BACKUP_FILE 2>/dev/null
log "Finalizada la copia en CLOUD"

# Limpieza de Temporales
log "Borrado de ficheros antiguos y temporales"
find $LOG_DIR -name "ISPConfig-Backup-`hostname`_*.log" -mtime +6 >>$LOG_DIR/$LOG_FILE 2>/dev/null
find $LOG_DIR -name "ISPConfig-Backup-`hostname`_*.log" -mtime +6 -exec rm -f '{}' \; 2>/dev/null
find $TMP_DIR -name "mysql-*-*.sql.bz2" -mtime +6 >>$LOG_DIR/$LOG_FILE 2>/dev/null
find $TMP_DIR -name "mysql-*-*.sql.bz2" -mtime +6 -exec rm -f '{}' \; 2>/dev/null
find $TMP_DIR -name "etc_*.tar.gz" -mtime +6 >>$LOG_DIR/$LOG_FILE 2>/dev/null
find $TMP_DIR -name "etc_*.tar.gz" -mtime +6 -exec rm -f '{}' \; 2>/dev/null
find $TMP_DIR -name "ispconfig-software_*.tar.gz" -mtime +6 >>$LOG_DIR/$LOG_FILE 2>/dev/null
find $TMP_DIR -name "ispconfig-software_*.tar.gz" -mtime +6 -exec rm -f '{}' \; 2>/dev/null
find $BACKUP_DIR -name "ISPConfig-Backup-`hostname`_*.tar.gz" -mtime +6 >>$LOG_DIR/$LOG_FILE 2>/dev/null
find $BACKUP_DIR -name "ISPConfig-Backup-`hostname`_*.tar.gz" -mtime +6 -exec rm -f '{}' \; 2>/dev/null

log "Fin del Script"

#Envio por email del fichero de log.
email $LOG_DIR/$LOG_FILE

exit 0
Fichero de configuracion de MegaTools en "/root/.megarc":

Código:
[Login]
Username=tuusuario
Password=tupassword
Fichero de configuracion de MySQL en "/root/.my.cnf"
Código:
[client]
password=password_root_mysql

[mysqldump]
password=password_root_mysql
Un saludo.