| Objet | un exemple de script (de base) permettant de faire automatiquement une copie de sauvegarde d'un dossier stratégique et un état du système avec mise en place d'un fichier log, envoie d'un mail de compte rendu et enregistrement simultané des événements dans le journal d'événements et dans un syslog. |
| Création | le 29/09/2006. |
| Modifié | le 22/11/2009. |
| A consulter |
L'objet de ce script est de présenter plusieurs outils et techniques utilisables dans de nombreux contextes. Il ne fait pas appel à des outils coûteux.
J'ai un parc de serveurs sur lequel le serveur SERCOM (\\SERCOM) héberge le dossier de la compta (d:\compta). Ce serveur avec les données de la compta doit être sauvegardé tout les jours pour éviter de perdre plus d'une journée de travail de la comptable et repartir le plus vite possible en cas d'incident.
Toutes les nuits à 00:01, je vais donc copier le dossier des données de la compta sur un autre serveur SERDVP (\\SERDVP) dédié au développement mais qui comporte un espace disque suffisant pour héberger un dupliqua des données comptables.
Une fois cette copie effectuée, je ferais un sauvegarde sur fichier de l'état du système et une sauvegarde sur bande du dossier compta.
Chacune des étapes sera journalisée dans le journal d'événements du serveur de la Compta, les actions de copie seront aussi journalisées sur le serveur du développement et le le serveur syslog (syslog.chezmoi.local) de la société sera aussi "informé" de toutes les actions.
En fin d'action, un mail sera envoyé à l'administrateur système pour le notifier de l'achèvement des opérations.
A 07:00, un contrôle sera fait de l'achèvement des scripts. En cas de problème, il y' aura journalisation des événements, émission d'un message Syslog et émission d'un mail d'alerte à un groupe d'administrateurs. (A faire)
Un libellé et un petit commentaire ne font jamais de mal.
@title Titre de la fenetre d'execution
Rem +-----------------------------------------------------------+
Rem + Mise a Jours du dossier Compta et sauvegarde systeme +
rem + FD-Service - Montpellier +
rem + Francois Dunoyer +
rem +-----------------------------------------------------------+
rem + Date : 14/03/2003 +
rem + maj : 19/09/2006 +
rem +-----------------------------------------------------------+
Mise en place du reporting.
Initialisation des variables. L'utilisation de ces variables permet d'adapter facilement le script à toutes sortes de situations. Pour des raisons d'efficacité des copies, il vaut mieux que le script s'exécute directement sur un des serveurs mais ce n'est pas obligatoire pour la partie copie des fichiers.
Rem Machine source et Machine de destination
Set Source=\\SVRCOM
Set Dest=\\SVRDVP
Il y'a création de 2 files "Log". Un fichier "brief" qui est envoyé par mail à l'administrateur et un fichier détaillé "Full" à consulter en cas de problèmes. Ce fichier peut être daté pour garder un historique. Attention à purger l'historique.
Rem Repertoire de Log (D:\repertoire).
:: valeurs par defaut si non configurees
if "%SysLog%"=="" Set Syslog=syslog.chezmoi.local
if "%LogDir%"=="" Set LogDir=c:\Logs
if "%SMTPS%"=="" Set SMTPS=smtp.chezmoi.local
Pour Windows 2003 et XP, les lignes suivantes créent une chaine AAAAMMJJ. Il y'a une "pirouette" pour gérer les dates sur Windows 2000 qui sont de la forme "Vendredi 20/02/2009" [Voir aussi Scription 02]
Rem Calcul de la chaine DATE AAAAMMJJ
set WD=%DATE:/=%
if "%WD:~4,1%"=="2" (
set D=%WD:~4,4%%WD:~2,2%%WD:~0,2%
) ELSE set D=%WD:~9,4%%WD:~7,2%%WD:~5,2%
Set LogFileBref=BCK-log.log
Set LogFileFull=BCK-Log-%D%.log
Rem Dossier a sauvegarder
Set COMPTAREFDIR=d$\compta
Rem Dossier de stockage des sauvegardes
Set DestDir=d$\Sauvegardes\compta
Destinataires principaux et secondaires des messages d'information. Il vaut mieux préférer l'émission vers un alias ou un groupe de diffusion qui permet de changer les destinataires sans remettre en cause le script.
:: Destinataire(s)
set destinataire=adm-svr@chezmoi.local
Mise en place des logs (en double pour le log bref et le log détaillé). Les fichiers sont crées.
Set message=Mise en place du backup Comptabilite depuis %Source% vers %Dest%
now %Message% >%LogDir%\%LogFileBref%
now %Message% >%LogDir%\%LogFileFull%
Si vous voulez vous passer de l'utilitaire now qui demande a être déployé sur chacun des serveurs, vous pouvez reécrire les lignes précédentes comme suis (la variable %D% a été calculée plus haut) :
Set message=Mise en place du backup Comptabilite depuis %Source% vers %Dest%
echo %D%-%Time% %Message% >%LogDir%\%LogFileBref%
echo %D%-%Time% %Message% >%LogDir%\%LogFileFull%
Mise à jours du journal des événements local et distant. L'utilisation des noms de machine permet éventuellement d'utiliser une 3eme machine pour effectuer les taches.
Set Message="Clonage Compta de %ComputerName% vers %Dest% - Debut "
logevent -m %Source% -s I -r "Clonage" -e 1 %Message%
logevent -m %Dest% -s I -r "Clonage" -e 1 %Message%
Copie différentielle de tous les fichier *.cpt depuis le partage \\SVRCOM\d$\Compta vers le partage \\SVRDVP\d$\sauvegardes\compta.
Pas d'affichage des barres de progression.
Purge des fichiers excédentaires à l'arrivée,
exploration des sous arborescences
et log dans le fichier log détaillé c:\log\BCK-Log-Full.log
robocopy %Source%\%COMPTAREFDIR% %RootBck%\%DestDir% *.cpt /s /r:3 /w:5 /NP /Purge /Log+:%LogDir%\%LogFileFull%
logevent -m %Source% -s I -r "Clonage" -e 999 "Clonage Compta de %ComputerName% vers %Dest% - Fin"
Mise à jours des log : fin de la copie
Set message=Fin du backup Comptabilite depuis %Source% vers %Dest%
now %Message% >>%LogDir%\%LogFileBref%
now %Message% >>%LogDir%\%LogFileFull%
Mise à jours du journal des événements local et distant.
Set Message="Clonage Compta de %ComputerName% vers %Dest% - Fin"
logevent -m %Source% -s I -r "Clonage" -e 999 %Message%
logevent -m %Dest% -s I -r "Clonage" -e 999 %Message%
Sauvegarde de l'état du système de la machine où s'exécute le script
Set Message="Etat du systeme de %ComputerName%"
now %Message% >>%LogDir%\%LogFileBref%
now %Message% >>%LogDir%\%LogFileFull%
Set BackupName=%Cible%\d$\sauvegardes\ES\%ComputerName%-ES-%D%.bkf
ntbackup.exe backup systemstate /n "Etat du systeme pour %ComputerName% au %DATE%" /d "ES-%ComputerName%-%D%" /F "%BackupName%" /v:no /r:no /rs:no /hc:off /m normal /j "ES-%ComputerName%-%D%" /l:f /snap:on
Ajout des Informations de localisation du fichier Log détaillé.
:: Ajouts de Commentaires sur le fichier detaille
Echo Le compte rendu detaille de l'operation est disponible >>%LogDir%\%LogFileBref%
Echo dans le dossier \\%ComputerName%\Logs$ >>%LogDir%\%LogFileBref%
Echo Voir le fichier file:\\%ComputerName%\Logs$\%LogFileFull% >>%LogDir%\%LogFileBref%
Envoi d'un message en fin de travail
Rem Notifications
blat %LogDir%\%LogFileBref% -t f%Destinataire% -s "%ComputerName% : Fin du backup"
rem Envoie du message par mail
Set Message=%ComputerName% : Backup des fichiers Compta
blat %LogDir%\%LogFileBref% -to %Destinataire% -subject "%Message%" -noh -f %computerName%@chezmoi.local -server %SMTPs%
Comme un script classique (mais attention au compte utilisé. Le compte système ne peut pas accéder aux partages réseaux même sur le serveur lui même).
Ne pas oublier de déployer les outils nécessaires sur les serveurs concernés et de mettre en place un path adapté pour que l'outil puisse etre appelé depuis n'importe quel profil (y compris SYSTEM).
Comme indiqué dans le script Now.exe peut être remplacé par : echo %date%-%Time% ou en utilisation la variable %D% définie an début de script (merci à Michel [MCI] pour ses suggestions).
a faire plus tard !!!
O01 : Accès rapide à l'annuaire interne (Active Directory) via le carnet d'adresse
O02 : Utilisation de la messagerie.
O03 : Envoyer de gros documents
O04 : Utilisation des Dates dans les noms de fichiers (ou pour le tri)
O05 : Archiver un dossier Outlook manuellement
O06 : Déplacer le dossier Documents and Settings
O07 : TSE : Installation d'une application en mode terminal Server
O08 : Création de nouveaux Utilisateurs [10/2007]
O09 : Un exemple de Script de backup
O10 : Activer la recherche automatique du Proxy
O11 : Périmètre d'utilisation de VNC, recommandation et optimisation
O12 : Visualiser l'Active Directory dans l'Explorateur
O13 : Que se passe t'il dans mon script, présentation des mécanismes de trace
[10/2007]
O14 : Mise en place d'un serveur SYSLOG [11/2007]
O15 : Configuration du réseau par Script
(En travaux)
O16 : Relance d'un pool d'Applications (IIS
6+) [08/2008]
O17 : AD - défragmentation Offline de la base de données [09/2008]
Q99 : Fini pour le moment ?
Copyright ©1997-2009,
François Dunoyer, Dernière modification le
Recommander cette page