Copia del sistema

Utilizando el sistema de enlazado simbólico crearemos copias de seguridad completas a tamaño de incrementales. Este script copia los directorios más importantes del sistema:

#!/usr/local/bin/bash
 
# Variables
COUNT=168                                               # numero de rotaciones
BASE=backup_system                                      # nombre base para las copias
WORK=/mnt/sysbackup                                     # directorio de trabajo
IP=192.168.0.1                                       # ip del servidor a copiar
 
LOGDIR=/var/log/backup
LOGNAME=data_system.`date '+%d.%m.%Y_%H:%M'`.log
 
CMD_RSYNC=/usr/local/bin/rsync
 
# Directorios system
ETC_DIR=/etc/
LOCALETC_DIR=/usr/local/etc/
BOOT_DIR=/boot/
BIN_DIR=/bin/
SBIN_DIR=/sbin/
 
cd $WORK
 
i=$COUNT
rm -rf $BASE.$i
 
while [ $i -gt 0 ]; do
 
        mv $BASE.$(($i-1)) $BASE.$i 2> /dev/null
        mv $BASE.$(($i-1))-info $BASE.$i-info 2>/dev/null
 
        i=$(($i-1))
done
 
# Creamos estructura base
#       system
#               |etc
#               |usr_local_etc
#               |boot
#               |bin
#               |sbin
 
mkdir -p $BASE.0/etc $BASE.0/usr_local_etc $BASE.0/boot $BASE.0/bin $BASE.0/sbin
 
 
echo "Rotated on `date '+%d.%m.%Y_%H:%M'`" > $BASE.0-info
 
# backup system
$CMD_RSYNC -avz --delete -e ssh --link-dest=$WORK/$BASE.1/etc root@$IP:$ETC_DIR $WORK/$BASE.0/etc/
echo -e "$CMD_RSYNC -avz --delete -e ssh --link-dest=$WORK/$BASE.1/etc root@$IP:$ETC_DIR $WORK/$BASE.0/etc/" >> $LOGDIR/$LOGNAME
 
$CMD_RSYNC -avz --delete -e ssh --link-dest=$WORK/$BASE.1/usr_local_etc root@$IP:$LOCALETC_DIR $WORK/$BASE.0/usr_local_etc/
echo -e "$CMD_RSYNC -avz --delete -e ssh --link-dest=$WORK/$BASE.1/usr_local_etc root@$IP:$LOCALETC_DIR $WORK/$BASE.0/usr_local_etc/" >> $LOGDIR/$LOGNAME
 
$CMD_RSYNC -avz --delete -e ssh --link-dest=$WORK/$BASE.1/boot root@$IP:$BOOT_DIR $WORK/$BASE.0/boot/
echo -e "$CMD_RSYNC -avz --delete -e ssh --link-dest=$WORK/$BASE.1/boot root@$IP:$BOOT_DIR $WORK/$BASE.0/boot/" >> $LOGDIR/$LOGNAME
 
$CMD_RSYNC -avz --delete -e ssh --link-dest=$WORK/$BASE.1/bin root@$IP:$BIN_DIR $WORK/$BASE.0/bin/
echo -e "$CMD_RSYNC -avz --delete -e ssh --link-dest=$WORK/$BASE.1/bin root@$IP:$BIN_DIR $WORK/$BASE.0/bin/" >> $LOGDIR/$LOGNAME
 
$CMD_RSYNC -avz --delete -e ssh --link-dest=$WORK/$BASE.1/sbin root@$IP:$SBIN_DIR $WORK/$BASE.0/sbin/
echo -e "$CMD_RSYNC -avz --delete -e ssh --link-dest=$WORK/$BASE.1/sbin root@$IP:$SBIN_DIR $WORK/$BASE.0/sbin/" >> $LOGDIR/$LOGNAME
 
cat $LOGDIR/$LOGNAME | mail -s "$LOGNAME" r0sk10@gmail.com
 
# EOF