TL;DR — Résumé Rapide

Borgmatic automatise les sauvegardes chiffrées avec BorgBackup sous Linux. Configurez YAML, planifiez avec systemd timers et appliquez la stratégie 3-2-1.

Borgmatic transforme la CLI puissante mais verbeuse de BorgBackup en une configuration YAML déclarative — un seul fichier gère des sauvegardes chiffrées, dédupliquées et compressées avec des politiques de rétention, des vérifications de cohérence, des hooks de base de données et des notifications de surveillance.

Prérequis

  • Serveur Linux (Ubuntu 20.04+, Debian 11+, RHEL 8+ ou similaire)
  • Python 3.8+ (pour pip install) ou accès à apt/dnf
  • Accès SSH à une destination de sauvegarde distante
  • Accès root ou sudo

Fondamentaux de BorgBackup

  • Déduplication — Borg divise les fichiers en blocs de taille variable et stocke chaque bloc unique une seule fois.
  • Chiffrement — Le mode repokey-blake2 stocke une clé chiffrée avec AES-256-CTR protégée par votre phrase de passe.
  • Compressionlz4 (rapide), zstd (équilibré) ou lzma (maximum). zstd,3 est la valeur par défaut moderne.
  • Mode append-only — Les dépôts peuvent être configurés en mode ajout seul pour qu’un client compromis ne puisse pas supprimer les archives existantes.

Étape 1: Installer et Configurer

Installer:

pip install --upgrade borgmatic
# ou
apt install borgmatic

Générer la configuration:

mkdir -p /etc/borgmatic
borgmatic config generate --destination /etc/borgmatic/config.yaml

Configuration minimale pour un serveur web:

source_directories:
  - /etc
  - /var/www
  - /home

repositories:
  - path: /var/backup/local-borg
    label: local
  - path: ssh://backup@192.168.1.100/~/backups/serveur
    label: distant-lan

storage:
  encryption_passphrase: "votre-phrase-de-passe-longue-et-aleatoire"
  compression: "zstd,3"

retention:
  keep_daily: 7
  keep_weekly: 4
  keep_monthly: 6
  keep_yearly: 1

postgresql_databases:
  - name: mon_app_production
    username: postgres
    format: custom

hooks:
  after_backup:
    - curl -fsS https://hc-ping.com/votre-uuid > /dev/null
  on_error:
    - echo "Sauvegarde ECHOUEE le $(date)" | mail -s "Erreur Sauvegarde" admin@exemple.com

Étape 2: Initialiser le Dépôt

borgmatic init --encryption repokey-blake2

Exporter et stocker la clé hors ligne:

borg key export /var/backup/local-borg /root/cle-borg-sauvegarde.txt

Étape 3: Exécuter et Planifier les Sauvegardes

borgmatic create --verbosity 1 --list --stats  # première sauvegarde
borgmatic          # créer + élaguer + compacter + vérifier
borgmatic prune    # appliquer la politique de rétention
borgmatic compact  # récupérer l'espace libéré
borgmatic check    # vérifier l'intégrité

Activer le timer systemd:

systemctl enable --now borgmatic.timer

Étape 4: Restaurer

borgmatic list                    # voir les archives disponibles
borgmatic info --archive latest   # détails de la dernière archive
borgmatic extract --archive latest --path /var/www/monapp --destination /tmp/restauration
borgmatic restore --archive latest --database mon_app_production

Comparaison: Borgmatic vs Alternatives

FonctionnalitéBorgmaticResticDuplicatiKopia
ChiffrementAES-256-CTRAES-256-CTRAES-256AES-256-GCM
DéduplicationOuiOuiOuiOui
ConfigurationYAMLCLIGUI/XMLGUI/CLI
Hooks BDDNatif (PG, MySQL)Scripts externesNonNon
Append-onlyOuiNonNonNon
DestinationsSSH, SFTPS3, B2, SFTPFTP, S3, WebDAVS3, B2, SFTP

Problèmes Courants

ProblèmeSolution
Failed to create/acquire the lockExécuter borgmatic borg break-lock /chemin/depot
Repository is not a valid Borg repositoryChemin incorrect ou dépôt non initialisé; exécuter borgmatic init
Passphrase incorrectVérifier encryption_passphrase dans la configuration
Connection closed by remote hostClé SSH non ajoutée ou borg serve absent de authorized_keys

Résumé

  • BorgBackup fournit déduplication, chiffrement AES-256, compression et mode append-only.
  • Borgmatic enveloppe Borg dans un unique config YAML couvrant create, prune, compact, check et hooks.
  • Timer systemd gère la planification avec RandomizedDelaySec.
  • Hooks de base de données garantissent des dumps cohérents de PostgreSQL et MySQL.
  • Stratégie 3-2-1 implémentée en listant plusieurs dépôts dans la configuration.
  • Testez toujours les restaurations avant d’en avoir besoin.

Articles Connexes