Borg

De Banane Atomic
Révision datée du 15 septembre 2019 à 09:32 par Nicolas (discussion | contributions) (→‎Compression)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à la navigationAller à la recherche

Liens

Initialisation

Bash.svg
# créé et initialise le dossier qui contiendra le backup
borg init -e repokey /path/backup
# une passphrase est demandée pour protéger la clé de chiffrement
# le dossier backup est créé et il contient un dossier data, un fichier config, hints.0 et index.0

# stocker la clé chiffrée dans le dossier de backup, fichier config
# -e repokey
# stocker la clé chiffrée dans ~/.config/borg/keys
# -e keyfile
# pas de chiffrement
# -e none

Backup

Bash.svg
borg create --compression zlib --verbose --list --progress --stats /path/backup::NomArchive /path/dossier1 /path/dossier2

# --verbose      work on log level INFO (default: WARNING)
# --list         output verbose list of items (files, dirs, ...), you have to use INFO (or lower) log level
# --progress     show progress display while deleting a single archive
# --stats        print statistics for the created archive, you have to use INFO (or lower) log level

# stay in same file system, do not cross mount points
# --one-file-system

# do not create a backup archive
# --dry-run

# utilisation de la date, du nom d’hôte et du nom d'utilisateur
borg create /path/backup::{hostname}-{user}-{now:%Y-%m-%d_%H:%M:%S} /path/dossier1

# Backup a raw device (must not be active/in use/mounted at that time)
dd if=/dev/sdx bs=10M | borg create /path/backup::NomArchive -

Exclude

Bash.svg
# --exclude PATTERN
# read exclude patterns from EXCLUDEFILE, one per line
# --exclude-from EXCLUDEFILE

borg create /path/backup::NomArchive /path/dossier1 --exclude '*.bak' --exclude '*.old'

# regex
borg create /path/backup::NomArchive /path/dossier1 --exclude 're:^/path/[^/]+/\.bak/'

# shell-style pattern
borg create /path/backup::NomArchive /path/dossier1 --exclude 'sh:/path/*/.bak'

Compression

Bash.svg
# Super fast, low compression, default compression
borg create --compression lz4 /path/backup::NomArchive /path/dossier1

# Less fast, higher compression (N = 0..9, default level 6)
borg create --compression zlib,N /path/backup::NomArchive /path/dossier1

# Even slower, even higher compression (N = 0..9, default level 6)
borg create --compression lzma,N /path/backup::NomArchive /path/dossier1

# Compress only compressible data
borg create --compression auto,zlib,6 /path/backup::NomArchive /path/dossier1
Comparaison
Compression Taille originale Taille compressée Durée Processeur
no 417.61 MB 419.03 MB 2m 2s < 100%
lz4 417.61 MB 258.71 MB 1m 55s < 100%
zlib,6 417.61 MB 210.29 MB 2m 39 < 100%
lzma,9 417.61 MB 198.81 MB 1h 28s 100%

Extract

Bash.svg
# Extract entire archive
borg extract --verbose --list /path/backup::NomArchive

# Extraire seulement le dossier1 et son contenu
borg extract --verbose --list /path/backup::NomArchive path/dossier1

# Restore a raw device (must not be active/in use/mounted at that time)
borg extract --stdout /path/backup::NomArchive | dd of=/dev/sdx bs=10M
extract always writes into the current working directory (”.”), so make sure you cd to the right place before calling borg extract.

List

Bash.svg
# lister les archives
borg list /path/backup

# info sur une archive
borg info /path/backup::NomArchive

# lister le contenu d'une archive
borg list /path/backup::NomArchive

Mount

Bash.svg
borg mount /path/backup::NomArchive /media/borg

fusermount -u /media/borg
python-llfuse doit être installé

Prune

Bash.svg
# conserver les archives des 7 derniers jours
# une archive de chacune des 4 dernières semaines
# une archive de chacun des 12 derniers mois
# supprimer toutes les autres archives
borg prune --verbose --list --keep-daily=7 --keep-weekly=4 --keep-monthly=12 /path/backup
# --dry-run pour tester

Suppression d'une archive

Bash.svg
borg delete /path/backup::NomArchive

# suppression du dépôt et de toutes les archives
borg delete /path/backup

Mot de passe

Bash.svg
# si BORG_PASSPHRASE est renseigné, il est utilisé au lieu de demander le mot de passe
read -r -s -p 'borg passphrase: ' BORG_PASSPHRASE
export BORG_PASSPHRASE
echo

Enregistrer la sortie dans un fichier

Bash.svg
# redirige stdout et stderr vers un fichier
borg ... >/path/borg.log 2>&1
# pas d'affichage de la sortie à l'écran

# redirige stderr vers stdout (terminal) et écrit stdout (et stderr) vers un fichier
borg ... 2>&1 | tee /path/borg.log
# affichage de la sortie à l'écran

Erreurs

Failed to create/acquire the lock /mnt/storage/borg/lock (timeout).

Un autre processus borg utilise déjà un des éléments

Bash.svg
ps axu | grep borg