Os dejo un ejemplo de una copia de seguridad con mysqldump y tar:
#!/bin/bash
WEBAPPS_DIR=~/webs
BACKUP_DIR=~/backup
BACKUP_PSW_FILE=~/copias/.backup_passwd
OLD_IFS="$IFS"
IFS=$'\n'
rm -rf $BACKUP_DIR/*
for LINE in `cat $BACKUP_PSW_FILE`; do
IFS=' '
ARRAY=($LINE)
APP_NAME=${ARRAY[0]}
APP_DIR=$WEBAPPS_DIR/$APP_NAME
DB_TYPE=`echo ${ARRAY[1]} | tr '[:lower:]' '[:upper:]'`
DB_NAME=${ARRAY[2]}
DB_USER=${ARRAY[3]}
DB_HOST=${ARRAY[4]}
DB_PASS=${ARRAY[5]}
DB_SQL="${APP_NAME}.sql"
echo "Backup Directorio: $APP_NAME"
tar czfP $BACKUP_DIR/$APP_NAME.tar.gz $APP_DIR ;
# Comprobamos si tiene BD para hacer el backup
if [[ ! -z "$DB_TYPE" ]] && [[ ! -z "$DB_USER" ]] && [[ ! -z "$DB_HOST" ]] && [[ ! -z "$DB_PASS" ]]; then
if [[ $DB_TYPE == "M" ]];then
echo "Backup Linux BD: $DB_NAME - $APP_NAME"
mysqldump $DB_NAME -u$DB_USER -h $DB_HOST -p$DB_PASS > $BACKUP_DIR/$DB_SQL
fi
tar czfP $BACKUP_DIR/$DB_SQL.tar.gz $BACKUP_DIR/$DB_SQL
rm -rf $BACKUP_DIR/$DB_SQL
fi
done
IFS="$OLD_IFS"
Fichero de contraseñas de ejemplo:
proyecto1.com M BD1 Usuario_BD1 host_BD1 pass_BD1 proyecto2.com M BD2 Usuario_BD2 host_BD2 pass_BD2 proyecto3.com M BD3 Usuario_BD3 host_BD3 pass_BD3 proyecto4.com
Y aquí una copia de esos servidores a una NAS (concretamente un servidor QNAP):
#!/bin/sh
HOST1='servidor1.com'
USUARIO1='usuario_servidor1'
HOST2='servidor2'
USUARIO2='usuario_servidor2'
VERSION_DIA=$(date +"%d")
VERSION_MES=$(date +"%m")
VERSION_ANO=$(date +"%y")
CARPETA_DIA="diario_$VERSION_DIA/"
CARPETA_MES="mensual_$VERSION_MES/"
CARPETA_ANO="anual_$VERSION_ANO/"
DESTINO='/share/Backup/webs/'
# Error and logging functions
LOG_C="/sbin/write_log"
EC_C="/bin/echo"
LEVEL=3
error ()
{ $EC_C -e "ERROR $1" ; if test "$LEVEL" -gt 0 ; then $LOG_C "Webs Backup: ERROR $1" 1 ; fi ; exit 1 ; }
warn ()
{ $EC_C -e "WARNING $1" ; if test "$LEVEL" -gt 1 ; then $LOG_C "Webs Backup: WARNING $1" 2 ; fi ; }
info ()
{ $EC_C -e "INFO: $1" ; if test "$LEVEL" -gt 2 ; then $LOG_C "Webs Backup: OK $1" 4 ; fi ; }
# Start script
info "Copiando Backups de webs ..."
mkdir -p $DESTINO$CARPETA_DIA
rm -rf $DESTINO$CARPETA_DIA*
info "Copiando ficheros - Servidor- 1"
if rsync -avzhP -e "ssh -oHostKeyAlgorithms=+ssh-dss" $USUARIO1@$HOST1:~/backup/* $DESTINO$CARPETA_DIA; then
info "Backup Successful - Servidor 1"
else
warn "ERROR copiando los ficheros - Servidor 1"
fi
info "Copiando ficheros - Servidor 2"
if rsync -avzhP $USUARIO2@$HOST2:/backup/* $DESTINO$CARPETA_DIA; then
info "Backup Successful - Servidor 2"
else
warn "ERROR copiando los ficheros de - Servidor 2"
fi
if [[ $VERSION_DIA == "01" ]]; then
info "Copiando Backup Mensual ..."
mkdir -p $DESTINO$CARPETA_MES
rm -rf $DESTINO$CARPETA_MES*;
cp $DESTINO$CARPETA_DIA* $DESTINO$CARPETA_MES ;
if [[ $VERSION_MES == "01" ]]; then
info "Copiando Backup Anual ..."
mkdir -p $DESTINO$CARPETA_ANO
rm -rf $DESTINO$CARPETA_ANO*;
cp $DESTINO$CARPETA_DIA* $DESTINO$CARPETA_ANO ;
fi
fi






Comentarios recientes