KubuntuBlog

Quand un cachalot vient de droite, il est prioritaire.
Quand il vient de gauche aussi O. de Kersauzon

Aller au contenu | Aller au menu | Aller à la recherche

vendredi 22 décembre 2006

Geekscotte de Noël

Via Geekscottes. Je vous invite d'ailleurs à aller lire le reste, c'est très savoureux.

Image de Johann "nojhan" Dréo sous Licence CC-BY-SA[1]

Notes

[1] comme les billets de mon blog d'ailleurs

Liens, voila du boudin !

Du non-geek :

Du geek :

  • Why Python ? Un article plutôt ancien (2000) de Eric Raymond sur pourquoi il a choisit Python plutôt que Perl. Et il a raison ;) Tant qu'on y est vouc connaissez la Python Reference Card ?
  • Hello World décliné dans près de 193 languages ! Très amusant et interressant pour avoir une petite idée de la syntaxe générale d'un language.

SpeedRun

Pff faire du SpeedRun avec Doom ou Quake c'est dépassé, autant utiliser un VRAI jeu ;)


dimanche 17 décembre 2006

Mumble : un serveur de chat vocal libre

Introduction

Icone Un serveur de chat vous permet de discuter à plusieurs au travers d'un réseau. C'est par exemple beaucoup utilisé dans la communauté des joueurs en ligne. Cela peut aussi vous permettre de mettre en place des conférences à peu de frais. En général c'est mis en place sous forme d'un réseau en étoile : Un serveur centralisé et N client qui se connectent. Charge au serveur de redistribuer l'audio vers les clients concernés.

Si vous avez déjà cherché un logiciel de ce type, vous connaissez surement teamspeak. Il fonctionne correctement et est multiplateforme. Mais c'est un logiciel propriétaire et la version pour Linux est un peu laissée à l'abandon.

Je vous invite donc à découvrir Mumble qui propose à peu prêt les même fonctions mais qui est libre et semble avoir un développement actif. De plus il se base sur un codec libre : Speex.

Installation

Si vous êtes sous Edgy, presque aucun problème[1], les auteurs proposent des paquets tous prêts. Je vous invite quand même à lire la suite pour la configuration.

Si vous êtes sous Dapper, ça se complique. En effet, la dernière version en date (Beta 0.9.4) n'est pas compatible avec la version de libspeex disponible.

Qu'a cela ne tienne, je vous ai fait des paquets de backport pour Mumble. Pour ne pas casser les autres logiciels qui dépendent de libspeex, j'ai statiquement lié la dernière version[2] avec Mumble. J'en ai profité pour ajouter quelques petits bonus qui vont vous simplifier la vie.

Vous pouvez donc les télécharger mumble et mumble-server dans mon dépot pour dapper.

Pour les installer :

sudo dpkg -i mumble_0.9.4-0ubuntu1_i386.deb
sudo dpkg -i mumble-server_0.9.4-0ubuntu1_i386.deb

Vous aurez surement d'autres paquets à installer, je pense par exemple à libqt4-core, libqt4-gui, libqt4-sql et libxevie1, mais vous remarquerez qu'il ne dépendent pas de libspeex qui est "embarqué"

Configuration

Murmur : le serveur

La configuration du serveur se fait à l'aide du fichier /opt/mumble-server/murmur.ini[3]. A priori, vous n'aurez rien à y changer. Par contre le répertoire /opt/mumble-server/ doit appartenir à l'utilisateur qui lancera murmur. Vous changerez le propriétaire de cette manière :

sudo chown -R jjl:jjl /opt/mumble-server/

Puis démarrez le :

murmur -ini /opt/mumble-server/murmur.ini

Ensuite il vous faut créer des utilisateurs. Pour cela un script CGI vous est fournit (murmur.pl). Notez que vous devrez sans doute installer d'autres paquets perl pour l'utiliser. A titre d'exemple j'ai du ajouter libnet-dns-perl, libdbix-abstract-perl et libdbd-sqlite3-perl.

Si vous ne disposez pas d'un serveur web, j'ai ajouté ce qu'il fallait[4] :

