1. Introduction
  2. Fixe
    1. Risques
    2. Solution possible
    3. Logiciel
      1. Mondo
      2. D'autres
  3. Portable
    1. Risques
    2. Solution possible
    3. Logiciel
      1. rsync
      2. unison
  4. Conclusion

Introduction

Tout d'abord, "sauvegarder ses données ça ne sert à rien ... jusqu'au jour où on regrette de ne pas l'avoir fait". Donc, avant qu'il ne soit trop tard, voici quelques éléments pour faciliter cette tache.

Les solutions que je vais vous présenter sont loin d'être exhaustives. En effet, de très nombreuses solutions sont possibles, chacunes ayant ses avantages ... et ses inconvénients.

Afin de bien choisir une solution de sauvegarde, il faut prendre le temps d'évaluer les risques de pertes de donnés, leur gravité, et aussi l'espace ainsi que la forme que l'on souhaite consacrer aux sauvegardes. De plus cela est fonction du materiel dont on dispose (bien que l'achat d'un graveur et d'espace disque suplémentaire est une bonne idée de manière générale).

Fixe

Risques

Les cause de pertes de données peuvent être :

  • La mort d'un disque dur.
  • Une erreur lors de partionnment du-dit disque
  • Et de manière moins probable :
    • Le vol de l'ordinateur (avec effraction, car le fixe par nature ne bouge pas tellement de la chambre).
    • Incendie de la chambre.

Solution possible

On considère que les données ne sont pas suffisement critiques pour investir dans un lecteur de bandes et un coffre-fort ignifugé afin de sauvegarder ces bandes.

Par contre, vu la nature des risques, ce n'est pas forcemment une bonne idée d'effectuer la sauvegarde sur disque dur. On va plutot utiliser les moyens de stockages type DVD (pour les possesseurs de graveur de DVD) ou CD-RW (lors d'une autre sauvegarde, on pourra réutiliser les anciens CD-RW, cela sera plus économique).

On peut stocker ces CD à un endroit différent de l'ordinateur afin de ne pas les perdre en cas d'incendie, mais bon, il ne s'agit pas non plus de les mettre trop loin, car on souahite les avoir assez vite sous la main lorsque l'on en a besoin ;-).

On peut sauvegarder tout son système (necessite beaucoup de CDs ou quelques DVD) ou simplement son /home et son /etc, en se disant que c'est très plaisant d'installer une Debian, donc on ne sauvegarde que ses fichiers personnels et ceux de confs.

La sauvegarde se fait quand on a le temps. Comme il faut tout recommencer à chaque fois, cela ne se fait pas tous les jours. Un ordre de grandeur raisonnable entre 2 sauvegardes me semble être entre 15 jours et 6 mois au maximum.

Logiciel

Mondo

Un des meilleurs logiciel sous *NIX pour effectuer cela est mondo avec son compagnon mindi.

Sous Debian, tout simplement

# aptitude install mondo mondo-doc

L'un des avantages de ce programme est que le premier CD est bootable afin de faciliter une éventuelle restauration. Et comme le noyau qu'il prend est celui tournant sur la machine au moment de la sauvegarde, on est sûr que le materiel est supporté.

Si l'on sauvegarde tout son système, il permet de le restaurer très facilement. De plus, il permet également de restaurer seulement une partie de manière simple.

En pratique, pour sauvegarder sur des CD-RW avec un graveur SCSI 4x, et avec une compression maximale, cela donne :

# mondoarchive -Ow 4 -s 700m -9 -I "/home/benoit /etc" -E "/home/benoit/a-exclure" -d "/dev/sr0:0,5,0" -l GRUB

Et il n'y a plus qu'à charger les CD-RW de 700M dans le graveur au fur et à mesure.

Pour plus de renseignements sur les options : man mondoarchive et /usr/share/doc/mondo-doc/html/index.html.

D'autres

Portable

La problematique est différente de celui du fixe.

Risques

En plus des risques du fixe, les risques de vol ou de détérioration sont accrus du fait que l'on trimballe son portable un peu partout. De plus, en cas de mort de la carte-mère du portable, il devient beaucoup plus compliqué de récupérer les données du disque-dur (alors que sur un fixe, il suffit de brancher son disque dur sur une autre carte-mère).

En outre, tout du moins en ce qui me concerne, les données sur le portable sont en général celles des travaux en cours, c'est à dire qu'elles évoluent assez vite, et ce sont elles dont on a le plus besoin et le plus vite.

Par contre, il y a en général moins de données à sauveagarder que sur un fixe (du fait de la petite capacité de stockage des disques dur de portable comparé au Tera-octets de d-d que certains disposent ...).

