Borg pour vos sauvegardes
https://www.borgbackup.org/ https://borgbackup.readthedocs.io/en/stable/
Fonctionnalités
-
Stockage efficace
-
Compression
-
Chiffrement
-
Local, distant
-
Montage d’une sauvegarde avec FUSE
-
Cython(bon, c’est multi-plateforme…)
Stockage efficace ?
- Par blocs de données “chunk” uniques
- Unicité déterminé par (hmac-)sha256
- Déplacement d’un fichier → pas de déplacement des données
- Modification d’un gros fichier → modification de quelques chunk
Chiffrement
- Aucun
- Authentifié par phrase de passe
- Clé dans un dépôt + phrase de passe (recommandé)
- Clé hors d’un dépôt + phrase de passe
Hash/MAC | Non-chiffré, authentifié | Chiffré (AEAD avec AES), authentifié |
---|---|---|
SHA-256 | authenticated | repokey keyfile |
BLAKE2b | authenticated-blake2 | repokey-blake2 keyfile-blake2 |
Démonstration !
- Création d’un dépôt local repokey-blake2
- Exporter la clé, au cas où
- Création d’une sauvegarde…
- Exploration rapide du stockage du dépôt
- …compressée
- Lister les sauvegardes
- Monter une sauvegarde
borg init --encryption=repokey-blake2 ./repo
borg key export {,--paper,--qr-html} ./data #la clé reste chiffrée
borg create ./repo::jeudi18-1 ./data
- L’intérieur d’un dépôt
- Modifications puis refaire une sauvegarde :
borg create -v --stats ./repo::jeudi18-2 ./data
borg create -v --stats --compression=zlib,6 ./repo::jeudi18-3 #lz4 par défaut
borg help compression #compression par chunk
borg list ./repo
borg info ./repo
borg mount ./repo::jeudi18-1 ./mnt
borg create \
--stats \
--progress \
--verbose \
--compression=zstd,10 \
--exclude 're:.*\.[0-9]+$' \
--exclude "$BCKPPATH/**/cache/" \
--exclude "$BCKPPATH/**/spotifycache/" \
::'{now:%FT%H-%M-%S}' \
"./$BCKPPATH/Android" \
"./$BCKPPATH/Download" \
"./$BCKPPATH/Movies" \
"./$BCKPPATH/Music" \
"./$BCKPPATH/Pictures" \
"./$BCKPPATH/obsidian" \
"./$BCKPPATH/Signal" \
"./$BCKPPATH/Telegram" \
"./$BCKPPATH/Documents/Office Lens" \
"./$BCKPPATH/DCIM"
Pourquoi s’embêter ?
Plus simple qu’un script : Borgmatic! https://torsion.org/borgmatic/ orienté system-wide
Et le dépôt distant ?
- configuration manuel (ssh)
- BorgBase
borgmatic -c ./borgmatic.yaml list --match-archives '*'
borgmatic -c ./borgmatic.yaml list --archive jeudi18-1
- Ajouter le dépot borgbase et commenter le locale
- ssh-add ~/.ssh/borg &&\
export BORG_RSA=“ssh -i ~/.ssh/borg” &&
borgmatic -c ./borgmatic.yaml init —encryption repokey-blake2 - Remettre le dépôt local
borgmatic -c ./borgmatic.yaml create --stats --files
Bientôt : Borg 2.0
https://www.borgbackup.org/releases/borg-2.0.html
Mode (K = keyfile or repokey) | ID-Hash | Encryption | Authentication |
---|---|---|---|
K-blake2-chacha20-poly1305 | BLAKE2b | CHACHA20 | POLY1305 |
K-chacha20-poly1305 | HMAC-SHA-256 | CHACHA20 | POLY1305 |
K-blake2-aes-ocb | BLAKE2b | AES256-OCB | AES256-OCB |
K-aes-ocb | HMAC-SHA-256 | AES256-OCB | AES256-OCB |
authenticated-blake2 | BLAKE2b | none | BLAKE2b |
authenticated | HMAC-SHA-256 | none | HMAC-SHA256 |
none | SHA-256 | none | none |