Respaldo rotacional con opciones de respaldo remoto
Un script de ejemplo de respaldo rotacional con opciones de respaldo remoto.
# Respaldo rotacional con opciones de respaldo remoto # Version 1.1 # Fire Eater <LinuxRockz@gmail.com> # Febrero 4, 2006 # Released under the GPL License- http://www.fsf.org/licensing/licenses/gpl.txt ############################################################################## # SERVER_HOSTNAME="`nombre_host`" BACKUP_UID="usuario_respaldo" BACKUP_GID="grupo_usuarios_respaldo" # ROOT_BACKUP_DIR="/tu/directorio/respaldo" CONF_DIR="$ROOT_BACKUP_DIR/etc" #Example: HTTPD, BIND, MYSQL BACKUP_TYPE="HTTPD" # #################### # Respaldo Remoto # #################### # ## Usando Rsync # Usted necesita configurar una llave basada en un login ssh USE_RSYNC="n" RSYNC_HOST="tu_servidor" SSH_RSYNC_USER="tus_usuarios" SSH_RSYNC_DEST_DIR="/tu/carpeta/remota/$SERVER_HOSTNAME" ## SCP Informacion y Destino # Usted necesita configurar una llave basada en un login ssh USE_SCP="n" SCP_HOST="tu_servidor" SCP_USER="usuario_ssh" SCP_REMOTEDIR="/tu/carpeta/remota/$SERVER_HOSTNAME" ## FTP USE_FTP="n" # Sintaxis para FTP_SERVER: ftp://usuario:contrasena@ftp.server.com/carpeta (SIN terminación en /) FTP_SERVER="ftp://" ## Correo Informacion y Destino EMAIL_INFO="n" BACKUP_EMAIL="tu_direccion_de_correo" ##################################################### # Configuracion de la carpeta/Chequeando ficheros # ##################################################### if [ ! -d $CONF_DIR ] ; then mkdir -p $CONF_DIR fi if [ ! -f $CONF_DIR/homedirs ] ; then echo "No se encontro la carpeta inicial" echo "Por favor crea $CONF_DIR/homedirs" exit fi ############################## # Configuracion 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 EL RESPALDO # ################################## 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 "Respaldando HTTPD el directorio CONF" tar cfj $BACKUP_DEST/httpd-$DATENAME.tar.bz2 $HTTP_CONF_DIR >> /dev/null # echo "Respaldando las Carpetas de INICIO" # 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 # #Poniendo permisos chown $BACKUP_UID:$BACKUP_GID $BACKUP_DIR # ################################## END_TIME=`date +%a-%D-@-%X-%Z` ################################## # FIN DEL RESPALDO # ################################## # ################################ # Opciones del respaldo remoto # ################################ clear # if [ $USE_RSYNC = y ] ; then echo "Comenzando Respaldo Remoto 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 respaldo ha sido Rsynced para $RSYNC_HOST" echo "" else echo "Rsync no esta iniciado" fi # if [ $USE_SCP = y ] ; then echo "Comenzando Respaldo Remoto via SCP" echo "" scp $BACKUP_DEST/$SERVER_HOSTNAME-$USER_DIR--$DATENAME.tar.bz2 $SCP_USER@$SCP_HOST:$SCP_REMOTEDIR echo "" echo "$BACKUP_TYPE respaldo ha sido subido via scp a $SCP_HOST" else echo "SCP no está iniciado" fi # if [ $USE_FTP = y ] ; then echo "Comenzando Respaldo Remoto 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 respaldo ha sido subido via FTP a $FTP_SERVER" else echo "" echo "FTP no esta iniciado" echo "" fi # ############################# # Resultados del respaldo # ############################# # echo "El actual $BACKUP_TYPE respaldo para $SERVER_HOSTNAME ha sido completado y está localizado en: $BACKUP_DEST" echo "" echo "Espacio total del disco usado por completo $BACKUP_TYPE respaldo." echo "Tamaño - Localización" echo "`du -hs "$BACKUP_DIR"`" echo "" echo "Espacio total del disco usado por el actual $BACKUP_TYPE respaldo." echo "Tamaño - Localización" echo "`du -hs "$BACKUP_DEST"`" ############################# # Resultados por correo # ############################# # if [ $EMAIL_INFO = y ] ; then echo "$SERVER_HOSTNAME $BACKUP_TYPE Sumario del respaldo" >> /tmp/emailmsg.txt echo "" >> /tmp/emailmsg.txt echo "Tiempo de comienzo del respaldo: $START_TIME" >> /tmp/emailmsg.txt echo "Tiempo de finalizacion del respaldo: $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 del disco usado por completo $BACKUP_TYPE respaldo." >> /tmp/emailmsg.txt echo "" >> /tmp/emailmsg.txt echo "Tamaño - Localización" >> /tmp/emailmsg.txt echo "`du -hs "$BACKUP_DIR"`" >> /tmp/emailmsg.txt echo "" >> /tmp/emailmsg.txt echo "Espacio total del disco usado por el actual $BACKUP_TYPE respaldo." >> /tmp/emailmsg.txt echo "" >> /tmp/emailmsg.txt echo "Tamaño - Localización" >> /tmp/emailmsg.txt echo "`du -hs "$BACKUP_DEST"`" >> /tmp/emailmsg.txt echo "" >> /tmp/emailmsg.txt # cat /tmp/emailmsg.txt | mail -s"$BACKUP_TYPE Respaldo ejecutado por $SERVER_HOSTNAME a las $END_TIME" $BACKUP_EMAIL rm -f /tmp/emailmsg.txt else echo "El Correo no esta iniciado" fi exit