{{tag>Jammy sécurité sauvegarde}}
----
====== rdiff-backup : Solution de sauvegarde incrémentielle ======
Faire des sauvegardes différentielles journalières de son ''/home'' et supprimer les sauvegardes vieilles d'une semaine par exemple. Ceci est réalisé via le logiciel **rdiff-backup**. J'explique également comment tout automatiser.
Rdiff-backup peut être utilisé sur Linux, MacOsX et Windows, ce qui vous permet d'installer ce logiciel sur n'importe quel ordinateur, et sauvegarder ces ordinateurs sur votre serveur via SSH. [[http://download.savannah.gnu.org/releases/rdiff-backup|Téléchargement pour un "non ubuntu"]].
===== Installation =====
[[:tutoriel:comment_installer_un_paquet|installez le paquet]] **[[apt>rdiff-backup]]**.
===== Utilisation =====
==== Faire la sauvegarde ====
Voici la commande qui permet de faire une sauvegarde :
rdiff-backup --exclude /home/mon_login/.aMule /home/mon_login /repertoire_de_sauvegarde
Ici on sauvegarde tout le ''/home/mon_login'' sauf le repertoire ''/home/mon_login/.aMule'' dans le dossier de destination ''/repertoire_de_sauvegarde''.
Si ''/repertoire_de_sauvegarde'' n'est pas vide, un message nous indique qu'il faut utiliser l'option ''%%--%%force'' et dans ce cas, son contenu est supprimé. Donc attention, dans ce cas, à sauvegarder le contenu de ''/repertoire_de_sauvegarde'' au préalable.
=== Exemples ===
Sauvegarder uniquement les répertoires /usr/local et /var :
rdiff-backup --include /usr/local --include /var --exclude '**' / /backup
Idem, mais la liste des répertoires à sauver dans un fichier nommé include-list.txt qui contient :
/var
/usr/bin/gzip
La commande sera alors :
rdiff-backup --include-globbing-filelist include-list.txt --exclude '**' / /backup
Pour plus d'infos, voir [[http://www.nongnu.org/rdiff-backup/examples.html|ici]]
==== Supprimer des sauvegardes ====
Pour supprimer les différences accumulées au fur et à mesure que l'on a ajouté des sauvegardes :
rdiff-backup --remove-older-than 1W --force /repertoire_de_sauvegarde
Ici on enlève toutes les modifications enregistrées vieilles de plus d'une semaine. On peut mettre ''D(ay)'',''W(eek)'', ''M(onth)'' et ''Y(ear)''.
S'il il y a plusieurs sauvegardes à supprimer, la commande échoue. C'est pourquoi il faut rajouter le paramètre ''%%--%%force'' pour ne pas prendre cette erreur en compte et que **rdiff-backup** effectue bien ce qu'on lui demande.
==== Tester un backup ====
Pour vérifier que nos sauvegardes fonctionnent bien, on peut restaurer une sauvegarde :
rdiff-backup -r now /repertoire_de_sauvegarde /repertoire_de_restauration
L'option ''-r now'' permet de remettre la version de la sauvegarde la plus récente. On peut remonter dans les sauvegardes, par exemple remettre le repertoire d'il y a 3 jours avec l'option ''-r 3D''.
Rdiff-backup fait une replication parfaite des fichiers dans leur dernière version. Ainsi pour restaurer des données, il suffit de faire ''cp -a /backupDir /restoredDir''
==== Voir la liste des sauvegardes ====
Liste simple :
rdiff-backup -l /repertoire_de_sauvegarde
Liste en tableau avec la taille de chaque incrément :
rdiff-backup --list-increment-size /repertoire_de_sauvegarde
==== Voir les statistiques des sauvegardes ====
rdiff-backup-statistics /repertoire_de_sauvegarde
==== Sauvegarder sur une machine distante, via SSH ====
Remplacer
/repertoire_de_sauvegarde
par
@::
Plus d'infos sur [[SSH|SSH ici]]
===== Automatiser les sauvegardes =====
Voici la partie vraiment intéressante : comment faire pour que nos commandes précédentes se lancent de façon automatique, de façon à ce que l'on ait pas à les faire manuellement chaque jour ?
==== Journaliser les tâches ====
Tout d'abord quelques mots sur les logiciels de journalisation de tâches. Actuellement on dispose de trois outils sous Linux pour cela :
* **[[apt>at]]** qui permet de définir des tâches à réaliser à un instant précis et si la machine est éteinte à ce moment là, la tâche sera réalisée au prochain démarrage. Utilisable par tout le monde.
* **[[:cron]]** peut définir des tâches périodiques mais c'est un daemon donc si la machine est éteinte, la commande ne se lancera pas du tout. Utilisable par tout le monde.
* **[[:anacron]]** lance des tâches de facon périodique et si l'ordinateur n'était pas allumé au moment voulu, la tâche s'exécutera au prochain démarrage. Utilisable uniquement par root.
Dans notre cas, nous allons utiliser [[:cron]], cron utilise la crontab qui permet d'indiquer les tâches que l'on veut réaliser et à quelle fréquence.
Pour éditer la crontab, il suffit de faire :
crontab -e
Pour journaliser notre tâche, on indique à [[:cron]] d'exécuter le script ''~/sauve_mon_dossier.sh'' chaque jour à 20h00.
On met donc la ligne suivante dans notre crontab :
00 20 * * * ~/sauve_mon_dossier.sh
Celle-ci signifie //tous les jours à 20h00 lance le script ''/root/sauve_mon_dossier.sh'' //. **Ce sont bien les minutes d'abord et les heures ensuite, il n'y a pas d'erreur.** Pour plus d'informations sur le formalisme du ''crontab'', je vous invite à consulter [[:cron|cette page]].
==== Le script ====
Ensuite, il reste à faire le script pour lancer les sauvegardes.
On édite donc le fichier ''~/sauv_mon_dossier.sh'' avec son éditeur favori et on y insère les lignes suivantes :
#!/bin/sh
nice -n 19 rdiff-backup --exclude /home/login/.aMule /home/login /mnt/save && nice -n 19 rdiff-backup --remove-older-than 1W --force /mnt/save
Le ''nice -n 19'' signifie que lorsqu'on lance les commandes, elles s'exécutent avec la priorité la plus petite par rapport aux autres processus, ceci afin d'éviter que l'ordinateur ne se mette à ramer tous les jours à 20h00.
On sauvegarde le script et on n'oublie pas de mettre les droits d'exécution sur le fichier :
chmod +x ~/sauv_mon_dossier.sh
Voilà c'est fini ! On peut simplement vérifier que le script fonctionne bien en le lançant :
~/sauve_mon_dossier.sh
Normalement **rdiff-backup** se lance, fait sa sauvegarde et vous informe ensuite qu'il a ou non supprimé les sauvegardes plus vieilles d'une semaine.
===== Trucs & astuces ======
* Pour éviter des problèmes de droit sur les fichiers, je vous conseille de faire ceci avant de lancer la sauvegarde :
sudo chown -R votre_nom.users $HOME/* && chmod u+r -R $HOME/*
* Dans le cas d'une utilisation simultanée de "max-file-size" et "exclude" il faut mettre "exclude" en premier sinon il sera ignoré. Par exemple :
rdiff-backup /home --max-file-size 1000 --exclude /home/me repertoire_de_sauvegarde
ne prendra pas en compte "--exclude /home/me". Par contre :
rdiff-backup /home --exclude /home/me --max-file-size 1000 repertoire_de_sauvegarde
sauvegardera tous les fichiers de /home de moins de 1 Ko sauf ceux présents dans /home/me. Plus d'explications [[https://www.mail-archive.com/rdiff-backup-users@nongnu.org/msg03909.html|ici]]
* Pour afficher les listes des sauvegardes : rdiff-backup -l repertoire_de_sauvegarde
* Naviguer dans les snapshots : **[[apt>rdiff-backup-fs]]** en montant les snapshots dans un dossier Pour avoir un dossier par snapshot dans le point de montage : rdiff-backup-fs mnt_path backup_path
===== Voir aussi =====
* [[http://www.nongnu.org/rdiff-backup/examples.html|Rdiff-backup (en)]]
* (fr) [[http://www.it-connect.fr/sauvegarde-et-restauration-avec-rdiff-backup%ef%bb%bf/|Utilisation de Rdiff-backup ]]
----
//Contributeurs : [[utilisateurs:Herbie]], [[utilisateurs:ostaquet]] //
//Basé sur [[http://debuntu.tuxfamily.org]]//