Pourquoi sauvegarder votre VPS avec BorgBackup
Borg pousse la déduplication à un niveau remarquable : il découpe les fichiers en chunks à frontières variables, ce qui détecte les données identiques même si elles sont décalées dans un fichier. Résultat, des semaines d'archives quotidiennes tiennent dans une fraction de l'espace d'une seule copie complète. À cela s'ajoutent une compression configurable (lz4, zstd, zlib), un chiffrement authentifié (le dépôt résiste à la falsification, pas seulement à la lecture) et un format de dépôt robuste. Self-héberger Borg sur le VPS, en poussant les archives vers un dépôt distant (idéalement un service compatible BorgBackup), vous donne des sauvegardes économiques et entièrement sous votre contrôle cryptographique, sans confier vos clés à un tiers.
Les forces de BorgBackup
- Déduplication par chunks à frontières variables, redoutablement efficace sur des données qui évoluent peu.
- Chiffrement authentifié : confidentialité et garantie d'intégrité contre toute altération du dépôt.
- Compression au choix (zstd, lz4, zlib) pour arbitrer entre taille et vitesse.
- Archives nommées et horodatées, montables en FUSE pour parcourir une sauvegarde comme un dossier.
- Politique de rétention granulaire via
borg prune(quotidiens, hebdos, mensuels, annuels). - Transfert efficace vers un dépôt distant par SSH, en n'envoyant que les nouveaux chunks.
Prérequis pour ce déploiement
Borg reste léger en CPU mais sa déduplication maintient un index en mémoire : prévoyez un VPS avec 1 à 2 Go de RAM, la consommation croissant avec le nombre de chunks du dépôt. Installez le paquet borgbackup (et borgmatic pour orchestrer plus simplement). Côté destination, il vous faut soit un service de stockage compatible Borg, soit un second serveur accessible en SSH où Borg est également installé. Une paire de clés SSH pour le transfert non interactif et un emplacement hors VPS pour conserver la passphrase du dépôt complètent les prérequis. Borgmatic, piloté par un fichier YAML, simplifie nettement l'automatisation.
Configurer des sauvegardes Borg avec borgmatic
Installer Borg et borgmatic
Sur le VPS, installez les deux paquets (apt install borgbackup borgmatic). Vérifiez la version avec borg --version. Borgmatic ajoute une couche de configuration déclarative au-dessus des commandes Borg brutes.
Initialiser le dépôt chiffré distant
Avec une clé SSH déjà déployée, initialisez le dépôt : borg init --encryption=repokey-blake2 ssh://user@backup-host/./borg-repo. Le mode repokey stocke la clé chiffrée dans le dépôt ; conservez impérativement la passphrase en lieu sûr et hors du VPS.
Rédiger le fichier de configuration borgmatic
Dans /etc/borgmatic/config.yaml, déclarez les source_directories (par exemple /etc, /var/www, /opt), le repositories distant, la passphrase via une variable d'environnement, et la compression zstd. Borgmatic enchaînera create, prune et check en un seul appel.
Ajouter des hooks de base de données
Borgmatic peut dumper vos bases avant la sauvegarde. Déclarez un hook postgresql_databases ou mariadb_databases : le dump est généré, inclus dans l'archive, puis nettoyé automatiquement, garantissant une copie cohérente de la base.
Définir la rétention et lancer un run
Configurez keep_daily: 7, keep_weekly: 4, keep_monthly: 6 dans la section retention, puis exécutez borgmatic --verbosity 1. Borg ne transfère que les chunks inédits, rendant les runs suivants très rapides.
Planifier et vérifier les restaurations
Activez le timer systemd fourni par borgmatic (systemctl enable --now borgmatic.timer) pour une exécution quotidienne. Testez une restauration avec borgmatic extract --archive latest vers un dossier de test, et laissez borgmatic check valider l'intégrité régulièrement.
BorgBackup ou Restic : lequel choisir ?
| Critère | BorgBackup | Restic |
|---|---|---|
| Modèle de stockage | Dépôt mono-machine, accès SSH | Multi-source vers un même dépôt objet |
| Backends natifs | Local et SSH (serveur Borg requis) | S3, B2, Azure, SFTP, rest-server |
| Déduplication | Chunks variables, très dense | Chunks variables, efficace |
| Compression | Configurable (zstd, lz4, zlib) | Limitée (pas de compression historiquement) |
| Chiffrement | Authentifié (anti-falsification) | AES-256 côté client |
| Concurrence d'accès | Un seul client à la fois sur le dépôt | Plusieurs clients en parallèle |
| Stockage objet (S3) | Indirect (via couche tierce) | Natif et direct |
| Outil d'orchestration | borgmatic (YAML) | Scripts ou wrappers tiers |
Le talon d'Achille de Borg est qu'il n'autorise qu'un seul client à la fois sur un dépôt et qu'il peut laisser un verrou résiduel si un run est interrompu : surveillez et automatisez la levée des verrous bloqués avec borg break-lock dans votre script, mais uniquement après avoir vérifié qu'aucun autre processus n'écrit. Pour vous prémunir contre une compromission du VPS, créez côté serveur de backup une clé SSH restreinte avec command="borg serve --append-only" : l'attaquant ne pourra alors qu'ajouter des archives, jamais détruire l'historique existant.