Backups varios - Userlinux.net

Blog sobre sistemas operativos, Linux, Wireless, BSD, Open Source, Software Libre, Mac OS X, Apple... y otras tech

Backups varios

Simple rsync

rsync -e ssh –progress –delete -lprtvvzog ./ root@r0sk.mine.nu:/home

Fast Backup #1

# mkdir -p /root/Backup/
# cd Backup/
# cp -r /etc ./
# cp -r /usr/local/etc ./
# pkg_info >> pkg_info.txt
# for i in `pkg_info | cut -f1 -d" "`; do pkg_info -L $i >> pkg_info-l.txt; done
# tar cfvz bck-`hostname -s`-`date "+%Y%m%d"`.tar.gz ./

Fast Backup #2

# mkdir /home/backup
# cd /home/backup
# tar -jcvvf fullbackup-`hostname -s`-`date +%F`.tar.bz2 /etc /usr/local/etc /var/db/pkg

Basic Backup

#!/usr/local/bin/bash
 
# Montando la partición de seguridad
/sbin/mount /backup
 
# Sincronizando bbdd y htdocs
/usr/local/bin/rsync --progress --delete -lprtvvzog /var/lib/mysql/ /backup/mysql/
/usr/local/bin/rsync --progress --delete -lprtvvzog /var/www/ /backup/htdocs/
 
# Copiando partes importantes del sistema
/usr/local/bin/rsync --progress --delete -lprtvvzog /etc/ /backup/etc/
/usr/local/bin/rsync --progress --delete -lprtvvzog /var/log/messages/ /backup/logs/
/usr/local/bin/rsync --progress --delete -lprtvvzog /home/ /backup/home/
 
# Desmontando la partición de seguridad
/sbin/umount /backup
 

Complete Backup #1

 
#!/bin/bash
 
# ------------------------------------------------------------
# Variables Generales
# ------------------------------------------------------------
COUNT=168                   # numero de rotaciones
BASE=backup                 # nombre base para las copias
WORK=/media/backup2/muro/   # directorio de trabajo
IP=192.168.0.1              # ip del servidor a copiar
 
LOGDIR=/media/backup2/log/
LOGNAME=backup_muro.`date '+%d.%m.%Y_%H:%M'`.log
EMAIL_ADMIN=logs@gmail.com
CMD_RSYNC=/usr/bin/rsync
 
 
# ------------------------------------------------------------
# Directorios
# ------------------------------------------------------------
SRCDIR=( /etc/ /bin/ )
DSTDIR=( /sys/etc/ /sys/bin/ )
 
 
# ---------------------------------------------------------
# Verificamos que los arrays tienen los mismos elementos
# ---------------------------------------------------------
SRCNUM=${#SRCDIR[@]}
DSTNUM=${#DSTDIR[@]}
 
if [ $SRCNUM -ne $DSTNUM ]; then
        echo "Los arrays son desiguales"
        exit
fi
 
 
# ------------------------------------------------------------
# Movemos $base.0 a $base.1 para dej last backup en 0
# Restamos uno alum de elementos del array (empieza en 0)
# Y empezamos la copia de seguridad SOLO si la IP responde
# al ping que enviamos
# ------------------------------------------------------------
if ping -c 1 $IP >/dev/null 2>&1
then
        cd $WORK
        k=$COUNT
        rm -rf $BASE.$k
        while [ $k -gt 0 ]; do
                mv $BASE.$(($k-1)) $BASE.$k 2> /dev/null
                mv $BASE.$(($k-1))-info $BASE.$k-info 2>/dev/null
                k=$(($k-1))
        done
        for i in `seq 0 $(($SRCNUM-1))`; do
 
                # Creamos los directorios correspondientes
                echo "mkdir -p $BASE.0${DSTDIR[$i]}"
 
                # Sincronizamos
                echo "$CMD_RSYNC -lprtvvzog -e ssh \
                        --link-dest=$WORK$BASE.1${DSTDIR[$i]} \
                        root@$IP:${SRCDIR[$i]} \
                        $WORK$BASE.0${DSTDIR[$i]}"
        done
 
        # Reportando la informacion
        echo "Rotated on `date '+%d.%m.%Y_%H:%M'`" > $BASE.0-info
        cat $LOGDIR/$LOGNAME | mail -s "$LOGNAME" $EMAIL_ADMIN
else
        echo "$IP no responde"
        exit
fi
# EOF

Complete Backup #2

#!/usr/local/bin/bash
 
# Variables
COUNT=168                                               # numero de rotaciones
BASE=backup_data                                        # nombre base para las copias
WORK=/mnt/databackup                                    # directorio de trabajo
IP=192.168.0.1                                       # ip del servidor a copiar
 
LOGDIR=/var/log/backup
LOGNAME=data_backup.`date '+%d.%m.%Y_%H:%M'`.log
 
CMD_RSYNC=/usr/local/bin/rsync
 
# Directorios data
HTDOCS_DIR=/usr/local/apache/htdocs/
MYSQL_DIR=/var/db/mysql/
MAIL_DIR=/var/spool/mail/postfix/
HOMES_DIR=/home/
ROOT_DIR=/root/
SPOOL_DIR=/var/spool/postfix/virtual/
 
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
#     data
#       |htdocs
#       |mysql
#       |mail
#       |homes
#       |root
#       |spool
 
if [ -d $BASE.0 ]; then mkdir -p $BASE.0; fi
mkdir -p $BASE.0/htdocs $BASE.0/mysql $BASE.0/mail $BASE.0/homes $BASE.0/root $BASE.0/spool
 
echo "Rotated on `date '+%d.%m.%Y_%H:%M'`" > $BASE.0-info
 
# backup data
$CMD_RSYNC -avz --delete -e ssh --link-dest=$WORK/$BASE.1/mysql root@$IP:$MYSQL_DIR $WORK/$BASE.0/mysql/
echo -e "$CMD_RSYNC -avz --delete -e ssh --link-dest=$WORK/$BASE.1/mysql root@$IP:$MYSQL_DIR $WORK/$BASE.0/mysql/" >> $LOGDIR/$LOGNAME
 
$CMD_RSYNC -avz --delete -e ssh --link-dest=$WORK/$BASE.1/htdocs root@$IP:$HTDOCS_DIR $WORK/$BASE.0/htdocs/
echo -e "$CMD_RSYNC -avz --delete -e ssh --link-dest=$WORK/$BASE.1/htdocs root@$IP:$HTDOCS_DIR $WORK/$BASE.0/htdocs/" >> $LOGDIR/$LOGNAME
 
$CMD_RSYNC -avz --delete -e ssh --link-dest=$WORK/$BASE.1/mail root@$IP:$MAIL_DIR $WORK/$BASE.0/mail/
echo -e "$CMD_RSYNC -avz --delete -e ssh --link-dest=$WORK/$BASE.1/mail root@$IP:$MAIL_DIR $WORK/$BASE.0/mail/" >> $LOGDIR/$LOGNAME
 
$CMD_RSYNC -avz --delete -e ssh --link-dest=$WORK/$BASE.1/homes root@$IP:$HOMES_DIR $WORK/$BASE.0/homes/
echo -e "$CMD_RSYNC -avz --delete -e ssh --link-dest=$WORK/$BASE.1/homes root@$IP:$HOMES_DIR $WORK/$BASE.0/homes/" >> $LOGDIR/$LOGNAME
 
$CMD_RSYNC -avz --delete -e ssh --link-dest=$WORK/$BASE.1/root root@$IP:$ROOT_DIR $WORK/$BASE.0/root/
echo -e "$CMD_RSYNC -avz --delete -e ssh --link-dest=$WORK/$BASE.1/root root@$IP:$ROOT_DIR $WORK/$BASE.0/root/" >> $LOGDIR/$LOGNAME
 
$CMD_RSYNC -avz --delete -e ssh --link-dest=$WORK/$BASE.1/spool root@$IP:$SPOOL_DIR $WORK/$BASE.0/spool/
echo -e "$CMD_RSYNC -avz --delete -e ssh --link-dest=$WORK/$BASE.1/spool root@$IP:$SPOOL_DIR $WORK/$BASE.0/spool/" >> $LOGDIR/$LOGNAME
 
cat $LOGDIR/$LOGNAME | mail -s "$LOGNAME" r0sk10@gmail.com
 
# EOF