Ceci est une ancienne révision du document !
Table des matières
rdiff-backup
rdiff-backup est un logiciel de sauvegarde. Dans sa fonction de base, il fait la même chose que rsync: Recopier un répertoire source vers une destination, à l'identique. Quand on le relance, il transfère uniquement les fichiers modifiés (comme rsync).
Mais il fait un peu plus: Il conserve les versions précédentes des fichiers en faisant un diff inverse (d'où le "rdiff") compressé.
Avantages:
- Le répertoire de destination contient une copie exacte de la dernière version du répertoire source (comme rsync).
- On peut accéder aux versions précédentes des fichiers, ou aux fichiers effacés.
- Avec les rdiff, ces anciennes versions occupent le moins de place possible.
Je m'en sert pour faire des backups:
- de mon site web vers ma machine locale (à travers ssh).
- de ma machine locale vers un disque externe (par USB).
Packages à installer
- rdiff-backup : l'outils lui-même.
- rdiff-backup-fs : système de fichiers en espace utilisateur qui permet de voir les anciennes versions des répertoires.
Mémo des commandes principales
Si on suppose qu'on veut sauvegarder /source
vers /destination
:
- Faire un backup:
rdiff-backup /source /destination
- Ajoutez l'option
-v5
pour voir la progression fichier par fichier. - À relancer autant de fois que vous le voulez:
- Le premier lancement fera une copie intégrale des données.
- Les lancements suivants ne transfèreront que les données modifiées.
- Lister les backups:
rdiff-backup -l /destination
- Lister la taille des backups:
rdiff-backup --list-increment-sizes /destination
- Retirer tous les backups plus vieux de 7 jours:
rdiff-backup --remove-older-than 7D --force /destination
Utilisation par ssh
- Syntaxe générale:
rdiff-backup utilisateur@serveurdistant::répertoiredistant répertoirelocal
- Bien sûr, il faut également que rdiff-backup soit installé sur le serveur distant.
- Pour utiliser un serveur ssh distant sur un port non-standard, créer le fichier
~/.ssh/config
:Host toto.com Port 55555
- Exemple: Backup distant vers local (avec verbosité suffisante pour afficher le fichier en cours de traitement):
#!/bin/bash # Ces trois première lignes servent à se placer dans le répertoire du script, quand je le lance par le gestionnaire de fichiers. SCRIPT=$(readlink -f "$0") DIR=$(dirname "$SCRIPT") cd "$DIR" rdiff-backup -v5 monutilisateur@sebsauvage.net::/home/www/wiki ./wiki
- Note: Mon utilisation de rdiff-backup étant ponctuelle et à la demande, je ne me suis pas intéressé l'utilisation des certificats ssh pour la connexion sans mot de passe.
Consulter les backups
On peut utiliser rdiff-backup –restore-as-of 3D …
pour restaurer un fichier ou un répertoire tel qu'il était il y a 3 jours, mais il y a une solution plus simple: Utiliser rdiff-backup-fs.
C'est très simple:
mkdir archive rdiff-backup-fs archive /destination
Vos sauvegardes située dans /destination
seront visibles dans le répertoire archive
:
2017-12-07T08:07:57 2017-12-07T08:37:19 2017-12-07T08:55:39 2017-12-07T09:02:04 2017-12-07T13:54:05
Chaque répertoire correspond à une date de sauvegarde. Ces répertoires sont des fenêtres sur le passé: Vous pouvez voir les répertoires et fichiers tels qu'ils étaient à ces différentes dates. Super pratique !
Pour démonter ce répertoire:
fusermount -u archive
On peut difficilement faire plus simple.
Interfaces graphiques
Différentes interfaces graphique pour rdiff-backup. Certains de ces outils sont conçus pour l'utilisateur final, d'autres pour l'admin (ou les deux). Certains de ces outils ne sont pas conçus pour faire des backups distants.
- JbackPack (http://www.nongnu.org/jbackpack/) : Backups locaux uniquement (
sudo apt install jbackpack
) - SLBackup : Backups locaux uniquement (
sudo apt install slbackup
). - RdiffWeb (http://www.patrikdufresne.com/fr/rdiffweb/)
- Rdiff-backup-web (https://github.com/dalethestirling/rdiff-backup-web) : Ne permet pas de faire des sauvegarde, mais uniquement consulter les anciens fichiers.
Liens à explorer
Et pourquoi pas... ?
Et pourquoi pas Timeshift, rsnapshot, duplicity, [outils de backup votre choix] ?
- Parceque rdiff-backup est plus économe en espace disque. Beaucoup d'outils de backup sauvegardent la totalité d'un fichier quand ce dernier est modifié. rdiff-backup ne sauvegarde que la partie modifiée du fichier.
- Parce que le répertoire de backup est une simple copie du répertoire source. Je peux relire mon backup sans le logiciel de backup lui-même.
Suite à des suggestions, j'irai aussi jeter un coup d’œil à borg-backup et bup qui ont l'air d'être également très efficaces, et - tout comme rdiff-backup - les backups sont montables en fuse (système de fichiers), ce qui est très pratique.
BorgBackup
Je suis finalement passé à BorgBackup
Avantages:
- Il fait également des sauvegarde incrémentales.
- Compression (LZ4 très rapide par défaut, mais peu aussi faire gzip ou lzma)
- Chiffrement (optionnel)
- Dé-duplication (ce que rdiff-backup ne fait pas entre fichiers)
- Les backups peuvent être interrompus et repris.
- Tout comme rdiff-backup, les backups sont accessible en FUSE.
- Créer un repo Borg:
borg init /destination
- Par défaut, c'est chiffré avec mot de passe. Pour faire sans chiffrement, faire:
borg init --encryption=none /destination
- Faire un backup:
borg create /destination::{now} /source
- Lister les backups:
borg list /destination
- Vérifier l'intégrité des backups:
borg check /destination
- Accéder aux backups:
mkdir archive borg mount /destination archive
- Chaque backup est accessible comme un répertoire.
- Note: Si vous avez beaucoup de fichiers, quand vous allez entrer dans le répertoire d'un backup précis, un simple
ls
risque de prendre plusieurs minutes. C'est tout à fait normal. Ne soyez pas surpris.
- Puis démonter par:
borg umount archive
- Supprimer les anciens backups:
- On va garder 1 backup par jour sur les 7 derniers jours, et 1 backup par semaine sur les 4 dernières semaines et 1 backup par mois sur les 6 derniers mois.
borg prune -v --list --keep-daily=7 --keep-weekly=4 --keep-monthly=6 /destination
- Exemples:
- Sauvegarder local vers local (je sauvegarde vers une partition VeraCrypt stockée sur un disque dur externe):
nice -n 19 ionice -c 3 borg create -v --stats --progress --exclude-from="/media/veracrypt2/excludes-backup-asus.txt" /media/veracrypt2/backupasus-borg::{now} /
- Sauvegarder un site distant vers local:
- Comme borg est trop lent à récupérer les fichiers distants, je fais d'abord un rsync vers un répertoire local (très rapide), puis un borg du répertoire local pour garder l'historique.
rsync --progress --delete -az user@sebsauvage.net:/home/www/ /backup/site/ borg create -v --stats --ignore-inode --progress /backup/site-borg/::{now} /backup/site/