= Protocolo de Backup
* master -> servidor que hace las copias de seguridad
* esclavo(s) -> servidor que se deja hacer las copias de seguridad
== esclavo
* (1) crear cuenta específica para backups: ''$ useradd -c "Usuario de backup" -m -d /home/bck bck''
* (4) crear directorio de ficheros de backups, configurar el ''bck.ini''
* (5) configurar en la cuenta de ROOT los cron a ejecutar
* 01:00 -> eliminar ficheros de backup anteriores a 1 mes: ''00 01 * * * find /home/bck/backups -type f -mtime +30 -exec rm -f {} \; > /dev/null 2>&1''
* 02:00 -> volcado logs?
* 03:00 -> volcado TAR : ''00 03 * * * /home/bck/bck-files.sh > /dev/null 2>&1''
* 03:45 -> volcado BBDD: ''45 03 * * * /home/bck/bck-mysql.sh > /dev/null 2>&1''
* 04:15 -> encriptación si es necesaria: ''15 04 * * * /home/bck/bck-gpg.sh > /dev/null 2>&1''
== master
* (0) [[linux:ssh:start|crear certificado]]
* (2) copiarlo en el servidor remoto, en la cuenta creada a tal efecto: ''$ copy-ssh-id -i rsa_192.168.3.199.pub bck@192.168.3.163''
* (3) copiar los scripts de backup: ''$ scp -i rsa_192.168.3.199 /home/bck/bck* bck@192.168.3.163:/home/bck''
* (6) generar nuevo script de conexión y descarga de archivos del esclavo
* ¿sincronización o mantener histórico en master?
* en esclavo solo los últimos 30 días
== scripts
# BACKUP FILES
# directorios de los que hacer backup, separado por espacio, sin / final
LISTA="/etc /home/mate"
# RUTAS
# Local Directory for Dump Files
LOCALDIR=/home/bck/
# BDD
# Hostname
DBHOST='localhost'
# dbuser
DBUSER='root'
# dbpass
dbpasswd=''
# MISCELANEA
# Nombre del servidor
HOSTNAME='pandora'
# Estampacion de fecha
FECHA=`eval date +%y%m%d`
#!/bin/bash
#
# file system backup
#
source /home/bck/bck.ini
# crea un tar de los directorios especificados en LISTA
for directorio in $LISTA
do
DESTINO=`echo $directorio | sed -e 's/\//-/g'`
tar zcpf $LOCALDIR$FECHA-$HOSTNAME$DESTINO.tar.gz $directorio/*
done
exit 0
#!/bin/bash
FICHEROS=`ls *.tar.gz`
# FECHA=`eval date +%y%m%d`
for FICHERO in $FICHEROS
do
#encripta
gpg -r "Miguel Angel Torres" --encrypt $FICHERO
# borrado fichero original
# rm -f ~/$FICHERO
# renombrado
# mv $FICHERO.gpg $FECHA-$FICHERO.gpg
# borrado fichero encriptado
# rm -f $FECHA-$FICHERO.gpg
done
#!/bin/bash
#
# APP
#
source /home/bck/bck.ini
# DBS=`mysql -u$DBUSER -h$DBHOST -e"show databases"`
DBS=`mysql -u$DBUSER -p"$DBPASSWD" -h"$DBHOST" -e"show databases"`
# existe version SED para eliminar /Database/
for DATABASE in $DBS
do
if [ $DATABASE != "Database" ]; then
FILENAME=$FECHA-$HOSTNAME-mysql-$DATABASE.sql.gz
mysqldump -u$DBUSER -p"$DBPASSWD" -h"$DBHOST" $DATABASE | gzip --best > $LOCALDIR$FILENAME
fi
done
chmod 400 $LOCALDIR*.gz
#tar --remove-files -cf $TARPREFIX-$SUFFIX.tar $SUFFIX-*.gz
tar --remove-files -cf $LOCALDIR$FECHA-$HOSTNAME-mysql.tar $LOCALDIR$FECHA-$HOSTNAME-mysql*.gz
exit 0
== mejoras
* parametrizar ficheros que se encriptan
* quitar GZIP del mysqldump y hacer un TAR -cz ¿?