Outils pour utilisateurs

Outils du site


borg

Ceci est une ancienne révision du document !


Borg Backup est un programme de sauvegarde incrémentielle en ligne de commande. Il permet de fournir un moyen efficace et sûr de sauvegarder des données. Cette page aborde uniquement les sauvegardes distantes via SSH.

Installation

Sous debian Borg s'installe avec Apt.

sudo apt install borgbackup

Initialiser le dépôt distant chiffré

Vérifier qu'une liaison SSH, avec authentification par clefs, fonctionne entre la machine à sauvegarder et celle qui héberge le dépôt

L'initialisation se fait uniquement la première fois et depuis la machine à sauvegarder. Pour des questions pratiques je stocke la ckef de déchiffrage directement dans le dépôt, cela me permet d'être sûr de la retrouver depuis n'importe quel machine où je souhaite faire une restauration.

borg init -e repokey ssh://draconis@192.168.21.105:22/backup/colmaris
  • Init : pour initialiser le dépôt
  • -e : signifie que le dépôt sera chiffré
  • Repokey : indique que la clef de chiffrage sera stockée au sein même du dépôt.

Création de la sauvegarde

Pour chacune de mes sauvegardes j'utilise ce script bash.

Faire un topo sur la rétention des sauvegardes. FIXME à faire

#!/bin/bash
 
# adresse du dépôt
export BORG_REPO=ssh://user@adresse-serveur:port-ssh/chemin/du/dépôt
 
# configuration de la passphrase
export BORG_PASSPHRASE='strong-passphrase'
 
# quelques opmtimisation et gestion des erreurs
info() { printf "\n%s %s\n\n" "$( date )" "$*" >&2; }
trap 'echo $( date ) Backup interrupted >&2; exit 2' INT TERM
 
info "Starting backup"
 
# Sauvegarde
 
borg create                         \
    --verbose                       \
    --filter AME                    \
    --list                          \
    --stats                         \
    --show-rc                       \
    --compression lzma               \
    --exclude-caches                \
    --exclude 'home/*/.cache/*'     \
    --exclude 'var/tmp/*'           \
                                    \
    ::'{hostname-{now}'            \
    /opt/mailcow-backup
 
backup_exit=$?
 
info "Pruning repository"
 
# Utilisez la sous-commande `prune` pour conserver vos archives quotidiennes et/ou hebdomadaires et/ou mensuelles
# de CETTE machine. La correspondance « {hostname}-* » est très importante pour
# limiter l'opération de prune aux archives de cette machine et ne pas l'appliquer
# aux archives d'autres machines :
 
borg prune                          \
    --list                          \
    --glob-archives '{hostname}-*'  \
    --show-rc                       \
    --keep-daily    1               \
    --keep-weekly   0               \
    --keep-monthly  0               \
    --keep-yearly   0
 
prune_exit=$?
 
# Libérer de l'espace disque sur le répertoire en compactant les segments.
 
info "Compacting repository"
 
borg compact
 
compact_exit=$?
 
global_exit=$(( backup_exit > prune_exit ? backup_exit : prune_exit ))
global_exit=$(( compact_exit > global_exit ? compact_exit : global_exit ))
 
if [ ${global_exit} -eq 0 ]; then
    info "Backup, Prune, and Compact finished successfully"
elif [ ${global_exit} -eq 1 ]; then
    info "Backup, Prune, and/or Compact finished with warnings"
else
    info "Backup, Prune, and/or Compact finished with errors"
fi
 
exit ${global_exit}

Automatisation

Afin de réaliser cette sauvegarde régulièrement, je programme une tâche CRON avec la commande crontab -e. Je lance le script tous les jours à 23h30.

30 23 * * * sh /opt/backup-scripts/backup >/dev/null
borg.1758539376.txt.gz · Dernière modification : de colmaris