Copias de seguridad en Linux

Copias de seguridad en Linux

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

Tags: × ×

Leave a Reply

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*