| M | T | W | T | F | S | S |
|---|---|---|---|---|---|---|
| « May | ||||||
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 | |||
Script de sauvegarde automatique: ce script à pour but de faire une sauvegarde incrémentale et automatisée du système grâce au outils rsync et cron ainsi que le langage de script bash.
Le script et son fichier de configuration sont téléchargeable à la fin de l'article.
Ce script de suppose l'utilisation d'un disque dur dédié qui sera monté dans l'arborescence uniquement le temps de la sauvegarde (ou de la récupération) des données.
Il faut donc ajouter l'option noauto à ce disque dans le fichier /etc/fstab. Vous devriez avoir un ligne de genre (remplacez les différentes valeur pour l'adapter à votre système):
/dev/hda1 /mnt/sauvegarde ext3 noauto 0 2
Les différents fichiers nécessaire à la sauvegarde sont situé dans les répertoire suivants:
C'est la plus importante: elle lance rsync avec les paramètres qui vont bien et envoie le résultat dans le fichier journal.
do_rsync() { rsync $OPTIONS $BACKUPDIR $ARCHIVEROOT/$CURRENT > $LASTLOG }
Cette fonction réalise un résumé de la quantité de données sauvegardées grâce à la commande du et l'ajoute à un journal:
do_logging() { echo >> $LOGFILE echo "Sauvegarde du $INCREMENTDIR de la machine $HOSTNAME:" >> $LOGFILE echo "################################################" >> $LOGFILE du -chs $ARCHIVEROOT/$INCREMENTDIR/* >> $LOGFILE echo "################################################" >> $LOGFILE FIN=`date +%Y-%m-%d_%Hh%M` echo "Sauvegarde fini le $FIN" >> $LOGFILE df -h $ARCHIVEDEV >> $LOGFILE echo >> $LOGFILE echo "***" >> $LOGFILE }
Cette fonction crée un fichier à partir du résumé de la sauvegarde de la fonction précédente et l'envoie par e-mail (commande mail).
C'est optionnel. Je la garde "au cas où", mais je l'ai désactivée que le corps du scripts en commentant l'appel à cette fonction.
do_accounting() { echo "Rapport de sauvegarde du $INCREMENTDIR de $HOSTNAME:" > /tmp/rsync_script_tmpfile echo >> /tmp/rsync_script_tmpfile echo "####################################################">>/tmp/rsync_script_tmpfile cat $LOGFILE >> /tmp/rsync_script_tmpfile echo "Mail $MAILADDR -s $HOSTNAME Backup Report < /tmp/rsync_script_tmpfile" Mail $MAILADDR -s $HOSTNAME Backup Report < /tmp/rsync_script_tmpfile # mv -v /tmp/rsync_script_tmpfile $ARCHIVEROOT/archive.log echo "rm /tmp/rsync_script_tmpfile" rm /tmp/rsync_script_tmpfile }
Tout d'abord, on charge les paramètre contenu dans le fichier de configuration situé dans le répertoire /etc/ :
source /etc/sauvegarde.conf
Pour plus de sécurité le disque de sauvegarde ne doit pas etre monté automatiquement. On le monte ici explicitement:
mount $ARCHIVEDEV $ARCHIVEROOT
Pour être sur que le répertoire d'archivage existe
install -d $ARCHIVEROOT/$CURRENT
On peut commencer la sauvegarde après avoir vérifié que le répertoire de sauvegarde existe bien ainsi que le fichier contenu les dossiers et fichiers exclus de la sauvegarde.
On appelle ainsi les fonctions définies ci-dessus, à l'exception de do_accounting qui est commentée (symbole # en début ligne). Pour recevoir un mail résumant chaque sauvegarde, il suffit de décommenter cette ligne et remplir le fichier de configuration avec les paramètres nécessaires.
if [ -f $EXCLUDES ]; then if [ -d $BACKUPDIR ]; then do_rsync do_logging # do_accounting else echo "Le répertoire à sauvegarder n'existe pas: $BACKUPDIR"; exit fi else echo "Le fichier $EXCLUDES n\'existe pas"; exit fi
Par sécurité on démonte le périphérique de sauvegarde après la sauvegarde:
umount $ARCHIVEROOT
C'est relativement simple. En tant que root lancer la commande:
#crontab -e
et ajouter un ligne du type:
0 3 * * * /usr/local/bin/sauvegarde-auto.sh
Cette ligne permet de lancer chaque jour la sauvegarde à 3h00 le matin. Pour le paramétrage, de cron, je vous laisse lire la page man cron
Le fichiers de configuration est situé dans le répertoire /etc.
MAILADDR=root@localhost
HOSTNAME=pc-principal
BACKUPDIR=/
EXCLUDES=/etc/sauvegarde.exclus
ARCHIVEROOT=/mnt/sauvegarde
ARCHIVEDEV=/dev/hda1
MOUNTARCHIVE=1
LOGFILE=/var/log/archives.log
LASTLOG=/var/log/derniere_archive.log
CURRENT=mai
INCREMENTDIR=`date +%Y/%m/%d_%Hh%M`
OPTIONS="--force --ignore-errors --delete --delete-excluded --exclude-from=$EXCLUDES --backup --backup-dir=$ARCHIVEROOT/$INCREMENTDIR -av"
3 comments.
Bonjour;
Je suis très intéressé par ce script de sauvegarde. Par contre je n’ai pas trouvé le lien de téléchargement. Auriez vous l’amabilité de me dire comment faire pour l’obtenir.
Dans tous les cas merci de partager vos connaissances avec un débutant. Bonne journée à vous.
Cordialement.
Script de sauvegarde automatique
Voilà l’archive qui contient le script et les deux fichiers de configuration
merci super mais ne manque t il pas le script de restauration de la sauvegarde?
en tout cas bravo
Names and email addresses are required (email addresses aren't displayed), url's are optional.
Comments may contain the following xhtml tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>