Recent Changes - Search:

Général

Sécurité

Windows

Linux

Systeme

Réseaux

XBMC

Liens

PmWiki

edit SideBar

LesSauvegardesSousLinux

Cette section est une aide pour la mise en place de sauvegarde sur l'OS Linux. Il est extrait/inspiré de 'La Sauvegarde sous GNU/Linux'.

Voir aussi 'Sauvegarde, clonage & synchronisation : données, de partitions ou de disques'.

Choisir son système de sauvegarde implique de définir ses besoins :

  • Le système doit-il conserver un historique des données, ou juste la dernière version ?
  • Le système doit-il protéger contre une casse de disque dur, ou seulement contre une suppression non voulue ?
  • Le système doit-il protéger en cas d'incendie de l'ordinateur (destruction de tous les disques durs contenus dans la machine) ?
  • Quelle est l'importance des données à sauvegarder ?
  • Quel est le volume des données à sauvegarder ?
  • Le système doit-il être complètement automatisé (lancé à des heures précises), ou manuel ?

Les réponses à ces questions dépendent de l'utilisation de la machine. Il n'y a pas de meilleure solution dans tous les cas.

Techniques de sauvegarde

La sauvegarde sur support externe est idéale dans la plupart des cas, mais très couteuse : les lecteurs de bandes, et les bandes, sont très chers. Si le volume est faible, on peut aussi sauvegarder sur des CDs, mais ce n'est pas très pratique.

La sauvegarde sur disque dur devient de moins en moins chère et est de loin la plus pratique. Dans l'idéal, il faut sauvegarder sur un disque dur différent, afin de protéger contre la casse de disque dur. Et pour être protégé contre l'incendie de sa machine, on peut aussi sauvegarder sur une autre machine via un réseau. Dans la pratique, cela se fait avec les mêmes outils.

Attention, n'oubliez pas que les casses de disque dur sont très fréquentes, et que sauvegarder ses données sur le même disque dur n'est pas forcément une bonne idée. Si vous n'avez pas le choix, essayez au moins de vous prémunir contre les risques de défaillance du système de fichiers : sauvegardez sur une partition différente !

Solutions logicielles libres pour la sauvegarde

  • tar
  • rsync
  • Snapshots rsync
  • Dirvish

Que faut-il sauvegarder ?

Déterminer ce que vous avez à sauvegarder, en n'oubliant rien, est également très important. Quelques idées :

  • /etc : ce répertoire contient la configuration de la plupart des logiciels installés. Il n'est pas très gros, et donc facile à sauvegarder.
  • /var : certains sous-répertoires de /var contiennent également des données à sauvegarder. Il faut décider au coup par coup, et ne pas tout sauvegarder ! Les logs, par exemple, occupent beaucoup de place et changent très souvent.
  • /home : ce répertoire contient toutes les données des utilisateurs. Il peut être utile d'exclure certains répertoires contenant des fichiers particulièrement volumineux (musique libre, films libres, etc...)
  • /root : il s'agit du home du root. Si vous y stockez parfois des fichiers, ne l'oubliez pas.
  • Liste des paquets installés : généralement, une commande permet d'extraire la liste des paquets installés. Une bonne technique est de rediriger la sortie de la commande vers un fichier, et de sauvegarder ce fichier.
  • Bases de données : attention, sauvegarder les fichiers de MySQL dans /var n'est pas suffisant. Il est préférable de faire un "dump" de toutes les bases, et de le sauvegarder. Il faut utiliser la même technique que pour la liste des paquets installés (pour MySQL, il faut utiliser la commande mysqldump).

Quelques idées de commande

L'idée des commandes suivantes est de ne sauvegarder que ce qui a été modifié dans une liste de fichier ou de répertoire prédéterminée. L'inconvénient d'un certain nombre d'outils est qu'ils sauvegardent au départ un grand nombre de fichier (donc générant du volume) puis par la suite effectuent des sauvegardes incrémentielle. L'inconvénient de la sauvegarde incrémentielle est qu'après il faut dépiler...

Sauvegarde d'une base de données MySQL

   mysqldump --host=mysql_hostname --user=mysql_username --quick --password=mysql_password --no-create-db --all --complete-insert --compress --add-drop-table --skip-opt --default-character-set=UTF8 database > /path/dump-database-`date +m%d` ; gzip /path/dump-database-`date +m%d`

Pour restaurer il suffit d'utiliser la commande suivante :

    mysql -u utilisateur -p mot de passe serveur database_name < dump.sql

Sauvegarde d'un espace disque distant

   ncftpget -R -u user -p password hostname /path/backup-`date +m%d` ; tar cvf /path/backup-`date +m%d`.tar /path/backup-`date +m%d` ; gzip /path/backup-`date +m%d`.tar

Script de sauvegarde sur modification des fichiers

L'intérêt de ce script est d'être autonome. Il est seulement nécessaire de disposer du shell bash, des outils tar, gzip et md5. Ci-dessous un exemple de sauvegarde du répertoire /etc.

   #!/bin/bash

   BCKUP_DIR=/path/to/backup

   tar cvf $BCKUP_DIR/etc-latest_backup.tar /etc/*

   # premiere sauvegarde, aucun fichier n'existe
   if test ! -f $BCKUP_DIR/etc-latest_backup.tar.md5
   then
    echo "Aucune sauvegarde existante du répertoire /etc. Initiation de la première sauvegarde."
    md5sum $BCKUP_DIR/etc-latest_backup.tar > $BCKUP_DIR/etc-latest_backup.tar.md5
    mv $BCKUP_DIR/etc-latest_backup.tar $BCKUP_DIR/etc-backup_`date +m%d`.tar
    gzip -f $BCKUP_DIR/etc-backup_`date +m%d`.tar

   # Si le répertoire /etc  a changé depuis la derniere sauvegarde
   elif [ `md5sum -c $BCKUP_DIR/etc-latest_backup.tar.md5 | cut -d" " -f2` != "OK" ]
   then
    # Calcul du nouveau MD5
    md5sum $BCKUP_DIR/etc-latest_backup.tar > $BCKUP_DIR/etc-latest_backup.tar.md5
    # Renommage et compression de la sauvegarde actuelle
    mv $BCKUP_DIR/etc-latest_backup.tar $BCKUP_DIR/etc-backup_`date +m%d`.tar
    gzip -f $BCKUP_DIR/etc-backup_`date +m%d`.tar
    echo "Le répertoire /etc a été modifié depuis la dernière sauvegarde, nouvelle sauvegarde effectuée."
   else
    echo "Le répertoire /etc n'a pas été modifié depuis la dernière sauvegarde, pas de sauvegarde."
    rm $BCKUP_DIR/etc-latest_backup.tar
   fi

   chmod 600 $BCKUP_DIR/etc-backup_`date +m%d`.tar.gz

Script de sauvegarde de base de données MySQL

L'intérêt de ce script est d'être autonome. Il est seulement nécessaire de disposer du shell bash, de mysqldump, gzip et md5. Ci-dessous un exemple générique de sauvegarde (placé dans /etc/cron/daily pour effectuer une sauvegarde quotidienne complète).

   #!/bin/bash
   #set -x

   BCKUP_DIR=/path/to/backup
   PASSWD="my_password"
   BDD="my bdds"

   for bdd in $BDD
   do
    mysqldump --host=127.0.0.1 --user=root --password=$PASSWD --no-create-db --quick --compress --set-charset --create-options --add-drop-table --add-locks --lock-tables --default-character-set=utf8 --extended-insert  $bdd | grep -v " Dump completed" > $BCKUP_DIR/$bdd-latest_backup

   # premiere sauvegarde, aucun fichier n'existe
   if test ! -f $BCKUP_DIR/$bdd-latest_backup.md5
   then
    echo "Aucune sauvegarde existante de la base de données $bdd. Initiation de la première sauvegarde."
    md5sum $BCKUP_DIR/$bdd-latest_backup > $BCKUP_DIR/$bdd-latest_backup.md5
    mv $BCKUP_DIR/$bdd-latest_backup $BCKUP_DIR/$bdd-backup_`date +m%d`
    gzip $BCKUP_DIR/$bdd-backup_`date +m%d`

   # Si la bdd a changé depuis la derniere sauvegarde 
   elif [ `md5sum -c $BCKUP_DIR/$bdd-latest_backup.md5 | cut -d" " -f2` != "OK" ]
   then
    # Calcul du nouveau MD5
    md5sum $BCKUP_DIR/$bdd-latest_backup > $BCKUP_DIR/$bdd-latest_backup.md5
    # Renommage et compression de la sauvegarde actuelle
    mv $BCKUP_DIR/$bdd-latest_backup $BCKUP_DIR/$bdd-backup_`date +m%d`
    gzip $BCKUP_DIR/$bdd-backup_`date +m%d`

    echo "La base de données $bdd a été modifiée depuis la dernière sauvegarde, nouvelle sauvegarde effectuée."
   else 
    echo "La base de données $bdd n'a pas été modifiée depuis la dernière sauvegarde, pas de sauvegarde."
    rm $BCKUP_DIR/$bdd-latest_backup
   fi

   done
Edit - History - Print - Recent Changes - Search
Page last modified on September 13, 2009, at 03:01 PM