Script de sauvegarde pour Windows Server 2008 R2 et Windows Server 2012

Sommaire

 

 

Introduction

Dans cet article, je vous présente un script de sauvegarde assez complet pour Windows 2008 R2 et Windows Server 2012 qui devrait vous rendre pas mal de services !

 

 

Compatibilité

Le script a été testé sur Windows 2008 R2 et Windows Server 2012. Il devrait également être supporté sur du Windows Server 2012 R2 bien que je n’ai réalisé aucun test à ce jour.

 


Les fonctionnalités

Il prend en charge les fonctionnalités suivantes :

  • Gestion de la rotation quotidienne, hebdomadaire et mensuelle : la sauvegarde mensuelle est réalisée le premier jour du mois, la sauvegarde hebdomadaire est réalisée le lundi. Les autres jours, la sauvegarde est considérée comme étant quotidienne. Hormis le nom du fichier de sauvegarde pour réaliser la rotation, il n’y a aucune différence entre les 3 types.
  • Compression : elle est réalisée sur demande à l’aide de 7-Zip. J’ai constaté des ratios allant de 1 pour 10 donc fortement recommandé.
  • Synchronisation depuis un répertoire distante : la synchronisation se fait à l’aide de Robocopy et de l’option « /MIR ». Simple mais efficace…
  • Journalisation des tâches dans un fichier texte : un fichier est généré pour chaque tâche de sauvegarde. Un fichier mensuel est également créé pour obtenir un meilleur visuel sur le taux d’échecs et de réussites.
  • Notification par message électronique : un email est envoyé sur demande et à la fin de chaque tâche de sauvegarde.
  • Type de sauvegarde : vous avez le choix entre la sauvegarde de l’état système ou une sauvegarde complète de type BareMetal.

 

Certaines fonctionnalités peuvent être activées ou configurées selon vos besoins à l’aide de paramètres :

  • Compression : à l’aide du paramètre « Compress ». Par défaut le script ne compressera pas les sauvegardes à moins que vous spécifiez le paramètre.
  • Synchronisation : à l’aide du paramètre « Sync ». Par défaut le script ne synchronisera pas les sauvegardes à moins que vous spécifiez le paramètre.
  • Notification : à l’aide du paramètre « Notify ». Par défaut le script n’enverra pas de notification par email à moins que vous spécifiez le paramètre.

 

Enfin, pour faciliter l’usage et éviter les erreurs de configuration, le script s’appuie sur un fichier de configuration XML et d’un schéma XML embarqué.

 


Installation : Partie 1 – copie des sources

Récupérer le fichier Zippé depuis le lien Technet suivant : http://gallery.technet.microsoft.com/scriptcenter/The-ultimate-backup-script-819e52ee. Extrayez le contenu de l’archive dans le dossier de votre choix. Pour ma part, j’ai décidé de copier le contenu de l’archive dans le dossier « D:\WSB-Script ».

{gallery}84_WBS_SCRIPT/01{/gallery}

 

 

 

 

 

 

 

L’archive contient donc 4 fichiers dont deux situés dans un sous-répertoire « Tools ».

  • « Backup-Config.xml » : fichier de configuration de la sauvegarde que vous aurez à modifier selon vos besoins
  • « Backup-Task.ps1 » : le script en lui-même que vous n’aurez pas à modifier
  • « 7z.* » : le binaire et la dll nécessaire à l’utilisation de 7-Zip (vous pouvez normalement utiliser vos propres sources…)

 

 

Installation : Partie 2 – édition du fichier de configuration

Vous serez dans l’obligation de paramétrer la sauvegarde à l’aide du fichier de configuration « Backup-Config.xml » pour pouvoir exécuter le script. Pour faire les choses bien, j’ai utilisé un schéma XML au sein même du script afin de limiter la casse.

Certains informations sont optionnelles et dépendrons des paramètres d’exécution du script. Par exemple, les informations relatives à la notification par message électronique ne seront utilisées que si vous activer la notification leur du lancement du script.

