Mon script de sauvegarde

Il existe très certainement un script qui fasse la même chose, mais j'avais envie de maitriser mes sauvegardes. A la base, je voulais un script simple, avec très peu de ligne. A la fin, j'arrive avec un script de 143 lignes de code (cat sauvegarde-1.0.sh | grep -v "^$" | grep -v "^#"|wc -l).

Mon script se télécharge ici : http://www.gnunux.info/projets/sauvegarde/

Ce dont j'ai besoin :

  • sauvegarde incrémentale d'une semaine ;
  • sauvegarde de répertoires de mon serveur allumé 24h/24 ;
  • sauvegarde de mes clients, éteint la nuit (voire plus) ;
  • sauvegarde de mysql et de la base de paquet sur le serveur ;
  • avoir une sauvegarde de la sauvegarde du serveur (et uniquement du serveur) sur un deuxième disque ;
  • fournir un rapport (un courriel) lorsque les sauvegardes sont fini ;
  • fournir un rapport en cas de défaillance d'une sauvegarde (poste non atteignable pendant 24h par exemple) ;
  • fournir l'espace disque en fin de sauvegarde dans le rapport.

Pour cela, j'utilise rsync(2) coté client, comme serveur.

Pour la configuration serveur rsyncd sur les clients :

  • dans /etc/rsyncd.conf :
uid = root
gid = root
use chroot = yes
max connections = 4
syslog facility = local5
pid file = /var/run/rsyncd.pid
[gnunux]
        path = /home/gnunux
        comment = gnunux
        read only = yes
        list = no
        auth users = util
        secrets file = /etc/rsyncd.secrets
        hosts allow = 192.168.1.1
  • dans /etc/rsyncd.secrets (avec chmod 600 /etc/rsyncd.secrets) :
util:MotDePassRsync

Ensuite, il faut copier le script (en modifiant les options) dans /etc/cron.hourly, sous le nom de "sauvegarde", pour avoir une tentative de sauvegarde toutes les heures.

Les deux variables les plus importantes sont :

  • REPSAUVS : liste des répertoires locaux hebergeant la sauvegarde. Le premier correspond à la sauvegarde complète et les autres, à la liste des répertoires locaux acceuillant la sauvegarde du serveur.
  • REPS : répertoire à sauvegarder. La syntaxte est celle de rsync pour les noms de répertoire.

Les sauvegardes sont enregistrées de la manière suivante :

  • maitre : contient une copie du répertoire de sauvegarde
  • lundi, mardi, ... : contient l'ancienne copie d'un fichier modifier.

Par exemple, je créé le fichier "toto.txt" lundi, mercredi je le modifier. Le jeudi, dans "maitre" j'ai la version actuelle et dans "jeudi" j'ai la version initiale.

Limites :

  • Liste d'exclusion commune à tous les hôtes ;
  • Mot de passe rsync commun à tous les hôtes.

Besoins futurs :

  • sauvegarde de la sauvegarde sur un client, parfois éteint
  • lancer des commandes sur les clients
  1. http://samba.org/rsync/

Haut de page