Sauvegarde automatique des Serveurs Windows en VBscript
♦ WBADMIN.EXE (commandes - scripts avec fichier.VBS)(Avec les derniers systèmes, Windows Server Backup remplace NTbackup)
Cette rubrique reprend le principe de sauvegarde automatisé par script du serveur Windows 2008 vers un NAS ou un partage réseau de votre domaine.
1) Le premier script (saveSystemeWBADMIN2rep.vbs) permet de faire une sauvegarde système de votre serveur windows, de créer N répertoires et de faire une rotation des sauvegardes dans ces N conteneurs. Vous pouvez ainsi décider de ne garder qu'un certain nombre de sauvegardes à archiver (N) et d'écraser par cette rotation la plus ancienne à chaque execution du script dans le planificateur de tâches.

Voici un aperçu du résultat avec rotation sur 2 répertoires pour archiver plusieurs sauvegardes WindowsImageBackup. |
|
Récupérer le script ci-dessous pour créer un Fichier.VBS à copier dans un répertoire c:\scriptsVBS. Ce fichier est commenté à chaque étape.
Il vous faudra aussi créer un fichier compteurS.txt avec la valeur 1 pour commencer et rangez le au même endroit. Modifiez le nom des partages, répertoires et de serveur suivant votre installation!!
Code du script VBS pour une sauvegarde système
'********************************************************************************************************
'* VBscript pour la Sauvegarde du Système Windows Serveur vers un NAS *
'********************************************************************************************************
'********************************Déclaration des Variables et Constantes*********************************
Set wshShell = WScript.CreateObject( "WScript.Shell" )
strComputerName = wshShell.ExpandEnvironmentStrings( "%COMPUTERNAME%" )
'WScript.Echo "Computer Name: " & strComputerName
'********************************************************************************************************
Dim TargetFolderSystem
TargetFolderSystem = ("\\ServeurNAS1\RepertoiredeSauvegarde\Serveur1\" & strComputerName & "\SYSTEM")
'********************************************************************************************************
'********************Lecture du compteur et ecriture dans le fichier compteurs.txt***********************
'********************************************************************************************************
Const ForReading = 1, ForWriting = 2
Set WshShell = WScript.CreateObject("WScript.Shell")
Dim fso, f, file, input
'************************************lecture dans compteurS.txt******************************************
Set file = CreateObject("Scripting.FileSystemObject")
Set input = file.OpenTextFile ("C:\scriptsVBS\compteurS.txt", ForReading)
variable = input.ReadLine
'Wscript.echo "lecture de la variable compteur : " &variable
'***********************Boucle de compteur et rotation sur deux répertoires******************************
variable = variable + 1
IF variable >= 3 then variable = 1
'Wscript.echo "Incrément +1 de la variable compteur : " &variable
'**********************************Ecriture dans compteurS.txt*******************************************
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("C:\scriptsVBS\compteurS.txt", ForWriting,true)
f.write variable
'Wscript.echo "Ecriture de la nouvelle variable : " & variable & " dans le fichier compteurs.txt"
'********************************************************************************************************
'**********************Effacer le repertoire de l'ancienne sauvegarde sur le NAS*************************
'********************************************************************************************************
' Le paramétre "Force" à true permet d'effacer les fichiers en lectures
Dim cFSO,cFld,cFle
Set cFSO = CreateObject("Scripting.FileSystemObject")
set cFld = cFSO.GetFolder(TargetFolderSystem & "\" &variable)
'Wscript.echo "Chemin du NAS " &cFld
cFld.Delete True ' Le paramétre "Force" à False n'autorise pas d'effacer les fichiers et répertoires en lectures seules.
'**************************Création de répertoire pour les sauvegardes***********************************
Dim oFSO,oFld,oFle
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFld=oFSO.CreateFolder (TargetFolderSystem & "\" &variable)
'Set oFld=oFSO.CreateFolder ("\\ServeurNAS1\RepertoiredeSauvegarde\Serveur1\" & strComputerName & "\SYSTEM\" &variable )
'********************************************************************************************************
'*********************************Lancement de la sauvegarde*********************************************
Dim WshShell, oExec
Set WshShell = CreateObject("WScript.Shell")
Set oExec = WshShell.Exec("wbadmin start backup -include:C: -exclude:C:\temp -systemstate -vssCopy -allCritical -quiet -backuptarget:"& TargetFolderSystem & "\" &variable)
'********** Régler un temps d'attente pour la bonne execution des commandes et processus ****************
'********** Temporisation 1 minute vaut 60000 unités **********
Do While oExec.Status = 1
WScript.Sleep 1500000
Loop
WScript.Sleep 1500000
'WScript.Echo oExec.Status
'********************************************************************************************************
'**************************Envoyer le Rapport de sauvegarde par mail par SMTP****************************
'********************************************************************************************************
With CreateObject("CDO.Message")
.From="VotreMail@VotreFournisseur.fr"
.To="AdresseMailDestinataire@VotreFournisseur.fr"
.Subject="Sauvegarde système du serveur " & strComputerName & " terminée (OK)"
'.TextBody="Bonjour," & chr(10) & chr(10) & "Texte dans votre mail. " & chr(10) & chr(10) &"Cordialement,"
'if oExec.Status=0 then .TextBody=""& chr(10) & chr(10) & "La sauvegarde système du serveur " & strComputerName & " est en erreur!!! "
if oExec.Status=1 then .TextBody=""& chr(10) & chr(10) & "La sauvegarde système du serveur " & strComputerName & " est terminée normalement! "
'*****************************************Serveur SMTP***************************************************
.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "VotreServerSMPT"
' OU suivant votre fournisseur, voici quelques exemples de serveur SMTP ci-dessous
'.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.orange.fr"
'.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
'.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.numericable.fr"
.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
.Configuration.Fields.Update
'****************************************Messages d'erreurs**********************************************
On Error Resume Next
.Send
If Err.Number <>0 Then
'MsgBox Err.Description,16,"Erreur"
End If
'************************************Affichage d'un message POPUP****************************************
' msgbox "mail bien envoyé"
On Error GoTo 0
End With
'********************************************************************************************************
'********************************************************************************************************
'Wscript.echo "Fin du Script!!"
Wscript.Quit
'********************************************************************************************************
'********************************************************************************************************
Vous pouvez télécharger le code et les fichiers de cette démonstration contenus dans le zip suivant : ScriptsSauvegardeServeur.zip
2) Un deuxième script (saveDonneesWBADMIN2rep.vbs) basé sur le même principe que le script de sauvegarde du système ci-dessus et paramètré pour sauvegarder les répertoires et fichiers de données.

Lire la suite »
|