Ci-dessous, je vous joins un exemple de configuration avec l’ensemble des paramètres possibles.

 

Le fichier est constitué de plusieurs sections liées à une fonctionnalité du script.

  • <GENERAL> : Cette section permet de spécifier la configuration de base de votre sauvegarde.

<MonthRetention> : le nombre de version à conserver pour les sauvegardes mensuelles (valeur par défaut : 2).
<WeekRetention> : le nombre de version à conserver pour les sauvegardes hebdomadaires (valeur par défaut : 4).
<DayRetention> : le nombre de version à conserver pour les sauvegardes quotidiennes (valeur par défaut : 15).
<MinimumSpaceInGB> : l’espace nécessaire par défaut pour réaliser une sauvegarde (valeur par défaut : 20Go). Le script est capable d’identifier la taille nécessaire pour une sauvegarde, à la seule condition que vous compressiez vos sauvegardes et que vous en ailler déjà réalisé une.
<BackupRootFolder> : Le répertoire de stockage de vos sauvegardes. A spécifier obligatoirement.

 

  • <DESTINATION> : Cette section concerne la synchronisation. Elle doit être configurée seulement si vous avez activé la synchronisation.

<SyncServerName> : le nom du serveur avec lequel vous allez vous synchroniser.
<SyncFolderName> : le nom du dossier partagé qui stockera la synchronisation.

 

  • <NOTIFICATION> : Cette section concerne la notification par message électronique. Elle doit être configurée seulement si vous avez activé la notification.

<SmtpServerName> : le nom d’hôte de votre serveur SMTP.
<SmtpServerPort> : le port du serveur SMTP.
<SmtpServerUsername> : Le nom d’utilisateur pour l’envoi.
<SmtpServerPassword> : Le mot de passe pour l’envoi.
<Ssl> : l’activation de la fonctionnalité TLS. Le type doit être un booléen (true/false).
<Recipient> : l’adresse de destination. Répétez le paramètre autant de fois que vous avez de destinataires.
<Sender> : L’adresse d’envoi.

 


Installation : Partie 3 – création de la tâche planifiée

Je ne vais pas vous expliquer comment créer une tâche planifiée car ce n’est pas vraiment l’objet de l’article. Je vais me contenter de vous fournir les informations sur la ligne de commande à spécifier depuis l’onglet « Actions » de votre tâche planifiée.

  • Action : « Démarrer un programme »
  • Programme/Script : « powershell.exe »
  • Ajouter des arguments : « -NoProfile -NonInteractive -ExecutionPolicy unrestricted -Command D:\WSB-Script\Backup-Task.ps1 -ConfigFile D:\WSB-Script\Backup-Config.xml -Compress -Sync -Notify »

 

Remarque : les arguments spécifiés permettront de réaliser une sauvegarde de l’état système et d’activer l’ensemble des fonctionnalités du script.

 

 

Exécution manuelle du script

Le fonctionnement est assez simple dès lors que vous avez bien complété votre fichier de configuration.

Exemple 1: Backup-Task.ps1 –ConfigFile e:\WSB-Script\Backup-Config.xml –Compress –Sync –Notify

Lancement d’une sauvegarde de l’état système avec l’activation de la compression, de la synchronisation et de la notification.

Exemple 2 : Backup-Task.ps1 –ConfigFile e:\WSB-Script\Backup-Config.xml –BackupType BareMetal

Lancement d’une tâche de sauvegarde de type BareMetal sans aucune fonctionnalité supplémentaire.

Exemple 3 : Backup-Task.ps1 –ConfigFile e:\WSB-Script\Backup-Config.xml –BackupType BareMetal  –Compress –Notify

Lancement d’une tâche de sauvegarde de type BareMetal avec compression et notification.

 

Lors de la première exécution, le script installera les fonctionnalités Windows nécessaires de manière automatique.

 

La sauvegarde se lance…

 

