27/06/2024

Configurer la sauvegarde de Windows avec PowerShell

Les sauvegardes représentent un service important et indispensable au sein des systèmes d’information pour assurer la pérennité des données, et offrir une solution de secours en cas de perte.

Dans le cadre de ce chapitre, nous utiliserons un outil de sauvegarde mis à disposition nativement dans Windows, à savoir la fonctionnalité « Sauvegarde de Windows ».

I. Installer la fonctionnalité

En premier lieu, on va installer la fonctionnalité de sauvegarde proposée par Windows, via PowerShell on doit l’appeler par le nom « Windows-Server-Backup ». La commande d’installation sera donc :

Install-WindowsFeature -Name Windows-Server-Backup

L’installation effectuée, on va pouvoir passer au déclenchement d’une sauvegarde one-shot.

II. Exécuter une sauvegarde avec wbadmin

L’installation de la fonctionnalité de sauvegarde Windows permet d’accéder à une liste importante de commandlet dédié à cela, mais aussi à l’outil « wbadmin » qui permet de réaliser rapidement des sauvegardes.

On va déclencher immédiatement une sauvegarde qui inclura tous les lecteurs critiques et l’état du système. Cet état complet permet de sauvegarder complètement le système. On stockera cette sauvegarde sur le partage que nous avons créée précédemment (rappelez-vous quelques chapitres en arrière…), c’est à dire sur « SRV01 » accessible sous le nom « Partage ».

Avec wbadmin, on démarre une sauvegarde en intégrant « start backup », et on indique la cible avec le paramètre « backupTarget » suivi du chemin UNC. Enfin, dans ce cas précis, on ajoutera « allCritical » pour inclure dans la sauvegarde tous les volumes critiques, et « systemState » pour sauvegarder un état du système.

wbadmin start backup -backupTarget:\\srv01.it-connect.fr\Partage -allCritical -systemState

Selon la rapidité de vos serveurs et de votre réseau, la sauvegarde mettra plus ou moins de temps à se réaliser. Quoi qu’il en soit il faudra patienter.

Sauvegarde en cours
Sauvegarde en cours

Après avoir patienté, la sauvegarde devrait aboutir sans erreur, comme ceci :

Sauvegarde terminée
Sauvegarde terminée

La sauvegarde est stockée sur le partage au sein d’un répertoire « WindowsImageBackup » automatiquement créé.

Si vous souhaitez modifier une tâche en cours (imaginons que l’on a oublié un paramètre), vous aurez surement le réflexe de faire un « CRTL+C ».

Vous retournerez alors sur le prompt, mais le job de sauvegarde continuera à tourner en arrière-plan ! Pour arrêter le job en cours, on utilise la commande adéquate :

wbadmin stop job

On obtient la sortie suivante (confirmez avec « O » l’annulation de la sauvegarde) :

PS P:\> wbadmin stop job
wbadmin 1.0 - Outil en ligne de commande de sauvegarde
Voulez-vous vraiment arrêter l'opération en cours ?
[O] Oui [N] Non O
L'opération de sauvegarde s'est arrêtée avant la fin.

III. Créer un job de sauvegarde en PowerShell

Windows intègre une vingtaine de commandlets permettant de gérer le service de sauvegarde en PowerShell. Ils permettent notamment la création d’une « policy » qui correspond en fait à un job qu’il faut paramétrer afin d’automatiser une sauvegarde sur son serveur.

L’objectif est de créer une nouvelle policy et d’y ajouter un tas de paramètres (où allons-nous effectuer la sauvegarde ? Qu’est-ce qui doit être sauvegardé ? Quand la sauvegarde doit-elle être exécutée ?...).

# Créer une nouvelle policy
$policy = New-WBPolicy
# Sélectionner les volumes à sauvegarder
$volumes = Get-WBVolume -AllVolumes
Add-WBVolume -Policy $policy -Volume $volumes
# Fournir les credentials
$cred = Get-Credential
# Définir la cible pour stocker le backup
$backupTarget = New-WBBackupTarget -NetworkPath \\srv01.it-connect.fr\Partage -Credential $cred
Add-WBBackupTarget -Policy $policy -Target $backupTarget
# Réaliser un état du système
Add-WBSystemState -Policy $policy
# Planification et configuration de la policy
Set-WBSchedule -Policy $policy 22:00
Set-WBPolicy -Policy $policy

Le job défini avec les commandes ci-dessus permet de sauvegarder tous les volumes du serveur, ainsi qu’un état du système, à 22:00, sur le partage réseau « Partage » situé sur « SRV01 ».

Si vous souhaitez utiliser un disque dur local plutôt qu’un répertoire réseau, supprimez la partie sur les credentials et les deux lignes commençant par $backupTarget et Add-WBBackupTarget. À la place, ajoutez ceci :

# Définir le disque de backup
$disks = Get-WBDisk
$backupLocation = New-WBBackupTarget -Disk $disks[0]
Add-WBBackupTarget -Policy $policy -Target $backupLocation

La valeur « $disks[0] » signifie que l’on sélectionne le disque « 0 ». Effectuez au préalable la commande qui permet de lister les disques, à savoir :

Get-WBDisk
Get-WBDisk
Get-WBDisk

Il est possible de lister le résumé de cette policy en utilisant la commande suivante :

Get-WBPolicy
Get-WBPolicy
Get-WBPolicy

Maintenant que tout est prêt à être exécuté, il suffit d’attendre que la sauvegarde s’exécute à l’heure indiquée. Si l’on souhaite démarrer immédiatement le job, on saisit :

Start-WBBackup -Policy $policy

Le job va s’exécuter… L’état sera affiché en temps réel dans la console… À tout moment, on peut vérifier si un job s’exécute en invoquant la commande « Get-WBJob » qui permet de lister les jobs en cours et l’avancement. Voici un exemple pendant l’exécution de ce job :

Get-WBJob - Sauvegarde en cours
Get-WBJob - Sauvegarde en cours

S’il n’y a pas de job en cours d’exécution, on obtiendra un résultat comme ceci :

cours-windows-core-61
Get-WBJob - Aucun job en exécution

Après plusieurs minutes d’attente, la sauvegarde se termine avec succès :

Sauvegarde réussie avec succès !
Sauvegarde réussie avec succès !

Bien entendu, toutes ces commandes peuvent être intégrées dans un script .ps1 et le fonctionnement amélioré : système de rotation des sauvegardes, notifications par e-mails, etc. Un script permettra également de créer une tâche planifiée à exécuter périodiquement pour effectuer la sauvegarde.

Néanmoins, avec ce que l’on vient de voir, vous pouvez planifier une sauvegarde régulière très facilement grâce à la solution de sauvegarde proposée par Windows. Bien qu’il ne s’agisse pas d’une solution de sauvegarde sans inconvénient et complète, la sauvegarde d’un serveur peut être assurée par ce service.

À vous de voir si vous souhaitez utiliser en priorité « WbAdmin » ou les commandes PowerShell.

author avatar
Florian BURNEL Co-founder of IT-Connect
Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail