|
Linux /
LesSauvegardesSousLinuxCette 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 :
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 sauvegardeLa 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
Que faut-il sauvegarder ?Déterminer ce que vous avez à sauvegarder, en n'oubliant rien, est également très important. Quelques idées :
Quelques idées de commandeL'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 |