Bonjour et merci pour ce script,
J’y ai fais quelques modifications si ca en interesse certain et surtout s’il y a des linuxiens chevronnés qui pourrait le relire pour erreurs et me filer un coup de main pour envoyer un mail en cas d’echec.
Voici le script :
[code]#!/bin/bash
sauvegarde différentielle journalière
ATTENTION : placer un fichier “.test” a la racine du montage NFS
In /etc/fstab : 192.168.1.102:/volume1/test /mnt/test/ nfs user,noauto 0 0
###CRON : 0 5 * * 1-5 /home/scripts/backup.bash > /home/scripts/logs/backup.log 2>&1 pour lancer le script à 05h00 du lundi au vendredi.
internationalisation
. /etc/default/locale
export LANG
Variables
IPNAS=“192.168.1.102” # IP server NAS
DIRNAS=/volume1/test # REPERTOIRE PARTAGE DU SERVEUR NAS
DIR2NAS="/mnt/test" # répertoire local vers lequel sera monté le partage réseau
#RSYNC_OPTIONS="-acRz --delete-during --delete-excluded --ignore-errors --force --numeric-ids --partial --stats --timeout=900"
#RSYNC_OPTIONS="-rltgoDvh --ignore-errors --force --stats --progress"
RSYNC_OPTIONS="-var --stats --delete-after"
Directories to backup
DIR2BCKP="()" # ne pas modifier !
DIR2BCKP[0]="/home/prive/“
DIR2BCKP[1]=”/home/public/"
Directories to create for backup
DIR2CREATE="()" # ne pas modifier !
DIR2CREATE[0]="prive"
DIR2CREATE[1]=“public”
Exclusions
EXCLUDE="()" # ne pas modifier !
EXCLUDE[0]="/home/scripts/exclude_prive.txt" #liste des fichiers et repertoires a exclure
EXCLUDE[1]=""
Temps d’execution du script
START=$(date +%s)
Journalisation
LOG="/home/scripts/logs/execution_$(date +%A)-result.log"
LOG_RSYNC="/home/scripts/logs/rsync_$(date +%A)-result.log"
#rm /home/scripts/logs/rsync_$(date +%A)-result.log
system commands used by this script
declare -i count=${#DIR2BCKP[@]}
declare -i i=0
Temps d’execution du script
START=$(date +%s)
Debut du script pour les logs
echo “##### Debut de la copie en date du $(date) #####” >> $LOG
if [ “$(ping -c 3 $IPNAS | grep ‘0 received’)” ]
then
echo “Server NAS not online !” >> $LOG
exit 1
else
if ! df | grep -q '$IPNAS:$DIRNAS’
then
mount -t nfs $IPNAS:$DIRNAS $DIR2NAS
if [ $? -eq 0 ]
then {
echo “Server NAS mounted successfully.” >> $LOG
}
else {
echo “Server NAS not mounted successfully !” >> $LOG
exit 1
}
fi
fi
fi
if [ -f $DIR2NAS/.test ]; then
If not exists backup directories of the day
[ -d “$DIR2NAS/$(date +%A)” ] || mkdir “$DIR2NAS/$(date +%A)”
while [ “$i” -lt “$count” ]; do
#[ -d “$DIR2NAS/${DIR2CREATE[$i]}” ] && mkdir “$DIR2NAS/${DIR2CREATE[$i]}”
# do the backup
RSYNC_RES=$(rsync $RSYNC_OPTIONS “${DIR2BCKP[$i]}” --log-file=$LOG_RSYNC --exclude-from=${EXCLUDE[$i]} “$DIR2NAS/$(date +%A)/${DIR2CREATE[$i]}”)
echo $RSYNC_RES >> $LOG
i=$(($i+1))
done
Afficher le temps d’execution
STOP=$(date +%s)
RUNTIME=expr $STOP - $START
envoi du mail (a faire!!! je sais pas comment)
#mailx vmail < $LOG ;
if ! umount ${DIR2NAS}; then
echo “An error code was returned by umount command !” >> $LOG
exit 5
else echo “Server NAS dismounted successfully.” >> $LOG
fi
else
echo “Server NAS not mounted !” >> $LOG
fi
Fin du script de log
printf “Temps d’execution : %02d:%02d:%02d\n” $((RUNTIME/3600)) $((RUNTIME/60%60)) $((RUNTIME%60)) >> $LOG
echo “##### Fin de la copie en date du $(date +”%d-%m-%Y a %H:%M") #####" >> $LOG
exit
[/code]
Merci d’avance