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 : |>>