Le script permet de synchroniser des arborescences bureautiques entre deux serveurs Linux, en recopiant également les ACLs.
#!/bin/bashSERVEURDEST="serveurdistant"LOG="/var/log/backupQuotidien.log"ORIGINE="/opt/donnees"RSYNC="/usr/bin/rsync"OPTIONS="-rlAogtz"# Recuperation des parametreswhile getopts "l:s:o:d:D-:hm:" OPTdo # gestion des options longues if test $OPT = '-' ; then LONGOPT="${OPTARG%%=*}" OPTARG="${OPTARG#*=}" case $LONGOPT in server) OPT="s";; origine) OPT="o";; destination) OPT="d";; delete) OPT="D";; help) OPT="h";; mail) OPT="m";; log) OPT="l";; *) echo "option longue non permise -- $LONGOPT" >&2 ;exit 65;; esac fi case $OPT in s) SERVEURDEST=$OPTARG;; o) ORIGINE=$OPTARG;; d) DESTINATION=$OPTARG;; D) DELETE='--delete';; m) COURRIEL=$OPTARG;; l) LOG=$OPTARG;; h) echo "synchronise les donnees vers le serveur distant" echo "utilisation : synchroData.sh [arguments]" echo "[-s serveur|--server=serveur] : nom du serveur distant" echo "[-o chemin|--origine=chemin] : chemin a synchroniser" echo "[-d chemin|--destination=chemin] : chemin cible" echo "[-D|--delete] : supprime les fichiers dans le serveur distant qui n'existent plus dans le serveur source" echo "[-m adresse|--mail=adresse] : adresse du courriel a qui envoyer le resultat de l'operation" echo "[-l fichier|--log=fichier] : nom du fichier LOG" exit 0 ;; *) echo "option non permise ou vide. synchroData.sh -h pour plus d'informations" exit 65 ;; esacdone# Verification des informations essentiellesif test -z $SERVEURDEST ; then echo "le nom du serveur de destination n'est pas renseigne" exit 65fiif test -z $ORIGINE ; then echo "le dossier a sauvegarder n'est pas renseigne" exit 65fiif test -z $RSYNC ; then echo "Le nom du programme utilise pour la synchronisation n'est pas renseigne" exit 65fiif test -z $DESTINATION ; then echo "Le nom du dossier de destination n'est pas renseigne" exit 65fiecho "Lancement de la synchronisation le `date`" >$LOGecho "commande executee : $RSYNC $OPTIONS $DELETE $ORIGINE $SERVEURDEST:$DESTINATION" >>$LOG$RSYNC $OPTIONS $DELETE $ORIGINE $SERVEURDEST:$DESTINATION 2>>$LOGecho "Fin de traitement le `date`" >>$LOG# Envoi du courrielif test ! -z $COURRIEL ; then SUJET="`hostname` - synchronisation de $ORIGINE vers $SERVEURDEST" mail -s "$SUJET" $COURRIEL < $LOGfiLa programmation proposée ici fonctionne en créant une sauvegarde bi-quotidienne par rajout de fichier, et une mise en miroir le dimanche (suppression dans la cible des fichiers supprimés pendant la semaine). Le résultat du traitement est envoyé par courriel tous les dimanches
30 12 * * 7 /root/synchroData.sh -s serveurcible -o /opt/donnees -d /opt -m systeme@masociete.fr -D -l /var/log/synchroDonnees.log00 13,19 * * 1-5 /root/synchroData.sh -s serveurcible -o /opt/donnees -d /opt -l /var/log/synchroDonnees.log