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