août 12 2010

Sauvegarder un répertoire si modifié

Publié par dave à 10:33 sous linux

J’utilise ce script afin de garder une copie locale de mon répertoire tftp sur Linux. Il conserve l’archive seulement si des modifications ont été apportées.
Il peut-être utilisé sur tout autre répertoire évidemment. Voici un exemple de fichiers générés:
 

[root@serveur_tftp backup]$ ls -l
-rw-r----- 1 tftp tftp   124200 May  1 04:04 tftp-20100501.tgz
-rw-r----- 1 tftp tftp  2108159 May 13 04:04 tftp-20100513.tgz
-rw-r----- 1 tftp tftp  2108165 May 18 04:04 tftp-20100518.tgz
-rw-r----- 1 tftp tftp  2108442 May 20 04:04 tftp-20100520.tgz
-rw-r----- 1 tftp tftp  2108545 Jun  1 04:04 tftp-20100601.tgz
-rw-r----- 1 tftp tftp   126382 Jun  3 04:04 tftp-20100603.tgz
-rw-r----- 1 tftp tftp   126426 Aug  5 04:04 tftp-20100805.tgz
-rw-r----- 1 tftp tftp   126485 Aug  7 04:04 tftp-20100807.tgz
-rw-r----- 1 tftp tftp   126486 Aug 11 04:04 tftp-20100811.tgz

 
Créez une tâche sous cron pour l’automatiser complètement

#!/bin/bash

# Changer ces paramètres selon ses besoins
dir_to_backup=/tftpboot
# Noms du fichier et chemin du répertoire de sauvegarde
backup_dir=/tmp/backup
backup_file=tftp
# Nom du fichier d'archive zippé en sortie
of=$backup_dir/$backup_file-$(date +%Y%m%d).tgz
# propriétaire et groupe du fichier de sauvegarde
owner=tftp
gowner=tftp
tmpfile=/tmp/$backup_file.tar
# Nombre de versions de sauvegarde à conserver
backup_number=24

# Sauvegarde
cd $dir_to_backup
# Les commandes tar et zip ont été séparées
# pour créer des fichiers au checksum identique
# au cas où auncun changement n'a eu lieu
tar cf $tmpfile .
# L'archive est supprimée si le checksum est identique à celui du dernier fichier
# On ne sauvegarde pas le timestamp pour garder un checksum consistant sur des jours différents
gzip -cn $tmpfile > $of
rm -f $tmpfile
chmod 640 $of
chown $owner:$gowner $of

# La nouvelle archive est effacée si le checksum de la dernière sauvegarde est identique
[ `ls -1t $backup_dir/$backup_file-*.tgz|head -2|xargs md5sum|awk '{print $1}'|uniq|wc -l` -eq 1 ] && rm -f $of

# Supprime les anciennes versions
# Conserve les 30 dernières sauvegardes
ls -1rt $backup_dir/$backup_file-*.tgz|head -n -$backup_number|xargs rm -f

No responses yet

Comments RSS

Leave a Reply

Security Code: