Un système de backup automatique

Publié le dans « Informatique ». Mots-clefs : Libre, Administration

On le sait tous, il faut faire des sauvegardes de manière régulière. On le sait également, pour que celles-ci se fassent sur le long terme, il faut que celles-ci se fassent de manière automatique, et sur un autre support que le PC que l’on souhaite sauvegarder. Le problème qui se pose est le suivant: comment concilier ces deux conditions sur un PC de bureau (ne disposant donc pas d’une série de serveur allumés en permanences et prêt à recevoir nos sauvegardes en continu…) ?

Pour répondre à tout cela, nous allons mettre en place un système de backup sur disque dur externe, qui se lancera à chaque fois que notre disque sera monté. À chaque fois que le disque dur sera allumé, la sauvegarde s’enclenchera. Cela ne garantit pas, bien sûr que les sauvegardes se feront à un intervalle régulier, mais cela garantit au moins que nous n’aurons pas à nous en soucier. Pour cela nous allons utiliser les outils qui sont disponibles sous un environnement Linux: rsync et hal. Cet article nous présente une base pour faire notre sauvegarde Une sauvegarde améliorée avec rsync. Nous allons juste devoir le modifier un petit peu pour répondre à un problème qui arrive souvent avec les périphériques USB : selon que d’autres périphériques sont déjà montés ou non, nous ne savons pas dans quel répertoire nous allons nous trouve. Il va donc falloir mettre en place une ligne pour récupérer le répertoire dans lequel nous sommes. Il ne nous reste plus qu’à trouver le moyen de l’éxécuter automatiquement pour cela nous allons utiliser halevt. Le script est disponible ici.

Comme son nom l’indique, halevt est un gestionnaire d’évènements pour hal. Hal est un gestionnaire d’évènement matériel sous Linux; il envoie des informations à chaque fois que des informations sont envoyées depuis les composants. Cela permet de détecter le branchement d’un périphérique USB et de le monter sur le bureau (et qui nous simplifie grandement la vie aujourd’hui!!!). Halevt est un démon à l’écoute des informations qui nous sont envoyées par hal, et d’activer des actions en conséquence: par exemple pour lancer l’antivirus sur la clef usb, reconfigurer le mappage du clavier en fonction de la marque que l’on branche etc. Pour notre part, nous allons nous contenter de lancer un script (celui du backup mentionné plus haut).

Pour commencer nous allons devoir identifier le lecteur à mettre sous surveillance: inutile de se baser sur les noms de montage habituels (/dev/sda par exemple) en effet en fonction des périphériques déjà branchés nous n’allons pas obtenir la même configuration. Nous allons utiliser les point de montage défini dans /dev/disk/by-uuid qui permet d’obtenir l’identifiant de notre disque (et qui sera repris par la suite dans la configuration de hal ). Une fois que nous avons relevé quel est le disque concerné, il faut mettre en place une entrée pour notre évènement dans la configuration de halevt:

<halevt:Device match="hal.block.device &amp; hal.block.is_volume = true &amp; hal.volume.uuid = fd20536f-7b80-4a80-8c3d-b5bebe8fb484">
<halevt:Property name="hal.volume.is_mounted">
<halevt:Action value="true" exec="bash $hal.volume.mount_point$/chemin/script/backup-ssh.sh"/>
</halevt:Property>
</halevt:Device>

Cela si halevt est exécuté avec les droits de l’utilisateur lançant le backup. Si on le fait tourner en démon, il faut trouver une autre solution (sur mon poste j’ai utilisé sudo, mais on peut très bien se baser sur le sticky bit pour donner les droits au script). De même, dans la configuration mise en place, le script se trouve sur le disque de stockage (de manière à pouvoir le lancer à la main si le démon n’est pas disponible), cela peut être adapté en fonction de chacun…

Dans le cas d’une configuration multi-utilisateur, je pense qu’il est nécessaire de passer par un script qui lance les différentes sauvegardes sous le bon groupe de l’utilisateur à chaque fois. (Ce qui en plus permet d’éviter le problème du sudo) mais je n’ai pas eu besoin d’aller jusque-là pour l’instant! À vous d’adapter ce que je vous propose en fonction de votre configuration!

À lire aussi :

Commentaires :

  • Avatar
    birdwing 2010-02-02T00:38:03

    Bonjour,
    je tente de mettre en place votre mode de sauvegarde mais envain.
    1. votre fichier xml halevt me retourne des erreurs :

    ~ $ halevt
    /home/sbi/.halevt/backup.xml:1: namespace error : Namespace prefix halevt on Device is not defined
    ="hal.block.device & hal.volume.uuid = 527f851d-c237-4380-956e-29c7c6b6ef2b"
    ^
    /home/sbi/.halevt/backup.xml:2: namespace error : Namespace prefix halevt on Property is not defined

    ^
    /home/sbi/.halevt/backup.xml:3: namespace error : Namespace prefix halevt on Action is not defined
    value="true" exec="bash $hal.volume.mount_point$/home/sbi/script/backupdisk.sh"
    ^
    parse_config.c:387 (halevt_parse_config) Document incorrect, l'élément racine aurait du être Configuration
    manager.c:346 (main) L'analyse du fichier configuration /home/sbi/.halevt/backup.xml a échouée

    2.je ne comprends pas bien comment fonctionne le script concrètement puisque je ne vois pas bien comment est indiqué la destrination; je veux dire par là, il n'y a pas de '/dev/sdcn' ou '/media/mondiskdebackup'.

    • Avatar
      Chimrod 2010-02-16T21:03:46

      1) Pour ce qui est du problème XML il faut que je regarde en détail ce que cela donne, j'ai peut être une erreur dans la version du fichier que j'ai mis en ligne…
      2) Pour ce qui est de la destination, elle est donné par hal dans la valeur $hal.volume.mount_point$ ( et dans l'exemple le script de sauvegarde est stocké sur le volume dans lequel nous faisons nos sauvegardes ). Cela peut être adapté et passé en argument au script que nous cherchons à lancer.

  • Avatar
    Freakazohid 2009-10-25T18:38:24

    Je viens de me souvenir que je n'ai pas fait de sauvegardes depuis Juin 2009. Il y a eu de gros problèmes avec Maestro. Bon, cela n'excuse rien. Mieux vaut tard que jamais! En espérant que , je pourrais rattraper mon retard. Merci de tes conseils et de m'avoir rassurée!