Sauvegardes Restic sur un serveur Windows
Cette page décrit comment on sauvegarde un disque Windows (typiquement E:\) vers SwissBackup avec Restic, et surtout comment restaurer quand il en a besoin. Restic chiffre les données côté client, avant l'envoi : le stockage Infomaniak ne voit que des blocs chiffrés, et un outil tiers comme Cyberduck ne montre que des fichiers opaques. Conséquence directe : sans la clef Restic, plus rien n'est récupérable, c'est donc le secret le plus critique à protéger.
Pour le flux équivalent sur les instances Linux, voir Sauvegardes. Liens utiles : documentation Restic, documentation Infomaniak SwissBackup.
Architecture en bref
Disque Windows (E:)
|
v
Restic (chiffrement + déduplication)
|
v
SwissBackup (OpenStack Swift)Une seule machine pousse vers SwissBackup. La restauration peut se faire depuis n'importe quelle machine qui a la clef Restic et les credentials SwissBackup.
Installation
Restic s'installe via winget :
winget install --exact --id restic.restic --scope Machine
restic versionConfiguration
Clef de chiffrement
Restic chiffre tous les snapshots avec une clef. La générer une fois, depuis WSL ou n'importe quelle machine Linux :
openssl rand -base64 48Et l'écrire dans un fichier local :
notepad E:\tools\restic-key.txtLa clef Restic est non négociable
Sans restic-key.txt, aucune sauvegarde n'est récupérable. La clef doit être stockée en parallèle dans Guardian, dans la note Cloud Infomaniak Backup Codes. Sans cette redondance, perdre la machine équivaut à perdre les backups.
Fichier d'environnement
Restic et le client OpenStack lisent leur configuration depuis des variables d'environnement. On regroupe tout dans un script PowerShell, à sourcer avant chaque utilisation :
# E:\restic_env.ps1
$env:OS_AUTH_URL="https://swift02-api.cloud.infomaniak.ch/identity/v3"
$env:OS_REGION_NAME="RegionOne"
$env:OS_PROJECT_NAME="sb_project_SBI-XXXX"
$env:OS_PASSWORD="PASSWORD_SWISSBACKUP"
$env:OS_USER_DOMAIN_NAME="default"
$env:OS_USERNAME="SBI-XXXX"
$env:OS_PROJECT_DOMAIN_NAME="default"
$env:RESTIC_REPOSITORY="swift:sb_project_SBI-XXXX:/windows-backup"
$env:RESTIC_PASSWORD_FILE="E:\tools\restic-key.txt"Pour charger la configuration dans une session :
. E:\restic_env.ps1
echo $env:RESTIC_REPOSITORY
Initialiser le dépôt
À faire une seule fois, à la création du dépôt SwissBackup :
restic initSauvegarder
Sauvegarde manuelle
restic backup E:\ `
--exclude "E:\System Volume Information" `
--exclude "E:\`$RECYCLE.BIN"Et lister les snapshots produits :
restic snapshotsSauvegarde automatisée
Un petit script PowerShell encapsule la sauvegarde et l'application de la politique de rétention :
# E:\restic-backup.ps1
. E:\restic_env.ps1
restic backup E:\ `
--exclude "E:\System Volume Information" `
--exclude "E:\`$RECYCLE.BIN"
restic forget `
--keep-hourly 24 `
--keep-daily 7 `
--keep-weekly 4 `
--keep-monthly 12 `
--pruneLa rétention conserve :
| Option | Sens |
|---|---|
--keep-hourly 24 | les 24 dernières heures |
--keep-daily 7 | les 7 derniers jours |
--keep-weekly 4 | les 4 dernières semaines |
--keep-monthly 12 | les 12 derniers mois |
--prune libère l'espace en supprimant les blocs qui ne sont plus référencés.
Planification via Task Scheduler
- Ouvrir Task Scheduler et créer une nouvelle tâche.
- Onglet Trigger : Daily, Repeat task every 15 minutes (ou 1 heure), pendant la journée complète.
- Onglet Action : Start a program, avec :
- Program/script :
powershell - Add arguments :
-ExecutionPolicy Bypass -File E:\restic-backup.ps1
- Program/script :
Vérifier les sauvegardes
Lister les snapshots et leurs fichiers :
restic snapshots
restic ls latestVérifier l'intégrité du dépôt (à faire périodiquement) :
restic checkRestaurer
C'est la partie qui compte le jour où ça se passe mal. Le principe est simple : on identifie le bon snapshot, puis on extrait soit tout, soit une partie, soit on monte le dépôt pour fouiller à la main.
Identifier le bon snapshot
Sur un dépôt actif, la liste de snapshots grossit vite : avec une sauvegarde toutes les 15 minutes, on dépasse facilement les 2'500 snapshots. La commande de base les liste tous :
restic snapshots
Pour s'y retrouver, des filtres :
# Les 10 derniers snapshots, tous hôtes confondus
restic snapshots --latest 10
# Seulement la machine prod-windows
restic snapshots --host prod-windows
# Seulement ce qui couvre E:\
restic snapshots --path "E:\"Combinables. Un cas fréquent, "le dernier snapshot du serveur de prod", se fait avec restic snapshots --host prod-windows --latest 10.
L'ID court (8 caractères, en première colonne) suffit pour la commande de restauration ci-dessous.
Naviguer dans un snapshot
Avant de restaurer, on a souvent besoin de fouiller dans un snapshot pour repérer le bon fichier ou vérifier qu'on prend la bonne version. Plusieurs commandes pour ça :
# Lister la racine du snapshot le plus récent
restic ls latest /
# Lister un sous-dossier précis (récursivement si besoin)
restic ls latest /E/<customer>/Media --recursive
# Chercher un fichier par nom à travers tous les snapshots
restic find "web.config"
restic find "facture-2026-*.pdf"
Syntaxe des chemins : le préfixe peut varier
Les chemins de filtres sont absolus depuis la racine du snapshot (commencent toujours par /) et sans la lettre de lecteur Windows sous sa forme E:. En revanche, selon comment le backup a été lancé, la lettre peut apparaître comme un dossier de premier niveau : la racine d'un snapshot de E:\ est parfois /<customer>/..., parfois /E/<customer>/.... En cas de doute, restic ls latest / ou restic find <nom-de-fichier> montrent en une commande la forme exacte à utiliser.
Restaurer vers un dossier dédié
C'est le mode par défaut et le plus sûr : les fichiers du snapshot sont écrits dans un dossier neuf, sans toucher au disque source.
restic restore abcd1234 --target E:\restoreRestic affiche d'abord une progression le temps de charger les index, puis l'extraction démarre :

À l'issue de la commande, E:\restore contient l'arborescence complète du snapshot. Tu peux ensuite recopier à la main ce qui t'intéresse vers l'emplacement d'origine.
Restaurer un sous-ensemble de fichiers
Pour ne récupérer que quelques fichiers ou un sous-dossier, deux approches.
Filtrer une restauration classique avec --include (combinable, --exclude fait l'inverse) :
restic restore abcd1234 --target E:\restore `
--include "/E/cvdp/Media" `
--include "/E/cvdp/Customer"
Extraire directement un seul fichier ou un sous-arbre vers la cible de ton choix, sans passer par un dossier de restauration complet :
# Un fichier à un endroit choisi
restic dump latest /E/cvdp/Media/logo.png > C:\tmp\logo.png
# Un sous-arbre entier, sous forme de tar à dérouler
restic dump latest /E/cvdp/Media > C:\tmp\media.tar
tar -xf C:\tmp\media.tar -C C:\tmp\media\Les chemins suivent la même règle que pour restic ls (voir la note ci-dessus).
Parcourir un snapshot comme un disque (mount)
Idéal quand tu cherches "le bon" fichier sans encore savoir lequel. Restic monte le dépôt comme un disque accessible dans l'Explorateur :
restic mount E:\restic-mountTu navigues ensuite dans E:\restic-mount\snapshots, chaque sous-dossier étant un snapshot daté. Tu copies-colles directement depuis l'Explorateur Windows.
Pour démonter, Ctrl+C dans la fenêtre PowerShell qui tient le mount.
Restaurer en place sur le disque source
Possible en pointant --target E:\ directement, mais ça écrase les fichiers existants par les versions du snapshot. À réserver aux cas où tu sais exactement que c'est ce que tu veux (sinistre total, ou perte récente bien identifiée). Dans la majorité des cas, restaurer vers un dossier dédié puis recopier manuellement reste plus sûr.
Après la restauration
- Vérifier la taille et le nombre de fichiers attendus.
- Pour les fichiers critiques, ouvrir un échantillon ou comparer un checksum.
- Si la restauration concerne des données applicatives (DB, médias d'un site Umbraco / nopCommerce), redémarrer l'application après la copie pour repartir d'un état propre.
Bonnes pratiques
- Clef Restic dans Guardian. C'est le seul artefact qui ne peut pas être régénéré.
- Tester une restauration régulièrement. Une sauvegarde non testée n'est pas une sauvegarde.
restic checkpériodique. Détecte la corruption avant que tu en aies besoin.- Surveiller la sortie de la tâche planifiée. Une sauvegarde qui échoue silencieusement est pire qu'une absence de sauvegarde.

