Se rendre au contenu

Créer un Script de Sauvegarde Automatisé avec PowerShell et Robocopy (et bonne nuit !)

Introduction

Dans un environnement informatique professionnel, la gestion des sauvegardes est la pierre angulaire de la sécurité des données. Plutôt que de recourir à des logiciels tiers complexes et coûteux, Windows propose un duo d'outils natifs extrêmement puissants et fiables : PowerShell et l'utilitaire Robocopy (Robust File Copy).

Ce tutoriel étape par étape vous détaille la méthode standard pour concevoir un script PowerShell de sauvegarde robuste, capable de se connecter automatiquement à un partage réseau (NAS/SAN), d'exécuter une copie (complète ou incrémentielle), puis de libérer proprement les ressources réseau.


Chapitre 1 : Préparation de la structure et des variables

Un script de sauvegarde maintenable commence par une déclaration claire des variables de configuration. Cela permet de modifier rapidement les répertoires ou la destination sans toucher au cœur du code.

1. Les variables fondamentales

  • Source : Le dossier local ou les répertoires cibles à sauvegarder (ex: C:\DONNEES).
  • Partage Réseau : L'adresse UNC du serveur de destination (ex: \\TRUENAS\SAVE-client\ps1\Tache1).
  • Lettre de lecteur temporaire : Une lettre virtuelle (ex: S:) dédiée au montage réseau.
  • Journalisation : Un répertoire local pour conserver l'historique des sauvegardes (C:\Logs_Sauvegarde).
# Déclaration des paramètres de sauvegarde
$RacineSource   = "C:\DONNEES"
$PartageReseau  = "\\TRUENAS\SAVE-client\ps1\Tache1"
$LettreLecteur  = "S"
$DossierLog     = "C:\Logs_Sauvegarde"
$FichierLog     = "$DossierLog\Sauvegarde_$(Get-Date -Format 'yyyy-MM-dd').log"

Chapitre 2 : Montage et gestion sécurisée du lecteur réseau

Pour garantir que le transfert s'effectue sans encombre, le script doit s'assurer que le point de montage réseau est disponible et propre avant le lancement de la copie.

1. Nettoyage préventif

Si une session précédente a laissé la lettre S: engagée, une tentative de reconnexion provoquera une erreur. Il convient donc de tester la présence du lecteur et de le démonter.

2. Montage avec New-PSDrive

La commandelette New-PSDrive permet de mapper temporairement le partage réseau UNC sur la lettre système définie.

# Création du dossier de logs s'il n'existe pas
if (-not (Test-Path -Path $DossierLog)) {
    New-Item -ItemType Directory -Path $DossierLog -Force | Out-Null
}

# Nettoyage préventif d'une ancienne session S:
if (Get-PSDrive -Name $LettreLecteur -ErrorAction SilentlyContinue) {
    Remove-PSDrive -Name $LettreLecteur -Force -ErrorAction SilentlyContinue
}

# Connexion au partage réseau
New-PSDrive -Name $LettreLecteur -PSProvider FileSystem -Root $PartageReseau -Persist -ErrorAction Stop | Out-Null
$Destination = "${LettreLecteur}:\"

Chapitre 3 : Exécution de Robocopy et sélection des options

L'utilitaire Robocopy offre une gestion fine du transfert de fichiers. Le choix des paramètres (ou switches) conditionne la stratégie de sauvegarde.

1. Stratégie de sauvegarde : Complète vs Incrémentielle

  • Sauvegarde Complète (/MIR) : Crée un miroir exact du répertoire source vers la destination (les fichiers supprimés à la source sont supprimés sur la destination).
  • Sauvegarde Incrémentielle (/E /XO) : Copie l'arborescence complète (/E) tout en excluant les fichiers non modifiés (/XO - Exclude Older), ne transférant ainsi que les éléments nouveaux ou récents.

2. Commutateurs de robustesse recommandés

  • /FFT (Fat File Times) : Indispensable lors de sauvegardes vers un serveur Linux/SAMBA ou un NAS (TrueNAS, Synology) pour accorder une tolérance de 2 secondes sur les horodatages des fichiers.
  • /XJ (eXclude Junctions) : Exclut les points de jonction NTFS afin de prévenir les boucles infinies de récursion.
  • /R:3 /W:5 : Définit 3 tentatives maximum en cas de verrouillage de fichier avec un délai de 5 secondes entre chaque essai.
  • /NP /LOG+:$FichierLog : Masque la progression en pourcentage pour garder un journal de bord lisible et écrit les résultats en mode cumulatif.
# Exemple d'exécution Robocopy pour une sauvegarde incrémentielle
robocopy $RacineSource $Destination /E /XO /FFT /XJ /R:3 /W:5 /NP /LOG+:$FichierLog

Chapitre 4 : Nettoyage et automatisation

Une fois le transfert terminé, le script doit restituer l'état initial du système en déconnectant le lecteur réseau.

1. Démontage propre

La commande Remove-PSDrive libère la lettre de lecteur S:.

# Déconnexion du lecteur réseau temporaire
Remove-PSDrive -Name $LettreLecteur -Force -ErrorAction Stop
Write-Host "Sauvegarde terminée et lecteur réseau démonté." -ForegroundColor Green

2. Planification sous Windows

Pour automatiser la sauvegarde sans intervention humaine :

  1. Ouvrez le Planificateur de tâches Windows (taskschd.msc).
  2. Créez une nouvelle tâche exécutée avec les privilèges les plus élevés (Run with highest privileges).
  3. Dans la section Actions, définissez le programme powershell.exe avec l'argument : -NonInteractive -NoProfile -ExecutionPolicy Bypass -File "C:\Scripts\MonScriptSauvegarde.ps1"
  4. Configurez le déclencheur (ex: tous les soirs à 22h00 ou en fin de semaine).

Chapitre 5 : Exemples et cas d'usage prêts à l'emploi

Pour illustrer la méthode exposée dans ce tutoriel, voici trois cas d'usage concrets basés sur une politique d'entreprise combinant une sauvegarde hebdomadaire globale et deux sauvegardes quotidiennes incrémentielles sectorisées.

Exemple 1 : Sauvegarde Complète Hebdomadaire (Tâche 1)

Exemple 2 : Sauvegarde Incrémentielle - Lot Administration & Compta (Tâche 2)

  • Description : Sauvegarde uniquement des fichiers nouveaux ou modifiés pour les services Administration, Comptabilité et Production.
  • Dossiers Sources : 01_Administration, 03_Comptabilité, 06_Production (dans C:\DONNEES)
  • Destination Réseau : \\TRUENAS\SAVE-client\ps1\Tache2
  • Fréquence : Du lundi au vendredi à 12h00 et 23h00.
  • 📥 Télécharger le script complet : script_tache2.ps1

Exemple 3 : Sauvegarde Incrémentielle - Lot RH, Marketing & IT (Tâche 3)

  • Description : Sauvegarde incrémentielle quotidienne ciblée sur les données RH, Marketing et Informatique.
  • Dossiers Sources : 02_Ressources_Humaines, 04_Marketing, 05_IT (dans C:\DONNEES)
  • Destination Réseau : \\TRUENAS\SAVE-client\ps1\Tache3
  • Fréquence : Du lundi au vendredi à 18h00.
  • 📥 Télécharger le script complet : script_tache3.ps1

Conclusion

En appliquant cette structure logique en 3 chapitres (Initialisation, Traitement, Nettoyage) et en tirant parti des commutateurs optimisés de Robocopy (/FFT, /XJ, /R:3), vous obtenez un système de sauvegarde hautement fiable, économe en ressources et totalement automatisable.