cd /opt/mumble-server/
./web.py

Un petit serveur web vous attend alors sur le port 31284 : http://localhost:31284/ il ne sert qu'a l'accès au script CGI. Renseignez alors les champs et vous allez recevoir un email d'activation de votre compte.[5]

Capture

Sinon, plus bourrin[6], vous pouvez aussi utiliser SQLite Browser pour ajouter les utilisateurs dans la table Players[7]

Capture

Pour ceux qui sont sous Edgy, vous pouvez disposer des mêmes outils en téléchargant le paquet mumble-server et en en extrayant les fichiers à l'aide de :

dpkg-deb -X mumble-server_0.9.4-0ubuntu1_i386.deb .

Par contre, à cause de ce bug vous devez être dans /opt/mumble-server/ avant de lancer murmur !

Mumble : le client

Lancez simplement mumble en ligne de commande et vous voyez apparaître sa jolie interface graphique. Pour vous connecter au serveur, rien de plus simple : Menu Server / Connect et entrez vos paramètres :

Capture

Vous pouvez alors créer des Channels, gérer les droits etc... Il ne vous reste qu'a trouver des copains pour discuter avec eux ;)

Capture

Précisions sur les paquets

Quelques petites notes sur la construction des paquets

  • Oui, ils n'ont pas été construits dans les règles de l'art, des modifictions existent hors du repertoire debian, les chemins d'install ne sont pas très beaux...
  • Vous pouvez trouver le patch à appliquer aux sources de Mumble 0.9.4 ici. Pour l'appliquer : patch -p0 < mumble-0.9.4-dapper.patch
  • Si vous voulez recompiler, speex doit être compilé en statique uniquement dans le répertoire speex-1.2beta1 au même niveau que mumble-0.9.4
  • J'en ai profité pour ajouter la correction de ce bug avec ce patch

PS: et je suis en train de vous préparer une traduction.

Notes

[1] sur le forum ca n'a pas l'air aussi évident

[2] Speex 1.2beta1

[3] Oui, je sais le chemin n'est pas très orthodoxe

[4] commandes à executer avec le même utilisateur que ci-dessus

[5] Notez bien que vos mails doivent pouvoir être délivrés à partir de votre machine. Allez voir la première partie de ce billet pour plus de détails

[6] et votre machine doit disposer d'un serveur XWindow

[7] le mot de passe est stocké en clair

lundi 11 décembre 2006

Peut-être la solution ?

Introduction: nous sommes en attente d'un permis de construire qui pose visiblement problème à certains

Remarque de E. 5 ans :

Papa, tu pourrais mettre un permis de construire sur ta liste au Père Noël !

Si cela pouvait être aussi simple ... :)

dimanche 10 décembre 2006

Explication rationnelle

Lu sur Entendu à Paris

Devant l'école élémentaire de la rue Madame (75006)
Petite file : Pourquoi je peux pas envoyer ma lettre au Père Noël par texto ?
Mère : Euh... ça capte mal au pôle Nord.

lundi 4 décembre 2006

[KDE] Un menu pour le traitement d'images

Vous voulez souvent faire des traitements sur vos images (réduction, compression, retournement, conversion) ? L'interface des KIPI plugins dans Gwenview vous rebute[1] ? La ligne de commande et les 1500 options de ImageMagick vous font peur ? Alors, voici peut-être LA solution que vous attendiez !

J'ai nommé Kim (KDE Image Menu)

Kim est un service menu pour Konqueror. C'est à dire un sous-menu additionnel qui viendra s'insérer sous Action dans le menu contextuel. Vous pourrez ainsi exécuter de multiples commandes ImageMagick d'un simple click de souris.

Ses fonctions en bref :

  • Re-compression (70%, 80%, 90% ou autre)
  • Redimensionnement (300x225, 600x450, 800x600, 1024x768, 1200x900 ou autre)
  • Paramètres pré-définis pour le web ou le mail
  • Conversion (JPG, PNG, GIF, TIFF ou autre)
  • Rotations
  • Renommage
  • Et plusieurs autres effets amusants (flash slideshow, gif animé, bordure ...)

Pour l'installer :

  • installez ImageMagick (disponible dans les dépots)
  • téléchargez Kim sur kde-apps
  • décompressez le
  • exécutez le script install.sh en tant que root (ie: avec sudo)[2]
  • relancez Konqueror

et voila !

Edit: Comme signalé dans les commentaires, vous pouvez simplement l'installer à partir des dépôts. Il est nommé konq-kim.

Pour l'utiliser, dans Konqueror :

  • click droit sur une/des images
  • Actions
  • Kim - ...

Capture écran

Je vous invite aussi à aller voir la démo pour vous faire une idée plus précise.

Pour les Gnomistes, allez voir NIS mais qui semble beaucoup plus limité. Il en existe sans doute d'autres.

Notes

[1] Mais pourquoi la destination est toujours la racine !

[2] il va s'installer dans /usr/share/apps/konqueror/servicemenus/, /usr/bin/ et /usr/share/apps/kim

Bacula 3 : Interface graphique, Trucs et astuces

Voici mon dernier article sur Bacula. Pour finir, voyons les interfaces graphiques ainsi que quelques astuces de configuration supplémentaires.

Interfaces graphiques

Plusieurs interfaces graphiques sont disponibles pour contrôler ou suivre Bacula :

  • bimagemgr : qui permet de gérer les cdroms utilisés par Bacula. Comme j'utilise des bandes, je n'ai pas cherché plus loin.
  • wx-console : Une interface graphique à bacula Console, c'est la plus avancée
  • gnome-console : une autre, moins avancée
  • tray-monitor : un démon associé à une icône dans la barre des tâches pour suivre le fonctionnement de Bacula.
  • bacula-web : Une interface web en php pour suivre l'évolution des sauvegardes. C'est un programme read-only et qui ne fonctionne pas avec une base SQLite[1] !

L'utilisation d'une interface graphique était seulement une option de mes prés-requis. Mais je doit dire que la possibilité d'avoir une icone dans la barre des tâches pour suivre mes sauvegardes m'a emballé !
Malheuresement, je n'ai pas pu tester cette fonction. En effet, les paquets Dapper de Bacula n'integrent que les consoles Gnome et WxWidget. Le tray-monitor n'est pas présent.
Voila peut-être une raison de passer à Edgy sur le poste bureautique. Reste à vérifier la compatibilité des versions 1.36.3 de Dapper et 1.38.11 de Edgy !

WxConsole

Nous allons quand même installer et configurer cette interface graphique[2] :

Penfret$ sudo apt-get install bacula-wxconsole

Il nous faut maintenant configurer l'interface graphique pour lui indiquer sur quel Director se connecter :

Penfret$ sudo vi /etc/bacula/wx-console.conf

Modifiez le de cette manière :

Director {
Name = FortCigogne-dir # correspond au Name de bacula-dir.conf
DIRport = 9101
address = FortCigogne
Password = ""
}

Et voila, pour lancer votre interface graphique :

Penfret$ sudo bacula-wxconsole -c /etc/bacula/wx-console.conf

wx-console

Deux onglets s'offrent à vous :

  • Console qui est une interface directe à la console texte
  • Restore qui vous propose une interface à la souris pour les opérations de restauration

A noter que la dernière version semble un peu plus évoluée wx-console

Mais la version que j'ai testé semble très mal en point :

  • les options de la page de man ne sont pas reconnues
  • je n'ai pas réussit à faire fonctionner l'onglet restore
  • une fois sur deux, je n'ai aucune possibilité d'action

Bref, la version Dapper est assez décevante :(

Bacula-web

Cette interface semble très interresante, mais ne fonctionne pas avec une base SQLite.

Si vous utilisez une autre base, je vous renvoi vers une doc d'installation pour Debian ou vers le site officiel ou vous trouverez des screenshots qui font envie. :)

BaculaWeb

Trucs et astuces

logrotate

Plus qu'une astuce, cette partie est essentielle

Le fichier de log de bacula grossit ad vitam aeternam nous devons donc aussi configurer logrotate pour qu'il s'occupe de ce fichier. Normalement bacula est fournit avec un fichier d'exemple, mais dans dapper il semble ne pas exister. Vous pouvez trouver sur le CVS de bacula le fichier qui devrait être livré.

Pour le créer vous même, suivez cette procedure :

# edition du fichier en tant que root
$ sudo vi /etc/logrotate.d/bacula

Puis ajoutez y ces lignes :

/var/lib/bacula/log {
monthly
rotate 5
notifempty
missingok
}

Effacer la base de donnée de test

Normalement il existe un script drop_bacula_tables qui devrait faire le travail. mais chez moi il n'est pas installé. Donc voici la procedure pour remettre la base sqlite à zero :

$ cd /var/lib/bacula/
$ sudo mv bacula.db bacula.db.test
$ sudo /usr/share/bacula-director/make_sqlite_tables
$ sudo chown bacula:bacula bacula.db
$ ls -la bacula.db*
-rw-r- 1 bacula bacula  41984 2006-11-27 15:31 bacula.db
-rw-r- 1 bacula bacula 328704 2006-11-27 14:46 bacula.db.test

logwatch

logwatch est un utilitaire qui vous permet de suivre vos fichiers de log sans trop vous fatiguer. En effet une fois configuré, vous recevez tous les jours par mail un résumé des logs du jour. J'ai déjà détaillé l'installation et la configuration de logwatch dans un précedent billet.

De même que pour logrotate des fichiers tout prets devraient être fournit, mais je ne les ai pas trouvé. Vous pouvez aller les chercher sur le CVS de bacula téléchargez les fichiers et copiez les (en tant que root) dans le répertoire nécessaire (qui devra éventuellement être créé) :

  • bacula dans /etc/logwatch/scripts/services/ (pensez à le rendre executable par tous: chmod a+x)
  • services.bacula.conf dans /etc/logwatch/conf/services/ avec pour nom bacula.conf
  • logfile.bacula.conf.in dans /usr/share/logwatch/default.conf/logfiles/ avec pour nom bacula.conf[3].

Enfin, modifiez ce dernier fichier en remplaçant @working_dir@/log par le fichier de log de bacula, soit /var/log/bacula/log

Pour tester votre nouvel ajout, utilisez la commande suivante[4] :

sudo logwatch --print --detail high --service bacula --range today

A faire

Il vous reste un peu plus de configuration à faire. Je pense notament à des choses comme :

  • mettre des mots de passes pour sécuriser vos démons
  • changer les démons qu'ils n'ecoutent que sur le reseau local
  • ajouter des fileset ou des file dans le fileset pour sauvegarder plus que /etc
  • étudier la possibilité de faire des sauvegardes complètes
  • ...

Pour aller plus loin

Voici quelques liens qui vous permettront d'en voir un peu plus que cette petite introduction.

Pour Bacula :

Les autres logiciels de sauvegarde :

Voila, c'en est fini de ces articles sur Bacula. J'espère qu'ils vous seront utiles et surtout qu'ils vont vous inciter à sauvegarder vos données !

Notes

[1] J'ai bien l'intention d'aller voir cela de plus prêt

[2] Attention les noms de paquets ont changés en Edgy

[3] normalement on devrait le mettre dans /etc/logwatch/conf/logfiles mais cela semble ne pas fonctionner

[4] Les droits root sont necessaires pour lire le fichier de log

dimanche 3 décembre 2006

Bacula 2 : Sauvegarder, restaurer et ajouter un client

Voici le deuxième article de ma série sur la sauvegarde d'un réseau local. Nous allons étudier le processus de sauvegarde/restauration (sur le serveur) puis configurer la sauvegarde d'une nouvelle machine.

Notez que l'affichage des commandes a été allégé dans un but de simplification de l'article. Si vous les executez vous même, beaucoup plus d'informations apparaîtront. J'ai essayé de ne garder que le plus pertinent. Les ... signalent à peu pret les endroits ou j'ai coupé.
Rappelons aussi que le serveur de sauvegarde est nommé FortCigogne et le nouveau client Penfret. Les commandes sont préfixées par le nom de machine sur laquelle elles doivent être executées.

Sauvegarder

Voyons comment lancer une sauvegarde à la main.

Creer les Volumes de stockage

Les exemples sont pour des bandes, mais une procedure similaire est à faire dans les autres cas (Fichiers, dvd...).

Il faut affecter un Label aux différents média (les nommer) et les ajouter au Pool de sauvegarde (nous utilisons celui par défaut). Cette opération permet à bacula de connaître chaque média. Pensez aussi à étiquetter (physiquement) vos médias avec le label affecté.

Si la bande n'est pas vierge ou a déjà servi pour des tests, commencez par la nettoyer.

## arretons le Storage daemon qui a peut-être vérouillé le lecteur
$ sudo invoke-rc.d bacula-sd stop
## on rembobine
$ sudo mt -f /dev/st0 rewind
## on "efface"
$ sudo mt -f /dev/st0 weof
## on redemarre le Storage daemon
$ sudo invoke-rc.d bacula-sd start

Note: Si elle est deja utilisée dans un Pool de bacula utilisez plutôt purge et relabel

Puis labelisez la à l'aide de la Console (Plus d'infos dans la doc rapide ou de référence) :

$ sudo bconsole
*label
Using default Catalog name=MyCatalog DB=bacula
Automatically selected Storage: DDS-3
Enter new Volume name: Backup01
Automatically selected Pool: Default
...
3001 Device /dev/st0 is mounted with Volume "Backup01"
*list media
Pool: Default
+---------+------------+-----------+-----------+------------+ ...
| MediaId | VolumeName | VolStatus | MediaType |LastWritten |
+---------+------------+-----------+-----------+------------+
| 1       | Backup01   | Append    | DDS-3     | 0          |
+---------+------------+-----------+-----------+------------+
*quit

Démarrer une Sauvegarde

Pour lancer notre sauvegarde à la main, nous allons utiliser la Console :

FortCigogne$ sudo bconsole
*show filesets
FileSet: name=Config
      I /etc
FileSet: name=Catalog
      I /var/lib/bacula/bacula.sql
...
*status dir
FortCigogne-dir Version: 1.36.3 (22 April 2005) i486-pc-linux-gnu debian testing/unstable
Scheduled Jobs:
Level          Type     Pri  Scheduled          Name               Volume
===================================================================================
Incremental    Backup    10  28-Nov-06 01:05    FortCigogne_Config Backup01
Full           Backup    11  28-Nov-06 01:10    BackupCatalog      Backup01
...
*run
A job name must be specified.
The defined Job resources are:
     1: FortCigogne_Config
     2: BackupCatalog
     3: RestoreFiles
Select Job resource (1-3): 1
Run Backup job
JobName:  FortCigogne_config
...
OK to run? (yes/mod/no): yes
Job started. JobId=1
*status dir
...
Running Jobs:
 JobId Level   Name                       Status
======================================================================
     1 Full    FortCigogne_Config.2006-11-27_21.21.51 is running
...

Quand il est terminé, vous pouvez voir le rapport en tapant messages. Si vous avez configuré correctement l'envoi de mail, vous devriez aussi en recevoir un.

Restaurer des fichiers

Toujours à partir de la Console :

*restore all
Using default Catalog name=MyCatalog DB=bacula
To select the JobIds, you have the following choices:
    1: List last 20 Jobs run
    2: List Jobs where a given File is saved
    3: Enter list of comma separated JobIds to select
    4: Enter SQL list command
    5: Select the most recent backup for a client
    6: Select backup for a client before a specified time
    7: Enter a list of files to restore
    8: Enter a list of files to restore before a specified time
    9: Cancel
Select item:  (1-9): 5
+-------+----------+---------------------+------------+ ...
| JobId | JobFiles | StartTime           | VolumeName |
+-------+----------+---------------------+------------+
| 1     | 1157     | 2006-11-27 21:21:53 | Backup01   |
+-------+----------+---------------------+------------+
You have selected the following JobId: 1
...
cwd is: /
#### A ce moment vous pouvez selectionner quels fichiers vous allez restaurer
#### Pour la manière de faire, voyez toujours dans la documentation
$ done
The job will require the following Volumes:
   Backup01
1157 files selected to be restored.
Run Restore job
JobName:    RestoreFiles
Where:      /tmp/bacula-restores
...
OK to run? (yes/mod/no): yes
Job started. JobId=2
*quit

Vous notez que la restauration se fait dans un repertoire temporaire. Cela se change dans bacula-dir.conf ou via la Console.

Vous pouvez tester la restauration :

FortCigogne$ sudo diff /tmp/bacula-restores/etc/ /etc/

Ajouter un client

Nous allons maintenant ajouter la sauvegarde d'une autre machine : Penfret.

Installer et Configurer le client

Sur les clients, seul le service de fichier est necessaire :

Penfret$ sudo apt-get install bacula-fd
Penfret$ sudo vi /etc/bacula/bacula-fd.conf

Modifiez le de cette manière :

# Authorise le serveur a se connecter
Director {
Name = FortCigogne-dir # Correspond au Name de Director dans bacula-dir.conf sur le serveur
Password = ""
}

Verifiez la syntaxe de votre fichier et redémarrez le File daemon :

Penfret$ sudo bacula-fd -t -c /etc/bacula/bacula-fd.conf
Penfret$ sudo invoke-rc.d bacula-fd restart

Configurer le serveur

Nous allons donc modifier la configuration du serveur pour y ajouter un nouveau Job et un nouveau Client. Editez le fichier bacula-dir.conf
Les modifications sont assez similaires à celles que nous avons vu pour la sauvegarde du serveur FortCigogne.



Job {
Name = "Penfret_Config"
JobDefs = "DefaultJob"
FileSet = "Config" # Ici le même que pour FortCigogne
Client = Penfret-fd # Voir Client ci-dessous
Write Bootstrap = "/var/lib/bacula/Penfret.bsr"
}

Client {
Name = Penfret-fd # voir Job ci-dessus
Address = Penfret # La nouvelle machine à sauver
FDPort = 9102
Catalog = MyCatalog
Password = "" # password for FileDaemon
File Retention = 30 days # 30 days
Job Retention = 6 months # six months
AutoPrune = yes # Prune expired Jobs/Files
}

Redémarrez le Director daemon pour prendre en compte vos modifications.

FortCigogne$ sudo bacula-dir -t -c /etc/bacula/bacula-dir.conf
FortCigogne$ sudo invoke-rc.d bacula-director restart

Pour vérifier que le nouveau client est bien connu, utilisez la console :

FortCigogne$ sudo bconsole
*status dir
Scheduled Jobs:
Level          Type     Pri  Scheduled          Name               Volume
===================================================================================
Incremental    Backup    10  28-Nov-06 01:05    FortCigogne_Config Backup01
Incremental    Backup    10  28-Nov-06 01:05    Penfret_Config     Backup01
Full           Backup    11  28-Nov-06 01:10    BackupCatalog      Backup01
...

Vous pouvez alors le sauvegarder de la même manière que vue pour le serveur.

A noter, nous n'avons pas modifié la programation automatique des sauvegardes. Par défaut, elles sont toutes les nuits à partir de 1h05 :

  • Complètes (Full) le 1er dimanche de chaque mois
  • Différentielles (Difeferential) les autres dimanches
  • Incrémentales (Incremental) les autres jours

Pour plus d'explications, allez lire ... la documentation ;)

Dans le dernier article nous découvrirons les possibilités d'utiliser une interface graphique, comment paufiner un peu notre configuration et enfin tous les liens pour aller plus loin.

samedi 2 décembre 2006

Bacula 1 : Installation et configuration du serveur

Cet article est le premier d'une série de trois. Nous allons voir comment installer et configurer une solution de sauvegarde réseau. Nous pourrons ainsi centraliser sur un serveur la sauvegarde des données de toutes les machines du réseau.

Introduction

Cahier des charges

J'ai récupéré il y a peu de temps un lecteur de bandes SCSI et quelques bandes DDS-3. Je me suis donc mis en recherche d'une solution de sauvegarde qui me permette de centraliser celle-ci sur le serveur pour toutes les machines du réseau. Mon cahier des charges était le suivant :

  • Présent empaqueté dans Ubuntu
  • Gestion automatique d'un catalogue
  • Sauvegarde centralisée sur un serveur de backup
  • Possibilité de gérer plusieurs clients indépendants
  • Gestion d'un lecteur de bandes mais aussi d'autres médias (disque dur, cdroms, dvds)
  • Si possible présence d'une inteface graphique pour gérer et suivre les sauvegardes

Après avoir étudié plusieurs logiciels, je me suis orienté vers Bacula qui répond à tous mes prés-requis. Il a l'avantage de disposer d'une documentation très bien faite et presque entièrement en Français. Par contre il semble très puissant et donc compliqué à mettre en place. Nous verrons qu'en fait un peu de rigueur et pas mal de lecture font qu'il ne l'est pas tant que ca.

Vue d'ensemble

Pour avoir une idée plus complète des composants de Bacula, je vous renvoi vers la documentation

Voici quand même une brève introduction des composants :

  • Director daemon : composant principal de Bacula, il va diriger tous les autres.
  • Storage daemon : c'est le service qui va s'occuper d'écrire les fichiers de sauvegarde. Dans notre cas il accèdera au lecteur de bandes
  • File daemon : c'est la partie client qui va lire les fichiers à sauvegarder sur chaque machine et les envoyer au Storage daemon. Il doit y en avoir un par machine à sauvegarder.
  • Bacula console : c'est l'interface utilisateur. Grâce à lui nous pourrons communiquer avec le Director et gérer nos sauvegardes (les lancer, voir les rapports ...)

Voyons aussi rapidement les termes employés dans la configuration de Bacula :

  • FileSet : Quels fichiers allons nous sauvegarder ? c'est le point d'entrée des File daemon
  • Client : Quelles machines devons nous sauvegarder ?
  • Schedule : Quand les sauvegardes doivent être executées ?
  • Pool : Ou ces sauvegardes seront-elles écrites ? Cela peut-être par exemple un ensemble de bandes.
  • service / daemon / démon : tous ces termes désignent un processus qui fonctionne en arrière plan sur votre ordinateur. Vous connaissez surement cron ou Xorg ou encore apache qui sont tous des démons.

Installer le lecteur de bandes

Cette partie est spécifique à ma configuration. Si le votre est déjà fonctionel ou que vous sauvegardez autrement vous pouvez passer au point suivant.

## module de la carte SCSI ISA
$ sudo modprobe aha1542  aha1542=0x230
## module du lecteur de bandes
$ sudo modprobe st
## Testons maintenant le fonctionnement
$ sudo mt -f /dev/st0 status
drive type = Generic SCSI-2 tape
drive status = 620756992
[...]
## Faire une sauvegarde The old way : avec tar
$ cd /tmp
$ cat > test
Bonjour, je suis un fichier de test.
^D
$ sudo mt -f /dev/st0 rewind
$ sudo tar cvzf /dev/st0 test
test
$ sudo rm test
$ sudo tar xvzf /dev/st0 test
test
$ cat test
Bonjour, je suis un fichier de test.

Si tout cela fonctionne, on peux alors ajouter les modules à /etc/modules.

Bacula sur le serveur

Note: Cette installation à été faite sur une Ubuntu Dapper. Si votre serveur est en Edgy[1] quelques différences peuvent apparaître.

Installer

Comme bacula est disponible en paquets, l'installation est très simple. Une seule chose à faire : choisir quelle base de donnée hébergera le catalogue des fichiers sauvegardés.
Vous avez le choix entre MySQL, PostgreSQL ou SQLite. Pour simplifier l'installation, nous choisirons SQLite qui ne nécessite pas de démon de BDD.

$ sudo apt-get install bacula-director-sqlite bacula-sd bacula-console bacula-fd

Dans la suite de ces articles, nous allons créer une configuration pour sauvegarder

  • le répertoire /etc du serveur FortCigogne
  • le Catalogue des fichiers sauvegardés (en fait c'est déjà configuré par défaut)
  • le répertoire /etc d'une autre machine : Penfret

Configurer

La configuration est centralisée dans le répertoire /etc/bacula.

Storage Daemon

Ce service s'occupe d'ecrire les fichiers sur le media choisi. Dans notre exemple, un lecteur de bandes. Pour les autres médias, voir sur le site de Bacula

$ sudo vi /etc/bacula/bacula-sd.conf

Beaucoup d'exemples sont présents dans ce fichier. Pour mon lecteur de bandes :

Device {
Name = "HP C1537A"
Media Type = DDS-3
Archive Device = /dev/st0
AutomaticMount = yes; # when device opened, read it
AlwaysOpen = yes;
RemovableMedia = yes;
RandomAccess = no;
}

Vous pouvez vérifiez la syntaxe du fichier de configuration avec cette commande :

$ sudo bacula-sd -t -c /etc/bacula/bacula-sd.conf

puis redémarrez le daemon.

$ sudo invoke-rc.d bacula-sd restart
Director Daemon

Ce service controle et commande tout le processus de backup. Sa configuration est la plus ardue. Voir la documentation pour tous les détails

$ sudo vi /etc/bacula/bacula-dir.conf

Modifiez la configuration par defaut (commentaires en ajoutant un # devant la ligne) :

  • dans JobDefs
    • commentez uniquement la ligne FileSet = "Full Set"
    • Changez le Storage pour le votre, voir la directive Storage ci-dessous
  • pour les Job
    • commentez entièrement le Job correspondant à Client1
  • pour les FileSet
    • commentez entièrement le FileSet correspndant à Full Set[2]
  • pour les Storage
    • si vous sauvegardez autrement que sur fichiers, commentez le Storage File

Ajoutez alors votre propre configuration.

D'abord quelle couple Machine / Fichiers allons nous sauvegarder ?

# Configuration de FortCigogne
# Sauvegarder les fichiers de /etc pour Fortcigogne
Job {
Name = "FortCigogne_config"
FileSet = "Config" # doit correspondre à la directive FileSet ci-dessous
JobDefs = "DefaultJob" # paramètres non spécifiques à ce Job
Write Bootstrap = "/var/lib/bacula/FortCigogne.bsr"
}

Définissons maintenant les fichiers à sauvegarder :

# Fichiers de /etc
FileSet {
Name = "Config" # utilisé dans Job/FileSet
Include { # Fichiers à inclure dans la sauvegarde
Options {
signature = MD5
compression = GZIP
}
File = /etc # Une ou plusieurs ligne correspondant aux repertoires à sauver
}
}

Enfin définissons le lieu de sauvegarde (ici aussi beaucoup d'exemples sont présents) :

# Sauvegarde sur bandes
Storage {
Name = DDS-3 # Le nom utilisé dans JobDef ci-dessus
Address = FortCigogne # le serveur hébergant le Storage daemon
SDPort = 9103
Password = ""
Device = "HP C1537A" # doit correspondre au Device définit dans bacula-sd.conf
Media Type = DDS-3
}

Pour la restauration, pensez à changer les lignes Storage et FileSet du Job RestoreFile pour coller à votre media/fileset. Dans mon exemple ce sera DDS-3 et Config

Notes sur les mails:

  • Vous pouvez aller voir la première partie de ce billet pour configurer l'envoi de mails locaux.
  • Les rapports seront envoyés par email à l'utilisateur root. Pour changez cela, modifiez mail et operator dans les diretives Messages
  • Si votre FAI necessite une adresse email valide dans le from, remplacer le -f des mailcommand et operatorcommand par l'email voulu, par exemple :

... -f \"\(Bacula\) root@domain.tld\" ...

Testez la syntaxe de votre fichier :

$ sudo bacula-dir -t -c /etc/bacula/bacula-dir.conf

et redemarrez le daemon director

$ sudo invoke-rc.d bacula-director restart

Voila, dans le prochain article, nous verrons comment Sauvegarder puis restaurer des fichiers. Ensuite nous ajouterons une nouvelle machine à notre processus de sauvegarde.

Edit du 03/12: typo et ajout des liens vers la suite

Notes

[1] quelle drole d'idée ! ;)

[2] profitez en pour lire les commentaires très instructifs