Wiki CgX

Parce que j'ai un cerveau, mais pas trop.

Outils pour utilisateurs

Outils du site


it:linux-utilitaires:borgbackup

borg

Cette page est en grande partie tirée de celle de l'excellent SebSauvage

C'est quoi ?

BorgBackup est un logiciel de sauvegarde.

  • 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 ou 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)
  • 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”.

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.13/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
  • 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
  • {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

Lister les backups

borg list /repo

Vérifier l'intégrité des backups

borg check -v --progress /repo

Accéder aux backups

borg mount /repo /mnt/archive

ou

borg mount /repo::{nom} /mnt/archive 
  • Chaque backup est alors accessible comme un sous-répertoire dans le répertoire mnt/archive

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.

En cas de problème quand on navigue dans un backup, c'est parfois dû a l'encodage. Précédez par export LANG=en_US.UTF-8

  • 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).
  • Un backup précis est nommée par repo::archive.
    • Exemple: /repo::2017-12-11T12:25:38 désigne l'archive 2017-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 ou -s), 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).

Liens

it/linux-utilitaires/borgbackup.txt · Dernière modification : 14 Dec 2021 :: 13:34 de CgX