Passer au contenu principal

Automatiser une sauvegarde Windows avec Robocopy

Sauvegarde mensuelle avec Robocopy

1. Objectif

Mettre en place une sauvegarde automatique mensuelle sous Windows 10/11 qui :

  • copie les fichiers d'un dossier source
  • crée un dossier de sauvegarde par mois
  • conserve uniquement les 6 derniers mois
  • fonctionne automatiquement via le Planificateur de tâches

2. Architecture

Le système repose sur trois éléments :

Planificateur de tâches
         ↓
       .bat
         ↓
 Script PowerShell
         ↓
      Robocopy

3. Dossiers utilisés

Dossier source

C:\DossierASauvegarder

Contient les fichiers à sauvegarder.

Dossier de destination

C:\DossierDeDestinationDeSauvegarde

Une fois peuplé, le dossier ressemble à ceci :

DossierDeDestinationDeSauvegarde
│
├── 2026-01
├── 2026-02
├── 2026-03
├── 2026-04
├── 2026-05
├── 2026-06
│
└── backup_2026-06.log

Chaque sous-dossier correspond à une sauvegarde mensuelle.


4. Script PowerShell

Fichier : C:\Scripts\backup_mensuel.ps1

$Source = "C:\DossierASauvegarder"
$BackupRoot = "C:\DossierDeDestinationDeSauvegarde"
$Now = Get-Date
$MonthFolder = $Now.ToString("yyyy-MM")
$Dest = Join-Path $BackupRoot $MonthFolder

New-Item -ItemType Directory -Path $Dest -Force | Out-Null

$LogFile = Join-Path $BackupRoot "backup_$MonthFolder.log"

robocopy `
    $Source `
    $Dest `
    /E `
    /XO `
    /R:2 `
    /W:5 `
    /Z `
    /FFT `
    /XA:H `
    /LOG:$LogFile

$LimitMonth = (Get-Date).AddMonths(-6)
Get-ChildItem $BackupRoot -Directory |
Where-Object {
    $_.Name -match '^\d{4}-\d{2}$' -and
    ([datetime]::ParseExact($_.Name, 'yyyy-MM', $null)) -lt $LimitMonth
} |
Remove-Item -Recurse -Force

Options Robocopy

Option Description
/E Copie tous les sous-dossiers
/XO Ignore les fichiers plus anciens
/R:2 2 tentatives en cas d'erreur
/W:5 Attente de 5 secondes entre tentatives
/Z Mode redémarrable
/FFT Compatibilité systèmes de fichiers
/XA:H Ignore les fichiers cachés

5. Fonctionnement du script

Création du dossier mensuel

Le script génère automatiquement un dossier basé sur la date courante au format YYYY-MM. Exemple : 2026-03.

Nettoyage des anciennes sauvegardes

Le script conserve uniquement les 6 derniers mois et supprime automatiquement les dossiers plus anciens. Exemple de dossiers conservés :

2025-12
2026-01
2026-02
2026-03
2026-04
2026-05

6. Fichier batch

Fichier : C:\Scripts\backup_mensuel.bat

@echo off
powershell.exe -ExecutionPolicy Bypass -File "C:\Scripts\backup_mensuel.ps1"

Rôle : lance le script PowerShell et sert de point d'entrée pour le Planificateur de tâches.


7. Planification automatique

  1. Ouvrir le Planificateur de tâches
  2. Créer une nouvelle tâche
  3. Cocher :
    • Exécuter même si l'utilisateur n'est pas connecté
    • Exécuter avec les autorisations maximales
  4. Déclencheur : choisir l'intervalle souhaité
  5. Action :
    • Programme : C:\Scripts\backup_mensuel.bat
    • Arguments : (vide)

8. Logs

Chaque exécution génère un fichier log au format backup_YYYY-MM.log. Exemple : backup_2026-03.log

Ce fichier contient :

  • les fichiers copiés
  • les fichiers ignorés
  • les erreurs éventuelles

9. Tests recommandés

Avant la première utilisation, exécuter manuellement :

backup_mensuel.bat

Puis vérifier :

  • la création du dossier mensuel
  • la copie des fichiers
  • la génération du log

10. Maintenance

Vérifier occasionnellement :

  • l'espace disque disponible
  • la présence des logs
  • le bon fonctionnement de la tâche planifiée