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