28 octobre 2026

Sauvegarde incrémentielle d’un serveur Hyper‑V avec PowerShell

Sauvegarde incrémentielle d’un serveur Hyper‑V avec PowerShellwindows
Photo: Markus Winkler / Pexels
🖥️ Illustration
PowerShell – Sauvegarde Hyper‑V
PS C:\Scripts> $BackupRoot = « E:\HyperV_Backups »
PS C:\Scripts> $VMName = « WebApp01 »
PS C:\Scripts> Checkpoint-VM -Name $VMName -SnapshotName « PreBackup_$(Get-Date -Format yyyyMMdd_HHmm) »
Checkpoint created successfully.
PS C:\Scripts> Export-VM -Name $VMName -Path « E:\HyperV_Backups\WebApp01\20241001 » -Force
Export completed successfully.
PS C:\Scripts> Get-VMSnapshot -VMName $VMName | Where-Object {$_.Name -like « PreBackup_* »} | Remove-VMSnapshot -Confirm:$false
Snapshot removed.
PS C:\Scripts> « $(Get-Date) – Sauvegarde de $VMName vers $ExportPath » | Out-File -FilePath « E:\HyperV_Backups\Logs\Backup.log » -Append

Contexte

Dans un environnement Windows Server 2022 hébergeant des machines virtuelles (VM) sous Hyper‑V, disposer d’une stratégie de sauvegarde fiable est essentiel pour garantir la continuité de service. Les sauvegardes incrémentielles permettent de ne copier que les blocs modifiés depuis la dernière sauvegarde, réduisant ainsi la consommation de bande passante et d’espace disque.

hyper-v backup powershellwindows
Photo: panumas nikhomkhai / Pexels

Quand l’utiliser ?

  • Vous avez plusieurs VM critiques et un stockage de sauvegarde limité.
  • Vous souhaitez automatiser la procédure via un script planifié.
  • Vous avez besoin d’une solution native sans recourir à un logiciel tiers.

🔹 Étapes de mise en œuvre

  1. Créer le répertoire de destination et définir les variables
    $BackupRoot = "E:\HyperV_Backups"
    $VMName = "WebApp01"
    $VHDPath = "C:\ProgramData\Microsoft\Windows\Hyper-V\Virtual Machines"
    $LogPath = "$BackupRoot\Logs"
    New-Item -ItemType Directory -Force -Path $BackupRoot,$LogPath
  2. Prendre un point de contrôle (checkpoint) de la VM
    Checkpoint-VM -Name $VMName -SnapshotName "PreBackup_$(Get-Date -Format yyyyMMdd_HHmm)"
  3. Lancer la sauvegarde incrémentielle avec Export-VM
    $ExportPath = "$BackupRoot\$VMName\$(Get-Date -Format yyyyMMdd)"
    Export-VM -Name $VMName -Path $ExportPath -Force
  4. Supprimer le checkpoint après export
    Get-VMSnapshot -VMName $VMName | Where-Object {$_.Name -like "PreBackup_*"} | Remove-VMSnapshot -Confirm:$false
  5. Conserver un journal d’exécution
    "$(Get-Date) – Sauvegarde de $VMName vers $ExportPath" | Out-File -FilePath "$LogPath\Backup.log" -Append
  6. Planifier la tâche avec le planificateur Windows
    $Script = "C:\Scripts\HyperV-IncBackup.ps1"
    $Action = New-ScheduledTaskAction -Execute "powershell.exe" -Argument "-NoProfile -ExecutionPolicy Bypass -File `"$Script`""
    $Trigger = New-ScheduledTaskTrigger -Daily -At 02:00
    Register-ScheduledTask -TaskName "HyperV_IncrBackup_WebApp01" -Action $Action -Trigger $Trigger -User "SYSTEM" -RunLevel Highest

⚠️ Méthode alternative

Si vous préférez une solution basée sur Microsoft Azure Backup Server ou Veeam Backup & Replication, vous pouvez créer un job de sauvegarde incrémentielle via leurs consoles graphiques. Cette approche offre des fonctionnalités avancées (déduplication, réplication hors site) mais nécessite une licence supplémentaire.

⚠️ Bonnes pratiques de sécurité

  • Stockez les backups sur un volume séparé, idéalement en RAID 6 ou sur un NAS avec chiffrement au repos.
  • Restreignez l’accès au répertoire $BackupRoot aux comptes NT SERVICE\Hyper-V VMMS et aux administrateurs.
  • Testez régulièrement la restauration d’une VM à partir d’un backup incrémentiel.
  • Activez la journalisation détaillée (-Verbose) en phase de test pour détecter d’éventuelles erreurs.

✅ Conclusion

En suivant ce tutoriel, vous avez automatisé la sauvegarde incrémentielle de vos machines Hyper‑V à l’aide de PowerShell, tout en assurant traçabilité et sécurité. N’hésitez pas à adapter le script pour gérer plusieurs VM ou à intégrer la compression des exports.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *