Sauvegarder son syteme

Avec ce petit script, vous allez pouvoir faire des sauvegardes régulières de votre système afin d'éviter des désagréments.

Tout d'abord on va créer un fichier nommé backup_syst.sh par exemple, et on va mettre les lignes suivantes:
#!/bin/sh
#pour avoir la date du jour:
date=`date +'%d_%m_%Y'`
#on vérifie que l'on a un répertoire ou on va pouvoir monter nos partitions système
#si il n'existe pas on le crée
test -d /home/backup/mnt || mkdir /home/backup/mnt

bien sur il faut avoir son /home sur une partition différente et avoir un répertoire "backup" dans son /home, a vous de customiser tout ça ;-)
Ensuite, on monte les diverses partitions qui composent le système

mount --bind / /home/backup/mnt mount --bind /var /home/backup/mnt/var
ici je n'ai que 2 partitions mais on mets autant de lignes "mount" que l'on a de partitions pour la partie système.
On continue, on entre dans le répertoire, on fait la sauvegarde, on sort du répertoire et on démonte les partitions:
cd /home/backup/mnt
tar -czf ../system_"$date".tar.gz * 2>>/dev/null
cd ..
umount mnt/var
umount mnt

Voila on a de quoi faire des sauvegardes ! On peut mettre une ligne dans /etc/crontab pour automatiser la suvegarde du type:
00 03 * * 1 root /home/scripts/backup_syst.sh
la sauvegarde sera faite tous les lundi a 3h00.
C'est bien beau tout ça mais les sauvegardes vont s'entasser dans /home/backup et on ne va pas forcément penser à les supprimer !
On va donc rajouter:
ls --sort=time system_* >liste_sauvegardes
awk '{if (NR>=4) {print "rm -f "$0}}' liste_sauvegardes | bash

Ce qui aura pour effet de ne conserver que 3 sauvegardes et de supprimer les plus anciennes.

Au final, le script ressemble à ça:

#!/bin/sh
#pour avoir la date du jour:
date=`date +'%d_%m_%Y'`
#on vérifie que l'on a un répertoire ou on va pouvoir monter nos partitions système
#si il n'existe pas on le crée
test -d /home/backup/mnt || mkdir /home/backup/mnt
mount --bind / /home/backup/mnt
mount --bind /var /home/backup/mnt/var
#on va dans le répertoire et on fait la sauvegarde
cd /home/backup/mnt tar -czf ../system_"$date".tar.gz * 2>>/dev/null
#on sort et on démonte tout
cd .. umount mnt/var
umount mnt
#on purge les anciennes sauvegardes, on en conserve que 3
ls --sort=time system_* >liste_sauvegardes
awk '{if (NR>=4) {print "rm -f "$0}}' liste_sauvegardes | bash

Et voila !

3 Comments so far

  1. Skit on January 16th, 2007

    Très bon article !
    Je vais tester ca dès que possible :)

  2. SkiToo.Org on January 17th, 2007

    Sauvgarde système de notre ami Juju

    Voici donc un très bon article concernant la sauvegarde automatique d’un système linux. Celui ci est proposé par notre ami Juju…

  3. [...] http://www.linibou.com « Sauvegarder son sytème [...]

Leave a reply