Backup rotacional con opciones de backup remoto

by

Backup rotacional con opciones de backup remoto

Un script de ejemplo de backup rotacional con backup remoto


#!/bin/sh
# Copia de seguridad Rotacional con Copia de seguridad remota
# Version 1.1
# Fire Eater
# Feburary 4, 2006
# Liberado bajo Licencia GPL- http://www.fsf.org/licensing/licenses/gpl.txt
#############################################################
#
SERVER_HOSTNAME="`Nombre PC`"


BACKUP_UID="Tu usuario de copia de seguridad"
BACKUP_GID="tu usuario de grupo de copia de seguridad"
#
ROOT_BACKUP_DIR="/tu/directorio/de copia de seguridad"
CONF_DIR="$ROOT_BACKUP_DIR/etc"
#Example: HTTPD, BIND, MYSQL
BACKUP_TYPE="HTTPD"

#
###############################
# Copia de seguridad Remoto #
###############################
#
## Use Rsync
# Necesitará configurar una llave basada en el login de ssh.

USE_RSYNC="n"
RSYNC_HOST="tu servidor"
SSH_RSYNC_USER="tu usuario ssh"
SSH_RSYNC_DEST_DIR="/tu/carpeta/remota/$Nombre_del_Servidor"

## SCP Información y Destino
# Necesitará configurar una llave basada en el login de ssh.
USE_SCP="n"
SCP_HOST="tu servidor"
SCP_USER="usuario ssh"
SCP_REMOTEDIR="/tu/carpeta/remota/$Nombre_Servidor"

## FTP
USE_FTP="n"
# Syntax para FTP_SERVER: ftp://user:pass@ftp.server.com/folder (SIN Rastreo /)
FTP_SERVER="ftp://"

## E-Mail Información y Destino
EMAIL_INFO="n"
BACKUP_EMAIL="Dirección e-mail"

#################################################
# Configurando Directorio/Chequeo de Archivos #
#################################################

if [ ! -d $CONF_DIR ] ; then
mkdir -p $CONF_DIR
fi

if [ ! -f $CONF_DIR/homedirs ] ; then
echo "No se encontro Lista de Directorios Home"
echo "Por favor cree $CONF_DIR/homedirs"
exit
fi

#############################
# Configuración Rotacional #
#############################
#
BACKUP_DIR=$ROOT_BACKUP_DIR/$BACKUP_TYPE
BACKUP_DEST="$BACKUP_DIR/backup.0"
BACKUP="$BACKUP_DIR/backup.0"
BACKUP1="$BACKUP_DIR/backup.1"
BACKUP2="$BACKUP_DIR/backup.2"
BACKUP3="$BACKUP_DIR/backup.3"
BACKUP4="$BACKUP_DIR/backup.4"
BACKUP5="$BACKUP_DIR/backup.5"
BACKUP6="$BACKUP_DIR/backup.6"

if [ ! -d $BACKUP_DEST ] ; then
mkdir -p $BACKUP_DEST
fi

if [ ! -d $BACKUP ] ; then
mkdir $BACKUP_DIR/backup.0
fi

if [ ! -d $BACKUP1 ] ; then
mkdir $BACKUP_DIR/backup.1
fi
if [ ! -d $BACKUP2 ] ; then
mkdir $BACKUP_DIR/backup.2
fi
if [ ! -d $BACKUP3 ] ; then
mkdir $BACKUP_DIR/backup.3
fi
if [ ! -d $BACKUP4 ] ; then
mkdir $BACKUP_DIR/backup.4
fi
if [ ! -d $BACKUP5 ] ; then
mkdir $BACKUP_DIR/backup.5
fi
if [ ! -d $BACKUP6 ] ; then
mkdir $BACKUP_DIR/backup.6
fi

/bin/rm -rf $BACKUP_DIR/backup.6
mv $BACKUP_DIR/backup.5 $BACKUP_DIR/backup.6
mv $BACKUP_DIR/backup.4 $BACKUP_DIR/backup.5
mv $BACKUP_DIR/backup.3 $BACKUP_DIR/backup.4
mv $BACKUP_DIR/backup.2 $BACKUP_DIR/backup.3
mv $BACKUP_DIR/backup.1 $BACKUP_DIR/backup.2
mv $BACKUP_DIR/backup.0 $BACKUP_DIR/backup.1

if [ ! -d $BACKUP ] ; then
mkdir $BACKUP_DIR/backup.0
fi