Solution possible

Une solution de gravage me semble moins adaptée, car pas assez souple, pas assez rapide.

Par contre, on peut sauvegarder sur une partition dédiée d'un disque dur du fixe. La taille de cette partition peut-être fixée à la taille de la partition /home du portable. Au niveau du système de fichier, comme les fichiers ne sont ni tous gros, ni tous petits, on peut garder le ext3.

Le risque que l'on ai un problème en même temps sur le disque dur du fixe et sur le portable est suffisemment faible, donc on le prend.

On ne va pas lancer la sauvegarde dans un cron, car il y a de fortes chances que le portable ne soit pas connecté au fixe à ce moment. On lancera donc manuellement cette sauvegarde (que l'on peut nommer synchronisation unidirectionnelle) lorsque le portable peut communiquer avec le fixe via un réseau haut-débit. En gros, on va synchroniser entre tous les 2 jours et toutes les 2 semaines.

Logiciel

rsync

Cela s'effectue très simplement avec rsync.

On suppose que le fixe (benoa.crans.org) dispose d'un serveur ssh, et que l'utilisateur du portable a un compte sur son fixe.

Pour la manip suivante, on suppose également que la partition de sauvegarde est /mnt/backup et qu'elle est montée en lecture/écriture pour l'utilisateur.

Il faut tout d'abord installer rsync sur les 2 ordis. Pour Debian, tout simplement :

# aptitude install rsync

Ensuite, il suffit de lancer rsync. La première fois cela prend pas mal de temps, mais après cela devient très rapide, car seules les différences transitent.

Par défaut, le protocole ssh est utilisé, aucune donnée ne circule en clair.

$ man rsync est très utile.

On pourrait compresser les données, mais cela charge plus le portable, et comme on dispose d'une liaison haut-débit, on ne gagne pas tellement de vitesse.

Je désire sauvegarder mon /home et aussi le /etc, mais pas les fichiers "sensibles", c'est à dire non lisibles par un utilisateur lambda (ou nobody).

En vertu de la loi d'effort minimum, j'ai placé le petit script suivant dans /usr/local/bin/backup, et il me suffit de lancer backup pour que la synchronisation s'effectue automatiquement. De plus, si on a mis en oeuvre le systeme de cles pour se connecter sans mot de passe, alors cela est encore plus facile.

#!/bin/sh (-)

# Pas de sauvegarde des fichiers non lisibles par tous 
modes="600 640 440"
exclure=""
for oct in $modes ; do
    exclure=$exclure$(find /etc -perm $oct -printf '--exclude=%p ')
done

rsync -aSx --stats --delete $exclure /home/benoit /etc benoa.crans.org:/mnt/backup 

unison

L'autre solution est d'avoir les mêmes données sur son fixe et sur son portable. C'est génial, cela permet de travailler soit sur le fixe, soit sur le portable. Cela permet aussi d'avoir une sauvegarde plus fiable, en sauvegardant les données du fixe souvent, via un cron et mondo, rdiff-backup...

On pourrait utiliser rsync en lui demandant de copier les infos les plus récentes de l'ordi que l'on vient d'utiliser vers l'autre. Evidemment, il faut savoir quel ordinateur contient les infos les plus récentes, ne pas oublier de synchroniser, et ne pas modifier des fichiers sur les deux ordinateurs entre deux synchronisations...

Pour éviter tous ces soucis, il y a unison, qui permet de "synchroniser dans les deux sens" : il vérifie quels fichiers ont changé depuis la dernière synchronisation :

  • si un fichier a été modifié sur un seul ordinateur : il répercute la modification sur l'autre,
  • si il a été modifié sur les deux ordinateurs : il nous demande de choisir le quel est le bon ou bien le saute.

Un chouette avantage : unison fonctionne sous linux, windows et mac. On peut donc l'utiliser pour passer les infos d'un système à l'autre, mais cela pose quelques problèmes (les noms de fichiers doivent être compatible, Windows ne fait pas la différence entre "crier" et "CRIER", etc.) : pour cela il est préférable d'utiliser la version la plus récente d'unison (2.10.2) voire la dernière beta (2.12.0) qui supporte bien mieux OS X et un poil mieux Windows (avec Cygwin) tout en étant très stable. Le site officiel permet de télécharger les dernières versions (sources et binaires) et donne des informations importantes, notamment dans la FAQ.

Cela s'installe comme d'habitude :

# aptitude install unison

Il y a aussi unison-gtk qui permet d'avoir une interface graphique, je n'en parle pas ici (ni ailleurs, d'ailleurs).

La documentation se trouve dans /usr/share/doc/unison, elle bien faite, mais j'ai quand même eu quelques problèmes avant que tout ne fonctionne, alors j'explique un peu :

on lance unison à partir d'un des deux ordis à synchroniser, disons le portable :

 % unison profil.prf

dans le fichier profil, on précise :

  • les racines des répertoires à synchroniser (une racine pour chacun des deux ordis)
  • les répertoires/fichiers à synchroniser (avec les directives path, spécifiés par rapport à la racine). Si on ne met aucun path ou qu'on met un path vide, toute la racine sera synchronisée.

  • les répertoires/fichiers à ne *pas* synchroniser (avec les directives

    ignore) (même si ils correspondent à un path).

  • les répertoires/fichier que finalement on n'ignore pas (grâce à

    ignorenot), même si on les a précisés dans un ignore.

    /!\ Problème : pour que ignore et ignorenot fonctionnent bien, il faut que les path concernés soient spécifiés au même niveau. L'exemple suivant permet de synchronyser le home en ignorant les fichiers de config, sauf ceux propres à zsh :

     root = /home/seb
     root = ssh://monfixe.crans.org//home/seb
     path = #on synchronise tout /home/seb
     ignore = Path  .* #on ignore tout ce qui commence par /home/seb/.
     ignorenot = Path .zshrc #on synchr /home/seb/.zshrc
     ignorenot = Path .zsh #on synchr /home/seb/.zsh et ses fils
    Pour sauvegarder l'historique de gaim on pourrait imaginer ajouter la ligne suivante :
     ignorenot = Path .gaim/logs

    Mais ça ne convient pas car les "ordres" d'ignorer (ignore = Path .gaim) et de ne pas ignorer (ignorenot = Path .gaim/logs) sont donnés à des niveaux différents dans l'arborescence des fichers. Il faut en fait ajouter :

     ignorenot = Path .gaim
     ignore    = Path .gaim/*
     ignorenot = Path .gaim/logs

    ainsi ~/.gaim/logs sera synchronisé, mais pas ~/.gaim/smileys.

Par défaut unison demande confirmation pour toutes les actions, on peut changer ça avec 2-3 options :

  • auto : il demande pour les conflits (fichiers modifiés des deux côtés) et se débrouille tout seul pour les autres.

  • batch : il saute les conflits et se débrouille tout seul pour les autres.

  • prefer root1 : il résout les conflits en faveur de root1. On peut aussi mettre newer ou older à la place de root1.

  • force root1 : la version root1 est copié sur root2, en d'autres termes root1 est mirroré sur root2.

Unison stocke les informations sur les racines dans des fichiers "archives" du type : ~/.unison/arXXXXX. Leur nom dépend du nom complet de l'hôte (le FQDN) ; pour un portable, dont le nom de domaine varie suivant l'endroit où il est branché, cela pose problème car unison "oubliera" l'état des racines à chaque fois. Le plus simple est de fixer la variable UNISONLOCALHOSTNAME sur le portable, par exemple en ajoutant la ligne UNISONLOCALHOSTNAME=hostname_qlcq dans /etc/environment.

Enfin, pour que cela fonctionne, il faut que tous les ordis utilisent la même version d'unison. Supposons que le fixe soit en debian sarge et le portable en debian unstable, on peut forcer aptitude à maintenir unison avec la version de la sarge en ajoutant les lignes suivantes au fichier /etc/apt/preferences :

Package: unison
Pin: release a=sarge
Pin-Priority:1001

Evidemment, il faudra que le fichier /etc/apt/sources.list du portable contienne les mirroirs de sarge en plus de ceux d'unstable.

L'autre possibilité qui est plus simple et aussi recommandée tant que possible est d'installer le paquet unison2.9.1, plutôt que le paquet unison (la version d'unison en sarge est la 2.9.1).

Conclusion

Bien sûr, cela n'est qu'un exemple de système de sauvegarde qui convient à une personne (moi) et à un instant donné. Tout cela est à adapter en fonction des besoins des personnes et de la criticité des données.

Par exemple, pour la sauvegarde des serveurs du CR@NS, il est bien d'effectuer des sauvegardes incrémentales où l'on dispose de jeux de sauvegardes à des dates différentes. Et comme on ne peut tolerer de pertes de données, un RAID est indispensable. Tout cela se fait sur un serveur de sauvegarde uniquement dédié à cette tache et situé évidemment dans un bâtiment autre des serveurs de l'assoce. Plus de renseignements sur CransNounous/SauvegardeServeurs.

-- WikiBenoa, le 30 Mars 2005


CatégoriePagePublique