Table des matières
Borg Backup
Son Wiki est truffé d'autres articles intéressants.
BorgBackup est un logiciel de sauvegarde. Cette page est un mémo rapide des principales commandes.
Avantages de Borg:
- C'est un simple exécutable avec peu de dépendances
- Syntaxe simple
- Sauvegardes incrémentales (il historise les anciennes versions des fichiers)
- Sauvegardes différentielles (il ne sauvegarde que les parties modifiées des fichiers)
- Compression (lz4 extrêmement rapide par défaut, mais peu aussi faire gzip, zstd et lzma)
- Dé-duplication (les fichiers (ou portions de fichiers) identiques ne seront pas sauvegardés en double)
- Chiffrement (optionnel)
- Vérification d'intégrité des indexes et des données (peut détecter la corruption de données (bitrot))
- Sauvegardes vers un répertoire local ou ssh.
- Les backups peuvent être interrompus et repris sans crainte pour leur intégrité.
- Les backups sont accessibles en FUSE (sous forme de simples répertoires)
Vocabulaire
- repo : Un “repo” borg est un répertoire dans lequel borg va stocker ses sauvegardes.
- archive : Correspond à une sauvegarde. Un repo borg contient une ou plusieures “archives”.
- Une sauvegarde précise est identifiée en mentionnant le repo, deux points, puis l'archive: repo::archive
Installation
Borg est présent dans la plupart des dépôts des distributions. Sous Debian/Ubuntu/LinuxMint:
sudo apt install borgbackup
Mais Borg étant un simple exécutable sans dépendances lourdes, vous pouvez aussi télécharger juste l'exécutable (voir cette page) et l'installer à la main.
Exemple pour un Linux 64 bits:
sudo wget https://github.com/borgbackup/borg/releases/download/1.1.16/borg-linux64 sudo cp borg-linux64 /usr/local/bin/borg sudo chmod 755 /usr/local/bin/borg
Utilisation
- En supposant que vous voulez faire vos sauvegardes dans le répertoire
/repo
- Initialiser le repo Borg (À faire une seule fois: C'est ce qui va “préparer” le répertoire qui va recevoir les backups):
borg init --encryption=repokey-blake2 /repo
- Par défaut, c'est chiffré avec mot de passe. Pour faire sans chiffrement, faire:
borg init --encryption=none /repo
- Les “repos” peuvent être locaux ou distants.
- Faire un backup:
borg create /repo::{now} /source
- Cela va faire une sauvegarde du répertoire /source dans le repos borg /repo avec comme nom la date/heure du moment.
- Pour afficher plus d'informations, ajouter
-v --progress
- Vous pouvez bien sûr inclure plusieurs répertoires sources dans le backup:
borg create /repo::{now} /source1 /source2 /source3
- Exclusions:
- Avec
--exclude
. Vous pouvez lister les dossiers ou fichiers à exclure. Exemple:--exclude={'dossierA/','dossierB/dossierB2/','dossierC/','*.vdi'}
- Avec
--exclude-caches
: Borg ignorera alors tout répertoire (et ses sous-répertoires) s'il contient un fichier nomméCACHEDIR.TAG
et contenant exactement le texteSignature: 8a477f597d28d172789f06886806bc55
. Très pratique: Copiez ce fichier dans tout répertoire que vous voulez exclure du backup sans avoir à toucher à votre script de backup.
{now}
permet d'horodater automatiquement les backups, mais vous pouvez remplacer par le texte de votre choix (sans les accolades).- Une bonne idée est de pré-fixer votre backup par le nom de la machine (
nommachine-{now}
), ce qui permet par la suite de purger sélectivement les backups ( avec--prefix
).
- Algo de compression par défaut: lz4 (le plus rapide). Si vous cherchez la compression maximale ajoutez
--compression lzma
ou intermédiaire:--compression zlib
. Mais je vous recommande--compression zstd
: Il est presque aussi rapide que lz4 et il compresse mieux que zlib.
- Lister les backups:
borg list /repo
- Vérifier l'intégrité des backups:
borg check -v --progress /repo
- Accéder aux backups:
mkdir archive borg mount /repo archive
- Chaque backup est alors accessible comme un sous-répertoire dans le répertoire archive:
- Note: Si vous avez beaucoup de fichiers, quand vous allez entrer dans le sous-répertoire d'un backup précis, le premier
ls
risque de prendre plusieurs minutes. C'est tout à fait normal. Ne soyez pas surpris. - Du mal à accéder aux fichiers du backup à cause des droits sur les fichiers/répertoires dans le backup ? Dans la commande de montage ajoutez l'option
-o ignore_permissions
.
- Puis démonter par:
borg umount archive
- Purger les anciens backups:
- Exemple: 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 --stats --keep-daily=7 --keep-weekly=4 --keep-monthly=6 /repo
- Si vous avez préfixé vos archives, vous pouvez purger sélectivement avec
--prefix=nommachine
- Vous pouvez supprimer un backup précis. Par exemple:
borg delete /repo::2017-12-11T12:25:38
- Vous avez bien entendu bien d'autres options de purge.
Notes
- Bien entendu, le premier backup sera long (il va compresser tous les fichiers). Les backups suivants seront beaucoup plus rapides.
- La compression par défaut est lz4 qui est extrêmement rapide (capable de compresser 500 Mo/seconde sur un processeur moyen), mais je vous recommande chaudement la compression zstd, plus efficace sans trop consommer de CPU. Ajoutez l'option
--compression zstd,7
. La compression lzma est plus forte, mais elle ralentira votre sauvegarde. - Un backup précis est nommée par repo::archive.
- Exemple:
/repo::2017-12-11T12:25:38
désigne l'archive2017-12-11T12:25:38
dans le repo/repo
.
- Borg est bon dans les cas suivants:
- backup fichiers locaux ⇒ repo local
- backup fichiers locaux ⇒ repo distant
- Borg est moins bon pour:
- backup fichiers distant ⇒ repo local.
- Dans ce cas, vous devrez utiliser sshfs (ou autre) pour aller chercher les fichiers, et les performances seront nettement moins bonnes. (Ou alors vous faites préalablement un rsync (rapide) vers un répetoire local, puis un borg local vers local pour historiser les modifications).
- Si vous allez chercher des fichiers distants par sshfs, je vous recommande d'utiliser l'option
--files-cache=ctime,size
(ou--ignore-inode
sur Borg<1.1) car les inodes d'un montage sshfs ne sont pas constants, et vous risquez de re-sauvegarder des fichiers qui n'ont pas été modifiés. (Vous ne perdrez pas de place car borg détectera qu'il a déjà les données, mais il perdra du temps à relire le contenu des fichiers.)
Stats
Quand vous avez fini un backup (avec --stats
), vous aurez un rapport sur votre sauvegarde:
------------------------------------------------------------------------------ Original size Compressed size Deduplicated size This archive: 4.51 GB 2.77 GB 1.06 MB All archives: 13.53 GB 8.32 GB 1.87 GB Unique chunks Total chunks Chunk index: 70292 567669 ------------------------------------------------------------------------------
- This archive correspond à la sauvegarde que vous venez de faire.
- Original size : Taille totale des fichiers dans ce backup.
- Compressed size : Taille de ces fichiers une fois compressés.
- Deduplicated size : Comme certains de ces fichiers étaient déjà présents à l'identique dans des sauvegardes antérieures, ils n'ont pas été re-sauvegardés. La taille affichée ici correspond à la quantité de données réellement nouvelles qui ont été ajoutées au repo borg (ici: 1,06 Mo).
- All archives : correspond à la taille totale de données stockées dans les différents backups.
- Deduplicated size : C'est la taille totale de votre repo borg, après compression et déduplication (repérage des fichiers identiques entre sauvegardes).
—-
Propriétés des logiciels de sauvegarde
Les logiciels de backup peuvent posséder plusieurs de ces 4 propriétés: compression, incrémental, différentiel et dédupliqué.
- Compression: La compression permet de réduire l'espace nécessaire au stockage de la sauvegarde d'un fichier, comme on le ferait avec une archive zip.
- Exemple de logiciel: tar/gzip, zip…
- Incrémental: Le logiciel conserve les anciennes versions des fichiers.
- Vous pouvez récupérer un fichier tel qu'il était il y a une semaine, ou récupérer un fichier que vous avez effacé depuis plusieurs backups.
- Différentiel : Le logiciel de backup ne va sauvegarder que les parties modifiées des fichiers.
- Imaginez: Vous faites fonctionner une machine virtuelle qui fait 10 Go:
- Si votre logiciel de backup n'est pas différentiel, il verra que le fichier de 10 Go a été modifié, et il va le sauvegarder en entier à nouveau.
- Si votre logiciel de backup est différentiel, il ne va sauvegarder que la partie modifiée du fichier. Le gain de place est énorme.
- Exemple de logiciel: rdiff-backup, duplicity…
- Dé-dupliqué: Le logiciel de backup va repérer les données identiques dans des fichiers différents.
- Imaginez: Vous déplacez un répertoire contenant beaucoup de fichiers, ou vous renommez des fichiers volumineux.
- Si votre logiciel de backup ne fait pas de dé-duplication, il considérera que ce sont de nouveaux fichiers et ira tous les sauvegarder à nouveau. Votre sauvegarde va enfler.
- Si votre logiciel de backup fait de la dé-duplication, il verra que le contenu des fichiers est identique à des fichiers déjà sauvegardés, et ne les sauvegardera pas à nouveau (énorme gain de temps et de place).
Si j'aime autant BorgBackup, c'est qu'il possède justement ces 4 propriétés. En particulier, la dé-duplication vous permet de déplacer vos fichiers ou renommer les répertoires sans risquer de faire enfler inutilement les sauvegardes. Dans le cas de sauvegardes multi-utilisateurs ou multi-machines, le gain est encore plus important.
Liens
- Site officiel : https://www.borgbackup.org/
- Documentation complète : https://borgbackup.readthedocs.io/en/stable/
- https://blog.genma.fr/?Soucis-rencontres-avec-Borg : Quelques messages d'erreur classiques que vous rencontrerez parfois avec Borg. Notez que cela ne met pas en péril l'intégrité des backups. Ces messages sont dus aux mécanismes de protection de Borg.