Une fois que vous voyez le message « L’opération de sauvegarde est terminée. ». Le script lance la synchronisation. Vous pouvez d’ailleurs vérifier que le processus « 7z.exe » est en pleine activité… Ce n’est pas très verbeux mais le script a pour vocation d’être exécuter via une tâche planifiée.

 

Si vous activez la notification, vous recevrez un message électronique dont je vous propose un exemple de format ci-dessous.

 

Vous pouvez également consulter le fichier de journalisation généré à chaque exécution.

 


Conclusion

Maintenant que nous avons vu ensemble comment mettre en place le script de sauvegarde. Je vous propose également de consulter deux articles relatifs à la restauration:

 


Réaliser une restauration complète « BareMetal » avec Windows Server Backup (2008R2 / 2012)

La restauration de type « BareMetal » est une restauration complète de votre système. Elle permet de s’affranchir de la réinstallation du système d’exploitation… et de limiter les étapes de restauration. La seule prérogative est que la sauvegarde utilisée soit également de type « BareMetal ».

Avant toute chose, si vous avez compressé votre sauvegarde à l’aide de mon script (disponible ICI), la première étape consiste donc à la décompresser. Pour cela, saisir la commande : « 7z.exe x [CHEMIN_COMPLET_DU_FICHIER] ».

Remarque : la commande décompresse le fichier dans le répertoire courant…

 

Renommer le dossier de la sauvegarde à restaurer en « WindowsImageBackup ». Cela permettra à l’outil de restauration de détecter votre sauvegarde. Bien entendu, le dossier contenant la sauvegarde décompressée devra être accessible via le réseau…

 