#
#####################################################
# Comenzar la copia de seguridad #
#####################################################
START_TIME=`date +%a-%D-@-%X-%Z`
#####################################################
#
HTTP_CONF_DIR="/etc/httpd"
USERS_HOME_DIRECTORY="/home"
USERS_LIST="$CONF_DIR/homedirs"
DATENAME=`date +%Y%m%d`
START_TIME=`date +%a-%D-@-%X-%Z`
#
echo "Haciendo copia de seguridad a los directorios de Configuración HTTPD "
tar cfj $BACKUP_DEST/httpd-$DATENAME.tar.bz2 $HTTP_CONF_DIR >> /dev/null
#
echo "Haciendo copia de seguridad a los Directorios Home"
#
for USER_DIR in `cat $USERS_LIST`;
do
tar cfj $BACKUP_DEST/$SERVER_HOSTNAME-$USER_DIR--$DATENAME.tar.bz2 $USERS_HOME_DIRECTORY/$USER_DIR >> /dev/null
done
#
#Estableciendo Permisos
chown $BACKUP_UID:$BACKUP_GID $BACKUP_DIR

#
##################################
END_TIME=`date +%a-%D-@-%X-%Z`
###################################################
# Fin de la copia de seguridad #
###############@@@@################################
#############################################
# Opciones de la copia de seguridad remota #
#############################################

clear
#
if [ $USE_RSYNC = y ] ; then
echo "Preformando la copia de seguridad remota via Rsync"
echo ""
su -l $BACKUP_UID -c "rsync -az --stats --partial -e ssh $BACKUP_DIR $SSH_RSYNC_USER@$RSYNC_HOST:$SSH_RSYNC_DEST_DIR" 2>&1
echo "$BACKUP_TYPE backup ha sido Rsynced a $RSYNC_HOST"
echo ""
else
echo "Rsync no esta encendido"
fi
#
if [ $USE_SCP = y ] ; then
echo "Preformando la copia de seguridad remota via SCP"
echo ""
scp $BACKUP_DEST/$SERVER_HOSTNAME-$USER_DIR--$DATENAME.tar.bz2 $SCP_USER@$SCP_HOST:$SCP_REMOTEDIR
echo ""
echo "$BACKUP_TYPE la copia de seguridad ha sido subido a $SCP_HOST via scp"
else
echo "SCP no esta encendido"
fi
#
if [ $USE_FTP = y ] ; then
echo "Preformando la copia de seguridad Remota via FTP"
echo ""
curl -T $BACKUP_DEST/$SERVER_HOSTNAME-$USER_DIR--$DATENAME.tar.bz2 $FTP_SERVER/$SERVER_HOSTNAME-$USER_DIR--$DATENAME.tar.bz2
echo "$BACKUP_TYPE la copia de seguridad ha sido subida via FTP a $FTP_SERVER"
else
echo ""
echo "FTP no esta encendido"
echo ""
fi

#
#########################################
# Resultados de la Copia de Seguridad #
#########################################
#

echo "El actual $BACKUP_TYPE backup para $SERVER_HOSTNAME ha sido completado y esta localizado en: $BACKUP_DEST"
echo ""
echo "Total de espacio de disco usado para la copia de seguridad $BACKUP_TYPE."
echo "Size - Location"
echo "`du -hs "$BACKUP_DIR"`"
echo ""
echo "Total de disco usado para la actual copia de seguridad $BACKUP_TYPE."
echo "Tamaño - Localización"
echo "`du -hs "$BACKUP_DEST"`"
#

######################
# Resultados Email #
######################
#
if [ $EMAIL_INFO = y ] ; then
echo "$SERVER_HOSTNAME $BACKUP_TYPE Sumario de la copia de seguridad" >> /tmp/emailmsg.txt
echo "" >> /tmp/emailmsg.txt
echo "Hora inicio de la copia de seguridad: $START_TIME" >> /tmp/emailmsg.txt
echo "Hora de terminación de la copia de seguridad: $END_TIME" >> /tmp/emailmsg.txt
echo "" >> /tmp/emailmsg.txt
echo "Rsync="$USE_RSYNC >> /tmp/emailmsg.txt
echo "SCP="$USE_SCP >> /tmp/emailmsg.txt
echo "FTP="$USE_FTP >> /tmp/emailmsg.txt
echo "" >> /tmp/emailmsg.txt
echo "Espacio total de disco usado para la copia de seguridad completa$BACKUP_TYPE." >> /tmp/emailmsg.txt
echo "" >> /tmp/emailmsg.txt
echo "Localización - Tamaño" >> /tmp/emailmsg.txt
echo "`du -hs "$BACKUP_DIR"`" >> /tmp/emailmsg.txt
echo "" >> /tmp/emailmsg.txt
echo "Total de disco usado para la actual copia de seguridad $BACKUP_TYPE." >> /tmp/emailmsg.txt
echo "" >> /tmp/emailmsg.txt
echo "Localización - Tamaño" >> /tmp/emailmsg.txt
echo "`du -hs "$BACKUP_DEST"`" >> /tmp/emailmsg.txt
echo "" >> /tmp/emailmsg.txt
#

cat /tmp/emailmsg.txt | mail -s"$BACKUP_TYPE Copia de seguridad ejecutada por $SERVER_HOSTNAME at $END_TIME" $BACKUP_EMAIL
rm -f /tmp/emailmsg.txt
else
echo "E-Mail no esta encendido"
fi
exit

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s


A %d blogueros les gusta esto: