Apportez votre aide…
Bacula : sauvegarder régulièrement son PC
Bacula est un logiciel open source de sauvegarde professionnel. Il permet de sauvegarder le contenu d'un PC, ou plusieurs PC en réseau.
Bacula dispose de très nombreuses fonctionnalités. Utilisé correctement vous serez toujours certain de pouvoir restaurer n'importe quel fichier, à n'importe quelle date (retrouver un texte par exemple tel qu'il était rédigé il y a deux mois, sachant que vous l'avez modifié 10 fois depuis, etc.)
MAIS SA CONFIGURATION FINE NÉCESSITE DE NOMBREUSES CONNAISSANCES PROPRES AU MONDE DE LA SAUVEGARDE.
Cette page ne pourra jamais vous dispenser d'aller jeter un coup d'œil au manuel (en anglais) situé ici.
Pré-requis
- Disposer des droits d'administration.
- Disposer d'une connexion à Internet configurée et activée.
- installez le paquet xfsprogs 1). Ce paquet ne s'est requis que si l'on choisi d'utiliser une partition de type XFS. Il est tout à fait possible d'utiliser EXT4 qui est pris en charge nativement.
Installation
installez les paquets bacula et bacula-console-qt (utile pour la restauration).
Exemple d'utilisation : Sauvegarde automatique sur un second disque dur
Ce tutoriel est destiné à ceux qui souhaitent sauvegarder automatiquement leur configuration et leurs fichiers, afin de ne rien perdre en cas de crash disque, de corruption de données (ou simplement de suppression de fichiers trop rapide).
Il est possible de sauvegarder sur des bandes magnétiques ou des DVD, mais étant donné le prix d'un lecteur de bandes, nous allons utiliser une méthode moins coûteuse : un second disque dur (quelques centaines de Go, ce qui dans une optique de sauvegarde personnelle est largement suffisant).
Préparation
Installation optionnelle
Afin de pouvoir être averti par mail que la sauvegarde a été effectuée ou des problèmes éventuels, installer :
- installez les paquets postfix (choisir l'option site internet lors de l'installation) et dovecot-pop3d (afin de pouvoir lire les mails avec Evolution ou Thunderbird via POP3)
mail_location = mbox:~/mail:INBOX=/var/mail/%u
puis taper dans un terminal :
/etc/init.d/dovecot restart
afin que le changement de configuration soit pris en compte
Installation du second disque dur
Je suppose ici que le second disque dur est monté sur /dev/sdb1
(c'est à dire le second disque IDE/SATA).
Pour plus de détails sur la numérotation/nommage des disques durs, voir http://www.debian.org/releases/stable/i386/apcs04.html.fr
- création du répertoire où seront stockés les fichiers de sauvegarde :
/opt/SAUVEGARDE
sudo mkdir /opt/SAUVEGARDE
- création de la partition xfs et formatage du deuxième disque dur avec gparted
Normalement il est maintenant possible de monter le second disque dur :
sudo mount /opt/SAUVEGARDE
Configuration de Bacula
Niveau de sauvegarde pour bacula
Type de sauvegarde | Définition |
---|---|
Totale (Full) | Une sauvegarde complète (autrement dit de tout ce qui est dans les répertoires listés). Attention si vous modifiez la liste des fichiers/répertoires à sauvegarder dans /etc/bacula/bacula-dir.conf , une sauvegarde totale sera effectuée la première fois. |
Differentielle (Differential) | Une sauvegarde qui inclut tous les fichiers modifiés depuis le lancement de la dernière sauvegarde complète (Full). Notez que d'autres logiciels de sauvegarde peuvent définir ceci différemment. |
Incrementale (Incremental) | Une sauvegarde qui inclut tous les fichiers modifiés depuis le lancement de la dernière sauvegarde complète (Full), différentielle, ou incrémentale. Normalement spécifié dans la directive Level (niveau) dans la définition de la ressource Job, ou dans une ressource Schedule. |
Pour plus de détail voir ici.
Edition de /etc/bacula/bacula-dir.conf
éditez /etc/bacula/bacula-dir.conf
- Dans JobDefs, ajouter :
JobDefs { .... # cf http://www.bacula.org/en/dev-manual/Automated_Disk_Backup.html Full Backup Pool = Full-Pool Incremental Backup Pool = Inc-Pool Differential Backup Pool = Diff-Pool # fin modif ...... }
- Définir le 1er Job de sauvegarde
Job { Name = "BackupConti" JobDefs = "DefaultJob" Write Bootstrap = "/opt/SAUVEGARDE/bacula/Client1.bsr" }
- Définir où seront créées les restaurations
Job { Name = "RestoreFiles" #changer la ligne ci-dessous Where = /opt/SAUVEGARDE/bacula-restores
- Déclarer ce qu'on va sauver
FileSet { Name = "Full Set" Include { Options { signature = MD5 compression=GZIP } File = /etc File = /home/mon_nom_d'utilisateur File = /home/mon_second_utilisateur
- Déclarer ce qu'on ne veut pas sauver
Exclude { # File = /proc # File = /tmp File = /home/mon nom d utilisateur/tmp File = /home/mon nom d utilisateur/Modèles File = /home/mon nom d utilisateur/.thumbnails File = /home/mon nom d utilisateur/.mozilla/firefox/e3s99zut.default/Cache File = /home/hmon nom d utilisateur/.gimp-2.6 File = /home/mon nom d utilisateur/.google File = /home/mon nom d utilisateur/.googleearth File = /home/mon nom d utilisateur/.local/share/Trash/ File = /home/mon nom d utilisateur/.gvfs # File = /.journal # File = /.fsck }
.local/share/Trash/ est la corbeille
.mozilla/firefox/e3s99zut.default/Cache est le cache du navigateur (remplacer "e3s99zut" par le dossier correspondant à votre profil)
.thumbnails est pour les photos
- Planifier les sauvegardes à des heures ou le PC est allumé
Schedule { Name = "WeeklyCycle" Run = Full 1st sun at 19:05 Run = Differential 2nd-5th sun at 19:05 Run = Incremental mon-sat at 19:05 }
- Sauvegarder la base de données. C'est avec celle-ci que Bacula peut savoir quel fichier a été sauvé et à quel moment. En cas de perte de la base de données (par ex. en cas de crash disque) il est nécessaire d'avoir une copie de celle-ci.
# This schedule does the catalog. It starts after the WeeklyCycle Schedule { Name = "WeeklyCycleAfterBackup" Run = Full sun-sat at 19:20 }
- Copier les bootstrap. Ce sont les fichiers qui permettront la restauration en cas de perte de données. On les met sur la partition de sauvegarde
Write Bootstrap = "/opt/SAUVEGARDE/bacula/BackupCatalog.bsr" Write Bootstrap = "/opt/SAUVEGARDE/bacula/Client1.bsr"
- Remplacer <CatalogName> par le vrai nom (MyCatalog) pour le dump de la base de donnée MySQL dans le code ci dessous :
Job { # WARNING!!! Passing the password via the command line is insecure. # see comments in make_catalog_backup for details. # Arguments to make_catalog_backup are: # make_catalog_backup <database-name> <user-name> <password> <host> # # Ubuntu uses make_catalog_backup_awk script for # security reasons # Replace <CatalogName> with the real Catalog name # #autrement dit mettre cat1=MyCatalog dans la ligne ci dessous RunBeforeJob = "/usr/bin/awk -f /etc/bacula/scripts/make_catalog_backup_awk -v cat1=MyCatalog /etc/bacula/bacula-dir.conf" ----- }
- Indiquer l'utilisateur qui va bien pour les mails
mail = mon_nom_utilisateur@localhost = all, !skipped operator = mon_nom_utilisateur@localhost = mount
Définition des pools de sauvegarde
Ajouter les lignes suivantes (cf http://www.bacula.org/en/dev-manual/Automated_Disk_Backup.html)
http://www.bacula.org/5.0.x-manuals/en/main/main/Automated_Disk_Backup.html
- pour la sauvegarde totale
Pool { Name = Full-Pool Pool Type = Backup Recycle = yes # automatically recycle Volumes AutoPrune = yes # Prune expired volumes Volume Retention = 6 months Maximum Volume Jobs = 1 Label Format = Full- # Maximum Volumes = 9 }
- pour la sauvegarde incrémentale …
Pool { Name = Inc-Pool Pool Type = Backup Recycle = yes # automatically recycle Volumes AutoPrune = yes # Prune expired volumes Volume Retention = 20 days Maximum Volume Jobs = 6 Label Format = Inc- Maximum Volumes = 7 }
- … et différentielle
Pool { Name = Diff-Pool Pool Type = Backup Recycle = yes AutoPrune = yes Volume Retention = 40 days Maximum Volume Jobs = 1 Label Format = Diff- Maximum Volumes = 10 }
Edition de /etc/bacula/bacula-sd.conf
éditez /etc/bacula/bacula-sd.conf
- Donner le chemin où seront stockés les fichiers :
Device { Name = FileStorage Archive Device = /opt/SAUVEGARDE/bacula
bacula-dir.conf
comme l'endroit où va se faire la sauvegarde.
Configuration de l'utilisateur
Afin que l'utilisateur puisse avoir accès à la console Bacula, il doit être dans le groupe (au sens unix du terme) « bacula
»
adduser mon_nom_utilisateur bacula
Création des chemins d'accès avec les droits qui conviennent
Lancer les commandes ci-dessous dans un terminal :
sudo mkdir /opt/SAUVEGARDE/bacula sudo chown -R bacula /opt/SAUVEGARDE/bacula sudo chgrp -R bacula /opt/SAUVEGARDE/bacula sudo mkdir /opt/SAUVEGARDE/bacula-restores sudo chgrp bacula /opt/SAUVEGARDE/bacula-restores sudo chown bacula /opt/SAUVEGARDE/bacula-restores
Recopie des fichiers de configuration de Bacula
Cette étape est utile en cas de crash disque (i.e. la totalité de la configuration de Bacula est perdue) :
sudo cp /etc/bacula/*.conf /opt/SAUVEGARDE
Relance de Bacula
Pour que Bacula prennent en compte les modifications apportées au fichier de configuration, lancer les commandes ci-dessous dans un terminal :
sudo /etc/init.d/bacula-director restart sudo /etc/init.d/bacula-fd restart sudo /etc/init.d/bacula-sd restart
Lancer l'interface graphique de bacula
Bacula lui même est un outil en ligne de commande mais un autre outil permet d'utiliser une interface graphique. Pour cela il suffit de taper dans un terminal :
bat -c /etc/bacula/bat.conf
- Entrer la commande suivante dans un terminal :
alacarte
- Dans Outils système, sélectionner «
bat
» et remplacer/usr/sbin
par/usr/bin
A partir de cette interface graphique vous pouvez tester si votre installation fonctionne en effectuant une sauvegarde (vous devriez recevoir un mail à la fin) et en effectuant une restauration (qui sera dans /opt/SAUVEGARDE/bacula-restores
).
bacula
vous ne pourrez pas le voir.
Oups. mon disque est rempli par les sauvegardes!
Reduire la durée de rétention
Par exemple dans /etc/bacula/bacula-dir.conf au lieu d'avoir
Volume Retention = 6 months
mettre
Volume Retention = 3 months
pour passer de 6 a 3 mois
Supprimer certains fichiers
Réduire la durée de rétention ne va pas faire tomber le % d'utilisation du disque tout de suite, il va falloir faire du ménage à la main. Pour cela il va falloir démarrer la console de bacula (bat)
trouver un volume à supprimer
Avec la console de bacula, sélectionner Pools puis sélectionner un volume et vérifier ce qu'il contient avec un clic droit puis list job on volume Répéter l'opération jusqu'à avoir un volume assez vieux que vous pouvez supprimer.
purger
une fois le volume choisi, faites un nouveau clic droit et choisissez purge volume. Répondez oui aux messages vous demandant si vous êtes sûr de vous. La console bacula va alors faire apparaître le volume comme purged
supprimer le volume
Une fois le volume purgé, il faut le supprimer de la base de données de bacula. Ceci se fait avec un clic droit et le menu delete volume Une fois cette opération effectuée, vous pouvez supprimer le fichier par un classique rm (par exemple "rm Full-0073").