Maintenant, vous allez démarrer la machine dans l’environnement de récupération Windows (http://technet.microsoft.com/fr-fr/library/cc765966(v=ws.10).aspx).Pour accéder à Windows RE, vous pouvez soit sélectionner l’option de démarrage avancée « Réparer l’ordinateur » (à l’aide de la touche F8 avant que logo Windows apparaisse) soit démarrer à partir du DVD d’installation en sélectionnant l’option « Réparer l’ordinateur ».

{gallery}83_WBS_RESTOREBAREMETAL/01{/gallery}

 

 

 

 

 

 

 

 

Une fois dans l’environnement de récupération, nous allons sélectionner « Dépannage » et ensuite « Récupération de l’image système ».

 

Vous devriez recevoir instantanément un message d’avertissement signalant qu’aucune sauvegarde n’a été trouvé. Nous n’allons pas en tenir compte.

Remarque : ce n’est pas toujours le cas en réalité car vous pouvez très avoir un volume local dédié à la sauvegarde et donc ne pas avoir le message d’erreur.

 

Nous choisissons « Sélectionner une image système ». A l’étape suivante, nous cliquons sur le bouton « Avancé… ».

{gallery}83_WBS_RESTOREBAREMETAL/02{/gallery}

 

 

 

 

 

 

 

Nous choisissons « Chercher une image système sur le réseau » que vous soyez en DHCP ou non (je vais vous montrer comme définir une adresse IP si nécessaire). Si la carte réseau n’est pas détecté, vous pouvez en profiter pour installer le pilote.

Vous recevez également un message d’avertissement sur les risques encourus lorsque que vous connectez votre machine sur le réseau… Une fois le message validée, l’assistant tente la connexion au réseau.

{gallery}83_WBS_RESTOREBAREMETAL/03{/gallery}

 

 

 

 

 

 

 

 

A ce moment là, vous avez deux possibilités. Soit vous êtes en DHCP et vous continuez à suivre la procédure, soit vous n’avez pas de serveur DHCP et je vous propose de passer par la procédure décrite ICI.

Entrez l’emplacement réseau de votre sauvegarde. Par exemple : « \\192.168.0.201\Backups ».

 

L’assistant devrait vous proposer automatiquement la sauvegarde indiquée…

{gallery}83_WBS_RESTOREBAREMETAL/04{/gallery}

 

 

 

 

 

 

 

Sélectionner de formater et de repartitionner vos disques si nécessaire (en particulier si vous avez changé le disque dur).

 

Lorsque vous valider la restauration, un dernier message d’avertissement apparait vous signalant le caractère irréversible de l’opération. Une fois confirmée, la restauration débute.

 

Votre machine redémarre enfin et votre système est de nouveau opérationnel!

Spécifier une adresse IP statique depuis Windows RE

Dans cet article, je vous propose premièrement de vous accompagner dans la configuration d’une adresse IP statique sous Windows RE. Deuxièmement, je vous propose une solution pour ceux qui aurait l’erreur  « interface inconnue » avec « netsh » (allez directement ICI).

Lorsque vous démarrez à l’aide de Windows RE (environnement de récupération Windows – http://technet.microsoft.com/fr-fr/library/cc765966(v=ws.10).aspx), vous aurez sans doute besoin d’un accès réseau pour accéder à une de vos images. Ça se complique  généralement lorsque vous n’avez pas de serveur DHCP et qu’il faut définir une adresse IP statique à l’aide de l’outil en ligne de commande « netsh ».

« netsh » est un outil en ligne de commande donc allez dans « Dépannage | Invite de commandes ».

 

 

Vous devrez peut-être spécifié un compte administrateur si votre ancien système n’est pas complètement « crashé ».

 

Une fois dans l’invite de commande, nous allons commencer par identifier le nom de l’interface à l’aide de la commande « netsh interface show interface ». Notez le nom de l’interface voulue. Dans mon cas il s’agit de l’interface nommée « Ethernet ».

 

Si vous n’avez aucune interface, il est fort probable que les pilotes de votre carte réseau ne sont pas chargés ou installés. Si c’est le cas, je vous conseille de passer par l’assistant « Récupération de l’image système » pour installer les pilotes et revenir ensuite à l’invite de commandes.

Remarque : dans mon cas, le fait de sélectionner l’option « Chercher une image système sur le réseau » a suffit à faire apparaitre la carte réseau.

 

Maintenant que vous avez bien votre carte réseau qui apparait à l’aide de « show interface », taper la commande suivante pour définir une adresse IP statique : « netsh interface ipv4 add address [NOM_INTERFACE] [ADRESSE_IP] [MASK] [GW] ».

Exemple : « netsh interface ipv4 add address “Ethernet” 192.168.0.50 255.255.255.0 »

 

Si vous les accumulez, comme moi, alors vous devriez obtenir le message « Interface inconnue ». Pour remédier au problème, tapez la commande « wpeinit » et relancez la commande précédente.

 

L’adresse IP statique est enfin configurée ! On peut valider à l’aide d’un « ipconfig » et d’un « ping » si nécessaire.

Restaurer l’état système avec Windows Server Backup (2008R2 / 2012)

Aujourd’hui, je vais vous montrer comment réaliser une restauration de l’état système avec une sauvegarde réalisée à l’aide de mon script (disponible ici).

 

Si vous avez compressé votre sauvegarde, la première étape consiste donc à la décompresser. Pour cela, saisir la commande : « 7z.exe x [CHEMIN_COMPLET_DU_FICHIER] ».

Remarque : la commande décompresse le fichier dans le répertoire courant…

 

Renommer le dossier de la sauvegarde à restaurer en « WindowsImageBackup ». Cela permettra à l’outil de restauration de détecter votre sauvegarde…

 

Ensuite, lancer la console « Sauvegarde Windows Server » à l’aide de la commande « wbadmin.msc ».

 

Depuis le panneau « Actions », cliquez sur « Récupérer… ». L’assistant de récupération se lance…

 

Vous allez choisir « Un autre emplacement » et cela tout simplement que si vous choisissez « Ce serveur (XX) », l’assistant va rechercher depuis son catalogue et ne trouvera pas votre sauvegarde…

 

La seconde particularité concerne l’emplacement à spécifier. Même si votre sauvegarde est stockée localement, nous allons spécifier « Dossier partagé distant » (cela induit que les partages administratifs sont activés sur le serveur…).

 

On va exploiter le partage administratif du volume hébergeant votre sauvegarde (par exemple « d$ » pour volume « d: »). Si les partages administratifs ne sont pas activés alors il faudra partager le dossier contenant votre sauvegarde pour le rendre accessible depuis l’assistant de récupération.

Nous allons donc spécifier le répertoire « d:\Backups » mais en spécifiant le partage administratif « \\localhost\d$\Backups ».

 

Si l’assistant de Récupération détecte bien la sauvegarde, il vous la proposera depuis l’étape « Sélectionner une date de sauvegarde ».

 

Sélectionnez le type de restauration que vous voulez réaliser. En l’occurrence, nous voulons restaurer l’état système donc sélectionnez « Etat du système ».

 

Nous restons l’état du système à son emplacement d’origine en choisissant « Emplacement d’origine ».

 

L’assistant nous avertit que la sauvegarde est stockée sur partage et des risques que cela entraine. Comme nous utilisons en fait le stockage local, nous pouvons donc ne pas en tenir compte.

 

On confirme la restauration et on passe le deuxième message d’avertissement concernant le caractère irréversible de l’opération ! La restauration se lance…

{gallery}81_RESTORESSYSTEM/01{/gallery}

 

 

 

 

 

 

 

Après la restauration et le redémarrage de la machine, vous devez obtenir un message comme ci-dessous.

DCDIAG: avertissement sur attribut userAccountControl

J’ai eu le problème suivant chez un de mes clients.

Lorsque je validais l’installation d’un contrôleur de domaine à l’aide de DCDIAG, j’obtenais le message d’avertissement :

« L’attribut userAccountControl de [DC] est 0x82020

Paramètre par défaut pour un contrôleur de domaine : 0x82000 »

 

Après quelques recherches, je suis tombé sur l’article de Clint Boessen (http://clintboessen.blogspot.fr/2013/04/warning-attribute-useraccountcontrol-of.html) qui m’a donné l’explication du problème et la solution.

L’objet ordinateur Active Directory de mon contrôleur de domaine a été créé préalablement et manuellement. Du coup la valeur de l’attribut « userAccountControl » n’était pas la bonne.

Pour remédier au problème, il suffit donc de réinitialiser la valeur de l’attribut à « 532480 ».

 

Pour cela, ouvrez la console « Utilisateurs et ordinateurs Active Directory ». Activez les fonctionnalités avancées depuis le menu « Affichage » de la barre d’outils.

 

Accédez aux propriétés de l’objet ordinateur du contrôleur de domaine concerné. Modifier la valeur de l’attribut « userAccountControl » depuis l’onglet « Editeur d’attributs ».

Jonction au domaine: Cette demande n’est pas prise en charge

Vous obtenez le message d’erreur « L’erreur suivante s’est produite lors de la tentative de jonction au domaine « XX » : Cette demande n’est pas prise en charge » lors de la tentative d’intégration d’une machine sur un domaine Active Directory.

 

Le problème est lié à la présence de la clé de registre « HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\NTDS\Parameters\DSA Database file ». En effet, lors de l’intégration d’une machine à un domaine, le processus vérifie la présence de cette clé pour s’assurer que la machine n’est pas un contrôleur de domaine. Le problème est que la machine a été rétrogradée mais que la clé de registre n’a pas été correctement supprimée.

La consultation du fichier de journalisation « %systemroot%\debug\netsetup.log » permet également de confirmer le problème.

Extrait du fichier netsetup.log : NetpIsTargetImageADC: Determined this is a DC image as RegQueryValueExW loaded Services\NTDS\Parameters\DSA Database file: 0x0

 

Pour information, cette vérification est apparue avec la fonctionnalité AD « jonction au domaine hors connexion » (http://technet.microsoft.com/fr-fr/library/offline-domain-join-djoin-step-by-step(v=ws.10).aspx).

En supprimant la clé, ne problème devrait donc disparaitre.

Source : http://blogs.technet.com/b/askds/archive/2012/02/11/friday-mail-sack-get-off-my-lawn-edition.aspx#dcjoin