2) Un deuxième script (saveDonneesWBADMIN2rep.vbs) basé sur le même principe que le script de sauvegarde du système et paramètré pour sauvegarder les répertoires et fichiers de données.


Scripts VBS WBADMIN - sauvegarde automatique système et données

Voici un aperçu du résultat avec rotation sur 2 répertoires pour archiver plusieurs sauvegardes WindowsImageBackup. Scripts WBADMIN WindowsImageBackup - sauvegarde automatique système et données

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 compteurD.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!!

Ce script contient aussi une partie réservé au contrôle des erreurs écrites dans le fichier log dans le répertoire C:\Windows\Logs\WindowsServerBackup\

Code du script VBS pour une sauvegarde des données

@echo off
'******************************************************************************************************** '* VBscript pour la Sauvegarde des Données du Serveur windows 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 TargetFolderDonnees TargetFolderDonnees = ("\\ServeurNAS1\RepertoiredeSauvegarde\Serveur1\" & strComputerName & "\DONNEES") '******************************************************************************************************** '********************Lecture du compteur et ecriture dans le fichier compteurd.txt************************ '******************************************************************************************************** Const ForReading = 1, ForWriting = 2 Set WshShell = WScript.CreateObject("WScript.Shell") Dim fso, f, file, input '************************************lecture dans compteurD.txt****************************************** Set file = CreateObject("Scripting.FileSystemObject") Set input = file.OpenTextFile ("C:\scriptsVBS\compteurD.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 compteurD.txt******************************************* Set fso = CreateObject("Scripting.FileSystemObject") Set f = fso.OpenTextFile("C:\scriptsVBS\compteurD.txt", ForWriting,true) f.write variable 'Wscript.echo "Ecriture de la nouvelle variable : " & variable & " dans le fichier compteurd.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(TargetFolderDonnees & "\" &variable) Set cFle = cFSO.GetFolder(TargetFolderDonnees & "\" & variable & "\rapportbackup") ' NB créer le répertoire backup avant de lancer le script 'set cFld = cFSO.GetFolder("\\ServeurNAS1\RepertoiredeSauvegarde\Serveur1\" & strComputerName & "\DONNEES\" &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 (TargetFolderDonnees & "\" &variable) Set oFle=oFSO.CreateFolder (TargetFolderDonnees & "\" & variable & "\rapportbackup") '******************************************************************************************************** '**************Lancement de la sauvegarde du lecteur E avec exclusion du répertoire temp***************** Dim WshShell, oExec Set WshShell = CreateObject("WScript.Shell") Set oExec = WshShell.Exec("wbadmin start backup -include:E: -exclude:E:\temp -quiet -backuptarget:"& TargetFolderDonnees & "\" &variable) '----------tempo de 90 minutes-------------- Do While oExec.Status = 1 WScript.Sleep 5400000 Loop WScript.Sleep 5400000 'WScript.Echo oExec.Status '******************************************************************************************************** '*************************Recherche du fichier Backup-Error-date-heure.log******************************* '******************************************************************************************************** Dim FileExt1, FileStart1, Folder1, LongName1, System1 FileExt1 = LCase("log") 'Extension recherchée FileStart1 = LCase("backup_error") 'Début du nom des fichiers recherchés Folder1 = "C:\Windows\Logs\WindowsServerBackup\" 'Répertoire contenant les fichiers log LongName1 = Len(FileStart1) 'Longueur du champ de recherche Set System = CreateObject("Scripting.FileSystemObject") For Each File In System.GetFolder(Folder1).Files 'On parcourt les fichiers du répertoire 'Si les 3 derniers caractères correspondent à l'extension et si le début du nom du fichier correspond ... If Right(LCase(File.Name), 3) = FileExt1 And Left(LCase(File.Name), LongName1) = FileStart1 Then 'MsgBox(File.Name) 'On affiche le nom du fichier '-------------------------recherche de chaine de caractères : sauvegardé---------------------- mot_cherche1 = "error" compteura = 0 fichier_lecture_1 = ("C:\Windows\Logs\WindowsServerBackup\" &File.name) Set fso = CreateObject("Scripting.FileSystemObject") set fichier_lecture_2 = fso.opentextfile(fichier_lecture_1, 1, true) do until fichier_lecture_2.atendofstream chaine = fichier_lecture_2.readline() if instr(1, chaine, mot_cherche1) > 0 then compteura = compteura + 1 end if loop fichier_lecture_2.close set fichier_lecture_2 = nothing set fso = nothing 'wscript.echo "La sauvegarde est " & mot_cherche1 & " avec : " & compteura & " fois" End If Next '******************************************************************************************************** '********************************Recherche du fichier Backup-date-heure.log****************************** '******************************************************************************************************** Dim FileExt2, FileStart2, Folder2, LongName2, System2 FileExt2 = LCase("log") 'Extension recherchée FileStart2 = LCase("backup-") 'Début du nom des fichiers recherchés Folder2 = "C:\Windows\Logs\WindowsServerBackup\" 'Répertoire de recherche LongName2 = Len(FileStart2) 'Longueur du champ de recherche Set System = CreateObject("Scripting.FileSystemObject") For Each File In System.GetFolder(Folder2).Files 'On parcourt les fichiers du répertoire 'Si les 3 derniers caractères correspondent à l'extension et si le début du nom du fichier correspond ... If Right(LCase(File.Name), 3) = FileExt2 And Left(LCase(File.Name), LongName2) = FileStart2 Then 'MsgBox(File.Name) 'On affiche le nom du fichier '-------------------------recherche de chaine de caractère sauvegardé---------------------- mot_cherche2 = "sauvegardé" compteurb = 0 fichier_lecture_1 = ("C:\Windows\Logs\WindowsServerBackup\" &File.name) Set fso = CreateObject("Scripting.FileSystemObject") set fichier_lecture_2 = fso.opentextfile(fichier_lecture_1, 1, true) do until fichier_lecture_2.atendofstream chaine = fichier_lecture_2.readline() if instr(1, chaine, mot_cherche) > 0 then compteurb = compteurb + 1 end if loop fichier_lecture_2.close set fichier_lecture_2 = nothing set fso = nothing 'wscript.echo "La sauvegarde est " & mot_cherche2 & " avec : " & compteura & " erreur(s)" 'wscript.echo "La sauvegarde du serveur " & strComputerName & " s'est effectué avec : " & compteura & " erreur(s)" End If Next '******************************************************************************************************** 'wscript.echo "La sauvegarde est " & mot_cherche & " avec : " & compteurb & " fois" 'msgbox "mot error trouvé " & compteurb & " fois." 'wscript.echo "La sauvegarde est " & mot_cherche & " avec : " & compteura & " erreurs" 'if compteurb=1 then wscript.echo "La sauvegarde est notée " & mot_cherche & " avec : " & compteura & " erreurs!!!!" 'if compteurb=0 then wscript.echo "La sauvegarde n'est pas bonne, il y a " & compteura & " erreurs!?!?" '******************************************************************************************************** '************************************Copie des fichiers de logs****************************************** dim file1 set file1 =CreateObject("Scripting.FileSystemObject") file1.CopyFile ("C:\Windows\Logs\WindowsServerBackup\*.log"), (TargetFolderDonnees & "\" & variable & "\rapportbackup") '******************************************************************************************************** '*********************************Suppression des fichiers de logs*************************************** Const DeleteReadOnly = True Set objFSO = CreateObject("Scripting.FileSystemObject") objFSO.DeleteFile("C:\Windows\Logs\WindowsServerBackup\*.log"), DeleteReadOnly '******************************************************************************************************** '**************************Envoyer le Rapport de sauvegarde par mail par SMTP**************************** '******************************************************************************************************** With CreateObject("CDO.Message") .From="VotreMail@VotreFournisseur.fr" .To="AdresseMailDestinataire@VotreFournisseur.fr" .Subject="Sauvegarde de données du serveur " & strComputerName & " terminée avec : " & compteura & " erreur(s)!" '.TextBody="Bonjour," & chr(10) & chr(10) & "Ceci est un test. " & chr(10) & chr(10) &"Cordialement," if oExec.Status=1 then .TextBody=""& chr(10) & chr(10) & "La sauvegarde des données du serveur " & strComputerName & " est en erreur!!! " if oExec.Status=0 then .TextBody=""& chr(10) & chr(10) & "La sauvegarde des données du serveur " & strComputerName & " s'est effectuée avec : " & compteura & " erreur(s)!" '**************************************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 '******************************************************************************************************** '********************************************************************************************************

Entrez votre adresse mail:

Vous pouvez télécharger le code et les fichiers de cette démonstration contenus dans le zip suivant : ScriptsSauvegardeServeur.zip



(Dans le Gestionnaire de Serveur d'un serveur Windows 2008, il y a la possibilité d'automatiser les sauvegardes mais la sauvegarde suivante écrase la précedente et la sauvegarde n'est que journalière. L'utilité des scripts proposés sur ce site est de pouvoir créer les répertoires où seront stockées les différentes sauvegardes, de garder et d'archiver ces différentes sauvegardes. On utilisera le planificateur de tâche pour programmer les sauvegardes à des dates et heures voulues)

NB : Je vous laisse, créer les droits d'accès et partages sur vos serveurs et le réseau. Créez aussi un compte de même nom et même mot de passe sur le nas et votre serveur à sauvegarder. Intégrez ce compte utilisateur dans le groupe opérateurs de sauvegarde.

Regardez ici un exemple de paramétrage du planificateur de tâches pour organiser les sauvegardes à partir d'un calendrier.

En partant des mêmes besoins mais en utilisant un Batch (cmd ou bat), j'ai nommé les répertoires de sauvegarde par la date et l'heure.


Lire la suite »





Documentation pour les commandes avec WBADMIN :
WBADMIN start backup
WBADMIN stop job
WBADMIN start recovery
WBADMIN start systemstatebackup
WBADMIN start sysrecovery






0487966