Script Bash : Rsync par Module serveur

Voici un script bash de sauvegarde par le biais de rsync, géré par un serveur rsyncd, donc avec module ...

 

#!/bin/bash
#
# Modified le 26.08.2010 12:03
#
# Need to create /var/log/rsync
#
# To launch it every day at 4AM, add the following line to crontab:
# 00 4 * * * /root/script_sauvegarde_rsync_module  > /var/log/rsync/sauvegarde_rsync_module.log
#

### PARAMETRES A ADAPTER
declare -a ANNONCE="fichiers transferes :"

declare -a DIR2BCKP="()"        # not modify this !!!
declare -a DIR2LOG="/var/log/rsync"     # Dir where files log are writing
declare -a DIR2NAS="/mnt/Datas/"        # Dir where files are saved in NAS

declare -a FILE_BOO="/root/rsync_boo.log"
declare -a FILE_ERROR="$DIR2LOG/rsync_error.log"
declare -a FILE_LOG="$DIR2LOG/rsync_files.log"
declare -a FILE_PID="$DIR2LOG/rsync.pid"

declare -a HOST=`hostname`      # not modify this !!!

declare -a LOGIN=""     # your login
declare -a PASS=""      # your pass

declare -a RSYNC_OPTIONS="-avcRHKz --delete-during --delete-excluded --exclude=*~ --ignore-errors --force --numeric-ids --partial --stats --timeout=900"

declare -a SRVR_IP=""   # IP NAS
declare -a SRVR_MODULE=""       # Module Server Rsync

declare -i NB_ARCHIVES=7
declare -i NICE_LEVEL=-10

# declare all repertories or files that you're need to save ...
DIR2BCKP[0]="/etc/apache2/"
DIR2BCKP[1]="/etc/apt/"
DIR2BCKP[2]="/etc/fail2ban/"
DIR2BCKP[3]="/etc/init.d/openvpn-server"
DIR2BCKP[4]="/etc/network/"
DIR2BCKP[5]="/etc/openvpn/"
DIR2BCKP[6]="/etc/samba/"
DIR2BCKP[7]="/etc/ssh/"
DIR2BCKP[8]="/etc/ssl/"
DIR2BCKP[9]="/etc/tripwire/"
DIR2BCKP[10]="/etc/webmin/"
DIR2BCKP[11]="/etc/fstab"
DIR2BCKP[12]="/etc/group"
DIR2BCKP[13]="/etc/gshadow"
DIR2BCKP[14]="/etc/host*"
DIR2BCKP[15]="/etc/passwd"
DIR2BCKP[16]="/etc/shadow"
DIR2BCKP[17]="/etc/sudoers"
DIR2BCKP[18]="/etc/sysctl.conf"

### FIN DES PARAMETRES A ADAPTER

declare -i count=${#DIR2BCKP[@]}
declare -i i=0

# if user != root, die !
if (( `id -u` != 0 )); then
        date > $FILE_BOO;
        echo "Sorry, must be root.  Exiting..." >> $FILE_BOO;
        exit;
fi

# if files exists, delete this ...
if [ -e "$FILE_ERROR" ]; then rm $FILE_ERROR; fi
if [ -e "$FILE_LOG" ]; then rm $FILE_LOG; fi

# trying to create dir $DIR2LOG...
if [ ! -d "$DIR2LOG" ]; then
        if [ mkdir $DIR2LOG ]; then
                echo "*** Making dir $DIR2LOG !" >> $FILE_LOG
        else
                date >> $FILE_BOO;
                echo "*** Boo : dir $DIR2LOG can't created!" >> $FILE_BOO;
                exit;
        fi
fi

# rsync while
while [ "$i" -lt "$count" ]; do
        echo "***" >> $FILE_LOG
        date >> $FILE_LOG
        echo "$ANNONCE ${DIR2BCKP[$i]}" >> $FILE_LOG
        rsync $RSYNC_OPTIONS ${DIR2BCKP[$i]} $LOGIN@$SRVR_IP::$SRVR_MODULE >> $FILE_LOG 2>> $FILE_ERROR | echo `pidof rsync` > $FILE_PID
        echo " " >> $FILE_LOG
        let "i++"
done
 

 

Vous pouvez obtenir cet exemple !
Adaptez-le, à vos besoins ; exécutez-le avec les droits administrateurs ... mettez-le dans votre table de cron, bref, utilisez-le !

 

Vous pouvez l'utiliser conjointement avec ce script de snapshot rsync que je vous mets aussi à disposition ... à vous de voir !

 

Il vous faut bien sûr paramètrer le fichier de config, de votre serveur rsyncd ... votre compte utilisateur, votre mot-de-passe, le module serveur

Pour tout cela, je vous renvoie au manpage rsyncd.conf ou à ces quelques explications que j'ai écrites : Rsync rsyncd - Rsync --daemon ;-)

 

 


<<| Page : Bash : script : rsync_module_server : |>>


 

 

^ Haut de page ^