Chapitre 917 minIntermédiaire
Logiciels de sauvegarde : Veeam, Borg, restic, Windows Server Backup
Par Josselyn C., prof de BTS SIO. Mis à jour le .
À la fin de ce chapitre, tu sauras
- choisir un logiciel de sauvegarde adapté à une situation ;
- sauvegarder, restaurer et appliquer une rétention avec BorgBackup et restic ;
- utiliser Windows Server Backup et connaître ses limites ;
- sauvegarder une base de données avec les outils du SGBD, MongoDB compris ;
- sauvegarder un dossier Windows avec robocopy, puis planifier et journaliser une sauvegarde.
4 exercices corrigés
Un logiciel de sauvegarde automatise tout ce qu'un script fait mal à la main : planifier les tâches, ne copier que ce qui a changé, compresser, dédupliquer, chiffrer, appliquer la rétention, vérifier l'intégrité et, surtout, restaurer simplement. Ce chapitre présente les outils que tu rencontreras en entreprise et en stage en 2026, des commandes de base (tar, rsync) aux solutions complètes (Veeam, Proxmox Backup Server), en passant par les outils libres en ligne de commande (BorgBackup, restic) et l'outil intégré à Windows Server. Les commandes sont à reproduire sur une VM de test.
Le panorama
| Outil | Licence | Ce qu'il sauvegarde | Points forts | Où tu le croises |
|---|---|---|---|---|
| Veeam Backup & Replication 13 | Commercial ; édition Community gratuite pour un petit nombre de machines | VM (VMware, Hyper-V, Proxmox VE…), serveurs physiques, postes, Microsoft 365 | Restauration instantanée de VM, dépôts immuables, vérification automatique | PME et grandes entreprises, prestataires |
| Proxmox Backup Server 4 | Libre (AGPL), support payant optionnel | VM et conteneurs Proxmox VE, hôtes Linux | Déduplication, chiffrement côté client, vérification, bandes, copie distante | Infrastructures Proxmox, très fréquent en BTS |
| BorgBackup 1.4 | Libre (BSD) | Fichiers sous Linux, macOS | Déduplication, compression, chiffrement, montage d'une sauvegarde | Serveurs Linux, hébergeurs |
| restic 0.18 | Libre (BSD) | Fichiers sous Linux, Windows, macOS | Un seul exécutable, nombreuses destinations (S3, SFTP…), chiffrement obligatoire | Serveurs, sauvegarde vers le cloud |
| UrBackup | Libre (AGPL) | Postes et serveurs Windows et Linux, fichiers et images | Client-serveur simple, interface web | Parcs de postes de PME |
| Windows Server Backup | Intégré à Windows Server | Volumes, état du système, restauration complète du serveur | Gratuit, déjà présent | Petits serveurs Windows isolés |
| Bareos (dérivé de Bacula) | Libre (AGPL) | Serveurs hétérogènes, bandes | Architecture client-serveur complète, catalogue | Grandes infrastructures libres |
Les outils de base : tar et rsync
Avant les logiciels spécialisés, deux commandes Linux font une sauvegarde rudimentaire.
tar regroupe des fichiers dans une archive, éventuellement compressée :
# Archive compressée et datée du dossier des partages
tar -czf /sauvegardes/partages-$(date +%F).tar.gz /srv/partages
# Vérifier que l'archive se lit jusqu'au bout (liste son contenu)
tar -tzf /sauvegardes/partages-2026-11-02.tar.gz > /dev/null && echo "archive lisible"
# Restaurer un seul fichier dans un dossier de test
mkdir -p /tmp/restauration
tar -xzf /sauvegardes/partages-2026-11-02.tar.gz -C /tmp/restauration srv/partages/commercial/devis.xlsx
tar retire le / de tête des chemins à la création : dans l'archive, le fichier s'appelle srv/partages/…, et c'est ce chemin qu'on donne pour extraire.
rsync copie en ne transférant que ce qui a changé, localement ou vers un serveur distant par SSH :
# Copie miroir vers un serveur de sauvegarde (la clé SSH est configurée)
rsync -a --delete /srv/partages/ sauvegarde@srv-sauv:/depots/partages/
# Versions quotidiennes avec liens physiques : les fichiers inchangés ne prennent pas de place
rsync -a --delete --link-dest=/depots/partages/2026-11-01 /srv/partages/ /depots/partages/2026-11-02/
L'option --delete fait de la destination un miroir : un fichier supprimé ou chiffré à la source l'est aussi à la destination. Sans versions, c'est une synchronisation, pas une sauvegarde. L'option --link-dest crée un dossier par jour, en liant les fichiers inchangés à ceux de la veille : chaque dossier paraît complet, mais seuls les fichiers modifiés occupent de la place.
Sous Windows : robocopy et le Planificateur de tâches
Sur un serveur de fichiers Windows, la sauvegarde la plus simple est un script robocopy (robust file copy), la commande de copie fournie avec Windows, lancé chaque soir par le Planificateur de tâches. C'est le montage qu'on rencontre le plus souvent dans les réalisations E5 d'un petit site.
# sauvegarde-partages.ps1 : copie datée du dossier des partages vers le serveur de sauvegarde, avec un journal
$date = Get-Date -Format 'yyyy-MM-dd'
robocopy 'D:\Partages' "\\SRV-SAUV\Sauvegardes\Partages\$date" /E /R:2 /W:5 /NP "/LOG:C:\Journaux\sauvegarde-$date.log"
# Code de sortie : de 0 à 7, aucun échec (1 = des fichiers ont été copiés) ; 8 ou plus, au moins une copie a échoué
if ($LASTEXITCODE -ge 8) { exit 1 } else { exit 0 }
| Option | Rôle |
|---|---|
/E | Copie tous les sous-dossiers, même vides, sans rien supprimer à la destination |
/MIR | Miroir : copie les ajouts et supprime à la destination ce qui n'existe plus à la source |
/R:2 /W:5 | Deux nouvelles tentatives, à 5 secondes d'intervalle, sur un fichier verrouillé (par défaut, robocopy réessaie un million de fois toutes les 30 secondes) |
/NP | N'écrit pas le pourcentage d'avancement : le journal reste lisible |
/LOG:fichier | Écrit le compte rendu dans un fichier (/LOG+: l'ajoute à la fin d'un journal existant) |
Trois points à comprendre avant de t'en servir :
- Un dossier daté par jour, comme ici, revient à faire une sauvegarde complète chaque jour : simple à restaurer (on ouvre le dossier du bon jour), mais gourmand en place. On supprime les dossiers plus anciens que la rétention par un second script.
/MIRvers un dossier unique, sans dossier daté, n'est qu'une synchronisation : un fichier supprimé ou chiffré à la source l'est aussi à la destination au passage suivant. C'est la même erreur qu'avecrsync --delete.- Le partage de destination est accessible en écriture depuis le serveur sauvegardé : un rançongiciel qui prend la main sur le serveur peut l'effacer. Ce montage dépanne un petit site, à condition d'avoir aussi une copie hors ligne.
Dans un script PowerShell, le code de retour de robocopy se lit dans $LASTEXITCODE (%ERRORLEVEL% dans un fichier .bat). Le script renvoie 1 en cas d'échec : le Planificateur de tâches affiche alors un « Dernier résultat » différent de 0, ce qu'une supervision peut surveiller. Pour lancer le script chaque soir à 21 h :
# Tâche planifiée qui exécute le script chaque jour à 21 h, sous le compte SYSTEM
$action = New-ScheduledTaskAction -Execute 'powershell.exe' -Argument '-NoProfile -ExecutionPolicy Bypass -File C:\Scripts\sauvegarde-partages.ps1'
$trigger = New-ScheduledTaskTrigger -Daily -At '21:00'
Register-ScheduledTask -TaskName 'Sauvegarde des partages' -Action $action -Trigger $trigger -User 'NT AUTHORITY\SYSTEM' -RunLevel Highest
Sous le compte SYSTEM, le serveur se présente sur le réseau avec son compte d'ordinateur (SRV-FIC$ dans le domaine) : c'est ce compte qui doit avoir le droit d'écrire sur le partage de sauvegarde, ce qui suppose que la machine qui porte ce partage soit dans le même domaine. C'est une raison de plus pour réserver ce montage aux petits sites : un serveur de sauvegarde hors du domaine, comme le recommande l'ANSSI (chapitre 6), demande un vrai logiciel de sauvegarde, avec ses propres comptes. On peut aussi créer la tâche dans la console du Planificateur de tâches (taskschd.msc), avec l'option « Exécuter même si l'utilisateur n'est pas connecté ».
BorgBackup
BorgBackup (ou Borg) découpe les fichiers en morceaux, ne stocke que les morceaux nouveaux, les compresse et les chiffre. Chaque sauvegarde, appelée archive, est complète du point de vue de la restauration.
# Le dépôt est sur le serveur de sauvegarde, joint en SSH ; la phrase secrète est lue dans un fichier protégé
export BORG_REPO='ssh://borg@srv-sauv.alvea.lan/./depots/srv-fic'
export BORG_PASSCOMMAND='cat /root/.borg-phrase'
# Une seule fois : créer le dépôt chiffré
borg init --encryption=repokey-blake2
# Exporter la clé du dépôt et la ranger hors du serveur (coffre de mots de passe, papier)
borg key export "$BORG_REPO" /root/cle-borg-srv-fic.txt
# Chaque nuit : créer une archive nommée avec la machine et la date
borg create --stats --compression zstd,6 '::{hostname}-{now:%Y-%m-%d_%H%M}' /srv/partages /etc
# Lister les archives, puis restaurer un fichier dans le dossier courant
borg list
cd /tmp/restauration && borg extract '::srv-fic-2026-11-02_2100' srv/partages/commercial/devis.xlsx
# Appliquer la rétention GFS, puis libérer l'espace
borg prune --list --keep-daily=7 --keep-weekly=4 --keep-monthly=12
borg compact
# Vérifier le dépôt (ajouter --verify-data pour relire toutes les données, beaucoup plus long)
borg check
En mode repokey, la clé est stockée dans le dépôt, protégée par la phrase secrète ; l'export de la clé est quand même indispensable, car un dépôt endommagé à cet endroit deviendrait illisible. Sur le serveur de sauvegarde, on peut forcer le mode ajout seul dans le fichier authorized_keys du compte borg (borg serve --append-only) : le serveur sauvegardé peut alors ajouter des archives, mais pas en supprimer. Le nettoyage (prune) se fait depuis une autre machine. L'outil borgmatic enveloppe Borg dans un fichier de configuration et planifie le tout.
restic
restic fonctionne comme Borg (dépôt dédupliqué, chiffré, des « instantanés » complets), mais c'est un exécutable unique, disponible aussi sous Windows, qui écrit directement vers de nombreuses destinations : dossier local, SFTP, stockage objet S3, serveur REST.
# Dépôt sur un stockage objet compatible S3 ; les identifiants d'accès sont dans des variables d'environnement
export RESTIC_REPOSITORY='s3:https://s3.exemple-hebergeur.fr/alvea-sauvegardes/srv-fic'
export RESTIC_PASSWORD_FILE=/root/.restic-mdp
restic init # une seule fois
restic backup /srv/partages --tag quotidienne # chaque nuit
restic snapshots # lister les instantanés
# Restaurer un dossier du dernier instantané dans un dossier de test
restic restore latest --target /tmp/restauration --include /srv/partages/commercial
# Rétention GFS et suppression des données qui ne servent plus
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 12 --prune
# Vérifier la structure du dépôt et relire 10 % des données
restic check --read-data-subset=10%
Le chiffrement est obligatoire : sans le mot de passe du dépôt, les données sont illisibles, y compris pour toi. Garde-le dans un coffre de mots de passe et une copie hors ligne. Le serveur REST de restic (rest-server) accepte un mode --append-only qui interdit la suppression depuis les clients.
Windows Server Backup
Windows Server Backup est la fonctionnalité de sauvegarde intégrée à Windows Server, toujours présente dans Windows Server 2025. Elle sauvegarde des volumes, l'état du système (dont Active Directory sur un contrôleur de domaine) et permet une restauration complète du serveur sur un matériel vierge (bare metal recovery). On la pilote par la console wbadmin.msc, par la commande wbadmin ou par les cmdlets PowerShell du module WindowsServerBackup.
# Installer la fonctionnalité
Install-WindowsFeature Windows-Server-Backup
# Sauvegarde immédiate du volume D: et de tout ce qu'il faut pour restaurer le serveur, vers le volume E:
wbadmin start backup -backupTarget:E: -include:D: -allCritical -quiet
# Lister les versions disponibles sur la cible
wbadmin get versions -backupTarget:E:
# Restaurer un dossier dans un emplacement de test (identifiant de version lu avec get versions)
wbadmin start recovery -version:11/02/2026-21:00 -itemType:File -items:D:\Partages\Commercial -recoveryTarget:D:\Restauration -recursive
Ses limites expliquent qu'on la réserve aux petits serveurs isolés : pas de gestion centralisée de plusieurs serveurs, pas de déduplication entre serveurs, et une sauvegarde vers un dossier réseau partagé ne conserve que la dernière version, chaque nouvelle sauvegarde écrasant la précédente. Pour garder un historique, la cible doit être un disque ou un volume dédié. Le chapitre Sauvegarde et restauration du cours Windows Server la montre en situation.
Veeam Backup & Replication
Veeam Backup & Replication est la solution commerciale la plus répandue pour sauvegarder des environnements virtualisés. La version 13, sortie fin 2025, existe sous Windows et sous forme d'appliance Linux prête à l'emploi (Veeam Software Appliance), durcie par défaut. Ses notions principales :
- un serveur de sauvegarde qui orchestre les tâches (jobs) ;
- des proxys qui lisent les données des VM ;
- des dépôts (repositories) qui stockent les sauvegardes : disques, NAS, stockage objet, bandes ; un dépôt Linux durci rend les sauvegardes immuables ;
- des copies de sauvegarde (backup copy jobs) qui envoient les sauvegardes vers un second dépôt, hors site, pour la règle 3-2-1.
Ses fonctions les plus utiles en PRA : la restauration instantanée (Instant Recovery), qui démarre une VM directement depuis le dépôt de sauvegarde en quelques minutes, le temps de la remettre en production ; la restauration fine d'un objet (un fichier, un objet Active Directory, un courriel) ; et SureBackup, qui démarre automatiquement les VM sauvegardées dans un réseau isolé pour vérifier qu'elles fonctionnent. L'édition Community, gratuite, suffit pour s'exercer.
Proxmox Backup Server
Proxmox Backup Server (PBS) est le serveur de sauvegarde de l'éditeur de Proxmox VE. La version 4 repose sur Debian 13. Il s'ajoute à Proxmox VE comme un stockage de sauvegarde, et l'on planifie les sauvegardes des VM depuis l'interface de Proxmox VE. Il déduplique, chiffre côté client, vérifie ses données, se synchronise avec un autre PBS distant et écrit sur bandes. Comme c'est l'outil le plus fréquent dans les infrastructures de BTS SIO, le chapitre 10 le détaille.
Les bases de données : un cas à part
Une base de données se sauvegarde avec les outils du SGBD, qui produisent une copie cohérente sans arrêter le service (la cohérence).
# MySQL ou MariaDB : export cohérent de la base GLPI (identifiants dans un fichier d'options protégé)
mysqldump --defaults-extra-file=/root/.sauvegarde.cnf --single-transaction --routines --triggers \
--databases glpi | gzip > /sauvegardes/glpi-$(date +%F).sql.gz
# PostgreSQL : export au format personnalisé (compressé, restaurable table par table)
pg_dump -U sauvegarde -Fc -f /sauvegardes/erp-$(date +%F).dump erp
# Tester la restauration dans une base vide
createdb -U postgres erp_test
pg_restore -U postgres -d erp_test /sauvegardes/erp-2026-11-02.dump
# MongoDB : archive compressée de toute l'instance (l'URI de connexion est dans une variable d'environnement)
mongodump --uri="$MONGO_URI" --archive=/sauvegardes/app-$(date +%F).archive --gzip
# Restaurer cette archive (dans une instance de test d'abord)
mongorestore --uri="$MONGO_TEST_URI" --archive=/sauvegardes/app-2026-11-02.archive --gzip
En SLAM, si ton application stocke ses données dans MongoDB, c'est mongodump qu'il faut planifier et mongorestore qu'il faut tester (le cours MongoDB et API Node.js).
Pour un RPO inférieur à l'intervalle des exports, on garde aussi les journaux de transactions : le journal binaire de MySQL, les fichiers WAL de PostgreSQL. Ils permettent de rejouer les modifications jusqu'à un instant précis (point-in-time recovery). Le chapitre Sauvegarder une base MySQL du cours SQL détaille mysqldump, la restauration et le journal binaire.
Automatiser et journaliser
Une sauvegarde qu'il faut lancer à la main finit par être oubliée. On la planifie, et l'on garde une trace de chaque exécution.
# crontab de root : sauvegarde à 21 h chaque jour, sortie et erreurs ajoutées au journal
0 21 * * * /usr/local/sbin/sauvegarde-srv-fic.sh >> /var/log/sauvegarde-srv-fic.log 2>&1
Dans une ligne de crontab, le caractère % a un sens particulier (il marque une fin de ligne) : une commande qui contient $(date +%F) doit l'écrire $(date +\%F), ou mieux, la date doit être calculée dans le script. Le script doit renvoyer un code de sortie différent de 0 en cas d'échec, et quelque chose doit lire ce code : un courriel, une alerte de supervision. Sous Windows, le Planificateur de tâches joue le rôle de cron. La planification et l'écriture de scripts robustes sont détaillées dans les cours Linux : administration système et Scripts PowerShell et Bash.
Exercices
Exercice 1 sur 4 Choisir un outil Réussi À revoir
Propose un outil pour chaque situation et justifie en une phrase.
- Une PME de 20 personnes, trois VM sur un cluster Proxmox VE, aucun budget logiciel.
- Un hébergeur qui doit sauvegarder 200 serveurs Linux vers un stockage objet S3.
- Un petit serveur Windows isolé dans une agence, qui doit pouvoir être reconstruit sur un matériel neuf.
- Un groupe de 300 personnes avec VMware, Hyper-V et Microsoft 365, qui veut une console unique et des restaurations instantanées.
Voir la réponseMasquer la réponse de l'exercice 1
- Proxmox Backup Server : libre, intégré à Proxmox VE, avec déduplication, chiffrement et vérification.
- restic (ou Borg via un serveur intermédiaire) : un exécutable par serveur, écriture directe en S3, chiffrement et déduplication, scriptable à grande échelle.
- Windows Server Backup, vers un disque dédié, avec l'option
-allCriticalpour permettre la restauration complète du serveur ; à compléter par une copie hors site. - Veeam Backup & Replication : il couvre les deux hyperviseurs, les serveurs physiques et Microsoft 365 dans une même console, avec la restauration instantanée.
Tu avais trouvé ?
Exercice 2 sur 4 La rétention en commande Réussi À revoir
Le plan prévoit de garder 14 sauvegardes quotidiennes, 8 hebdomadaires et 6 mensuelles. Écris la commande de nettoyage pour un dépôt Borg, puis pour un dépôt restic. Combien de points de restauration seront conservés au plus ?
Voir la réponseMasquer la réponse de l'exercice 2
borg prune --list --keep-daily=14 --keep-weekly=8 --keep-monthly=6
borg compact
restic forget --keep-daily 14 --keep-weekly 8 --keep-monthly 6 --prune
Au plus 14 + 8 + 6 = 28 points. En pratique un peu moins : une même sauvegarde peut compter à la fois comme quotidienne, hebdomadaire et mensuelle, et n'est gardée qu'une fois.
Tu avais trouvé ?
Exercice 3 sur 4 Le miroir dangereux Réussi À revoir
Un technicien a planifié chaque nuit rsync -a --delete /srv/partages/ /mnt/nas/partages/. Un lundi matin, un rançongiciel a chiffré les partages pendant le week-end. Que contient le NAS ? Qu'aurait-il fallu faire ?
Voir la réponseMasquer la réponse de l'exercice 3
Avec --delete et sans versions, le NAS est un miroir : la synchronisation du dimanche soir a recopié les fichiers chiffrés à la place des originaux. Le NAS contient donc les mêmes fichiers chiffrés (s'il n'a pas été chiffré directement, puisqu'il était monté). Il aurait fallu des versions (un dossier par jour avec --link-dest, ou mieux un outil comme Borg, restic ou PBS), une rétention de plusieurs semaines, une destination non montée sur le serveur, et une copie hors ligne ou immuable.
Tu avais trouvé ?
Exercice 4 sur 4 Lire une ligne de crontab Réussi À revoir
Que fait la ligne suivante, et quel problème pose-t-elle ?
30 22 * * 1-5 tar -czf /sauvegardes/compta-$(date +%F).tar.gz /srv/compta
Voir la réponseMasquer la réponse de l'exercice 4
Elle archive le dossier /srv/compta à 22 h 30, du lundi au vendredi (champs : minute 30, heure 22, tous les jours du mois, tous les mois, jours de la semaine 1 à 5). Problème : dans une crontab, % signifie une fin de ligne, donc la commande est coupée et l'archive est mal nommée ou la tâche échoue. Il faut écrire $(date +\%F), ou placer la commande dans un script. Il manque aussi une redirection de la sortie vers un journal, et la sauvegarde reste sur le même serveur.
Tu avais trouvé ?