Sur un VPS, les sauvegardes de vos données sont votre responsabilité : c'est la contrepartie de l'accès root. BorgBackup est l'outil de référence pour cela sous Linux. Il chiffre les données avant qu'elles quittent le serveur, ne stocke qu'une fois les blocs identiques, ce qui rend les sauvegardes quotidiennes très légères, et permet de restaurer un simple fichier en quelques secondes.
1. La règle d'or : une sauvegarde hors du serveur
Une sauvegarde stockée sur le même VPS que les données ne protège ni d'une erreur de suppression du serveur, ni d'un piratage, ni d'un rançongiciel qui chiffrerait tout le disque. Appliquez la règle 3-2-1 : trois copies des données, sur deux supports différents, dont une hors site.
Concrètement, il vous faut un espace de stockage accessible en SSH ailleurs que sur le serveur à sauvegarder : un second VPS de stockage, un serveur chez vous, ou un service de stockage compatible Borg. Dans ce guide, cette machine s'appelle backup.exemple.fr.
2. Installer Borg
Borg doit être installé sur les deux machines, le VPS et le serveur de stockage :
apt update && apt install -y borgbackup
Sur le VPS, créez une clé SSH dédiée aux sauvegardes, sans phrase de passe puisqu'elle servira à une tâche automatique :
ssh-keygen -t ed25519 -f /root/.ssh/borg -N "" -C "borg@$(hostname)"
cat /root/.ssh/borg.pub
Sur le serveur de stockage, créez un utilisateur borg et ajoutez la clé publique dans son fichier ~/.ssh/authorized_keys, en la restreignant aux seules commandes Borg :
command="borg serve --restrict-to-path /home/borg/repos",restrict ssh-ed25519 AAAA... borg@monvps
Cette restriction limite les dégâts si le VPS était compromis : la clé ne permet pas d'ouvrir un terminal sur le serveur de stockage.
3. Créer le dépôt distant
Choisissez une phrase de passe longue et stockez-la dans un fichier lisible par root uniquement :
openssl rand -base64 32 > /root/.borg-pass
chmod 600 /root/.borg-pass
export BORG_RSH="ssh -i /root/.ssh/borg"
export BORG_PASSCOMMAND="cat /root/.borg-pass"
borg init --encryption=repokey-blake2 ssh://[email protected]/home/borg/repos/monvps
Exportez immédiatement la clé du dépôt et conservez-la, avec la phrase de passe, ailleurs que sur le VPS : dans un gestionnaire de mots de passe par exemple.
borg key export ssh://[email protected]/home/borg/repos/monvps /root/borg-key.txt
cat /root/borg-key.txt # à copier en lieu sûr, puis supprimer le fichier
4. Le script de sauvegarde
Les fichiers d'une base de données en cours d'utilisation ne se copient pas de façon fiable. On exporte donc d'abord les bases dans un fichier, puis Borg sauvegarde cet export avec le reste. Créez /root/backup.sh :
#!/bin/bash
set -euo pipefail
export BORG_REPO="ssh://[email protected]/home/borg/repos/monvps"
export BORG_RSH="ssh -i /root/.ssh/borg"
export BORG_PASSCOMMAND="cat /root/.borg-pass"
# 1. export cohérent des bases de données
mkdir -p /var/backups/sql
mariadb-dump --all-databases --single-transaction --routines --events \
| gzip > /var/backups/sql/all-databases.sql.gz
# 2. sauvegarde
borg create --stats --compression zstd,3 --exclude-caches \
--exclude '/var/www/*/wp-content/cache' \
::'{hostname}-{now:%Y-%m-%d_%H%M}' \
/etc /var/www /home /root /var/backups/sql
# 3. rotation : 7 quotidiennes, 4 hebdomadaires, 6 mensuelles
borg prune --keep-daily 7 --keep-weekly 4 --keep-monthly 6
borg compact
chmod 700 /root/backup.sh
/root/backup.sh
Le premier passage envoie tout ; les suivants n'envoient que les blocs modifiés et durent en général quelques secondes à quelques minutes. Adaptez la liste des dossiers à votre usage : ajoutez par exemple le dossier de vos serveurs de jeux ou de vos volumes Docker.
mariadb-dump sur l'hôte : lancez l'export dans le conteneur avec docker exec, puis sauvegardez le fichier produit. Voir Docker et Docker Compose.5. Automatiser
Une ligne dans /etc/cron.d/ lance la sauvegarde chaque nuit à 3 h 30 et garde une trace dans un journal :
echo '30 3 * * * root /root/backup.sh >> /var/log/borg.log 2>&1' > /etc/cron.d/borg
Le script contient toutes ses variables, donc il fonctionne depuis cron sans configuration supplémentaire. C'est l'erreur la plus fréquente avec Borg : une commande qui marche à la main mais échoue la nuit parce que la phrase de passe n'est pas définie.
6. Restaurer
Exportez d'abord les trois variables du script dans votre terminal, puis listez les archives disponibles :
borg list
Restaurer un fichier ou un dossier : borg extract restaure dans le dossier courant, en recréant l'arborescence. Placez-vous dans un dossier temporaire pour ne rien écraser par erreur :
mkdir -p /tmp/restore && cd /tmp/restore
borg extract ::monvps-2026-09-18_0330 var/www/monsite.fr/wp-config.php
Parcourir une archive comme un dossier, pour retrouver un fichier sans connaître son chemin exact :
apt install -y python3-pyfuse3
mkdir -p /mnt/borg && borg mount ::monvps-2026-09-18_0330 /mnt/borg
ls /mnt/borg
borg umount /mnt/borg
Restaurer les bases de données à partir de l'export :
borg extract ::monvps-2026-09-18_0330 var/backups/sql/all-databases.sql.gz
gunzip -c var/backups/sql/all-databases.sql.gz | mariadb
7. Contrôler dans la durée
- Lisez le journal de temps en temps :
tail -n 30 /var/log/borg.log. Une sauvegarde qui échoue en silence pendant des semaines est le scénario le plus courant. - Vérifiez l'intégrité du dépôt une fois par mois avec
borg check. - Testez une restauration complète au moins une fois par trimestre, idéalement sur un VPS de test. Une sauvegarde jamais restaurée n'est qu'une hypothèse.
Pour recevoir une alerte en cas d'échec, combinez ce script avec la supervision décrite dans surveiller son VPS. Et si vous hébergez un site WordPress, voir aussi installer WordPress sur un VPS.
Questions fréquentes
Où stocker les sauvegardes d'un VPS ?
Toujours ailleurs que sur le VPS lui-même : un second serveur, idéalement dans un autre datacenter, un serveur à domicile ou un service de stockage accessible en SSH. Une sauvegarde sur le même disque ne protège ni d'une suppression du serveur, ni d'un piratage.
Quelle place prennent les sauvegardes Borg ?
Grâce à la déduplication, chaque nouvelle archive ne stocke que les blocs modifiés depuis la précédente. Avec la rotation de ce guide, soit 17 archives, l'espace total dépasse souvent à peine la taille d'une seule sauvegarde complète compressée, pour un site dont les fichiers changent peu.
Peut-on restaurer un seul fichier sans tout restaurer ?
Oui. borg extract accepte un chemin précis, et borg mount permet de parcourir une archive comme un dossier ordinaire pour copier uniquement ce dont vous avez besoin.
Borg ou rsync, que choisir ?
rsync copie un état à un instant donné : si un fichier est corrompu ou chiffré par un rançongiciel, la copie suivante l'écrase. Borg conserve un historique de versions chiffrées et dédupliquées, ce qui permet de revenir à l'état d'une date précise. Pour des sauvegardes, Borg est le meilleur choix.