aide script archivage mensuel
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
aide script archivage mensuel
Bonjour a tous,
Je me permet de faire a nouveau appel au forum pour une aide au developpement d'un script concernant de l'archivage.
Je fait des sauvegardes de nos serveurs sur un nas synology a l'aide de l'agent veeam,
je transfert toutes les semaines mes sauvegardes (1 complète et 29 incrémentielles par serveurs),
vers un nas externalisé avec active backup for server de synology.
En revanche, j'ai besoin de récupérer Une fois par mois, une copie de la sauvegarde complète de chacun des serveurs
vers le nas externalisé dans un dossier Janvier, fevrier etc... et remplacer la sauvegarde existante si il y en a une
(car elle daterait de l'an passé).
Le problème c'est qu'active backup ne permet pas une planification mensuel, en revanche le synology me permet l’exécution
d'un script sous forme de tache planifiée.
Je pense donc qu'il est possible de solutionner mon problème via un script exécuté en automatique chaque milieu de mois,
le tout étant de respecter ces quelques critères :
- récupérer le fichier .vbk de chaque serveur (stocké dans des dossiers différents)
- vérifier le mois en cours
- copier le fichier dans le dossier du serveur, sous dossier du mois en cours et remplacer le fichier existant.
Merci d'avance pour vos retour.
Ptiseb
Je me permet de faire a nouveau appel au forum pour une aide au developpement d'un script concernant de l'archivage.
Je fait des sauvegardes de nos serveurs sur un nas synology a l'aide de l'agent veeam,
je transfert toutes les semaines mes sauvegardes (1 complète et 29 incrémentielles par serveurs),
vers un nas externalisé avec active backup for server de synology.
En revanche, j'ai besoin de récupérer Une fois par mois, une copie de la sauvegarde complète de chacun des serveurs
vers le nas externalisé dans un dossier Janvier, fevrier etc... et remplacer la sauvegarde existante si il y en a une
(car elle daterait de l'an passé).
Le problème c'est qu'active backup ne permet pas une planification mensuel, en revanche le synology me permet l’exécution
d'un script sous forme de tache planifiée.
Je pense donc qu'il est possible de solutionner mon problème via un script exécuté en automatique chaque milieu de mois,
le tout étant de respecter ces quelques critères :
- récupérer le fichier .vbk de chaque serveur (stocké dans des dossiers différents)
- vérifier le mois en cours
- copier le fichier dans le dossier du serveur, sous dossier du mois en cours et remplacer le fichier existant.
Merci d'avance pour vos retour.
Ptiseb
-
- Status : Hors ligne
Re: aide script archivage mensuel
Bonjour,
moi je n'utiliserai pas autoit pour ce genre de chose. si je comprends bien, on ne fait que de la copie de fichier a un moment donné, donc un batch exécuté dans une tache planifiée suffit.
12 batchs (1 par mois a cause du changement de chemin : ../janvier/fichier.vbk) qui copie un fichier d'un dossier X vers un dossier Y. Et ensuite une tache planifiée par batch.
moi je n'utiliserai pas autoit pour ce genre de chose. si je comprends bien, on ne fait que de la copie de fichier a un moment donné, donc un batch exécuté dans une tache planifiée suffit.
12 batchs (1 par mois a cause du changement de chemin : ../janvier/fichier.vbk) qui copie un fichier d'un dossier X vers un dossier Y. Et ensuite une tache planifiée par batch.
- Tlem
- Site Admin
- Messages : 11773
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: aide script archivage mensuel
Je suis d'accord pour le batch, par contre 12 Batchs, c'est un peu rude.
On peu tout faire dans un seul ...
Edit :
Voici un squelette de batch qui ferait l'affaire (Il faut évidement supprimer le Echo devant Xcopy qui n'est là que pour montrer ce que ça donne).
On peu tout faire dans un seul ...
Code : Tout sélectionner
@Echo Off
Cls
If %date:~3,2%==01 Set Mois=Janvier
If %date:~3,2%==02 Set Mois=Fevrier
If %date:~3,2%==03 Set Mois=Mars
If %date:~3,2%==04 Set Mois=Avril
If %date:~3,2%==05 Set Mois=Mai
If %date:~3,2%==06 Set Mois=Juin
If %date:~3,2%==07 Set Mois=Juillet
If %date:~3,2%==08 Set Mois=Aout
If %date:~3,2%==09 Set Mois=Septembre
If %date:~3,2%==10 Set Mois=Octobre
If %date:~3,2%==11 Set Mois=Novembre
If %date:~3,2%==12 Set Mois=Decembre
Echo Date Numerique = %date:~3,2%
Echo Nous sommes au mois de %Mois%
Echo.
Pause
Voici un squelette de batch qui ferait l'affaire (Il faut évidement supprimer le Echo devant Xcopy qui n'est là que pour montrer ce que ça donne).
Code : Tout sélectionner
@Echo Off
Cls
Set Dst=\\Serveur\Backup\
If %date:~3,2%==01 Set Mois=Janvier
If %date:~3,2%==02 Set Mois=Fevrier
If %date:~3,2%==03 Set Mois=Mars
If %date:~3,2%==04 Set Mois=Avril
If %date:~3,2%==05 Set Mois=Mai
If %date:~3,2%==06 Set Mois=Juin
If %date:~3,2%==07 Set Mois=Juillet
If %date:~3,2%==08 Set Mois=Aout
If %date:~3,2%==09 Set Mois=Septembre
If %date:~3,2%==10 Set Mois=Octobre
If %date:~3,2%==11 Set Mois=Novembre
If %date:~3,2%==12 Set Mois=Decembre
FOR /D %%I IN ("\\PC1\dossier\PC 1.vbk","\\PC2\dossier\PC 2.vbk","\\PC3\dossier\PC 3.vbk","\\PC4\dossier\PC 4.vbk","\\PC5\dossier\PC 5.vbk") DO (
Echo Xcopy %%I "%Dst%%Mois%\" /Y
)
Pause
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
-
- Status : Hors ligne
Re: aide script archivage mensuel
Effectivement quand on est un PRO du batch on y arrive avec 1 seul script
j'ai souvent tendance à oublier que les batch ne se limitent pas traiter des simples commandes à la suite et qu'on peut créer des variables et des conditions.
j'ai souvent tendance à oublier que les batch ne se limitent pas traiter des simples commandes à la suite et qu'on peut créer des variables et des conditions.
Re: aide script archivage mensuel
Merci pour vos réponses, c'est un peu ce que j'ai fini pas faire mais la tache planifié lance un exe autoit.
Je le poste pour ceux que ça pourrait intéressé, j'ai ajouté une partie écriture dans un fichier log mais le script n’écrit pas "fin d’exécution" a la fin je ne comprend pas trop pourquoi a vrai dire, d'un autre coté quand je regarde mes taches planifiée la tache tourne depuis 3 jours sans jamais s’arrêter visiblement.. y a donc un truc qui va pas ("perspicace" certains diraient)...
voici mon code :
idéalement j'aimerais rajouter un envoi du log par mail (cette fonction est bloqué dans les taches planifiée sur serveur 2012 R2)
J'ai pas encore trop cherché de ce coté
Je le poste pour ceux que ça pourrait intéressé, j'ai ajouté une partie écriture dans un fichier log mais le script n’écrit pas "fin d’exécution" a la fin je ne comprend pas trop pourquoi a vrai dire, d'un autre coté quand je regarde mes taches planifiée la tache tourne depuis 3 jours sans jamais s’arrêter visiblement.. y a donc un truc qui va pas ("perspicace" certains diraient)...
voici mon code :
Code : Tout sélectionner
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Outfile=archivage_sauvegarde_serveurs_mensuelle.exe
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <Array.au3>
#include <File.au3>
;-------------------------ecriture de la date dans le fichier log
$TIME = @MDAY &"/"& @MON &"/"& @YEAR &" - "& @HOUR &"H"& @MIN &" "& @SEC &" sec"
_FileWriteLog("\\serveur2\d\installations\LOG\archivage_sauvegarde_mensuelle_complete.log","execution de la tache planifiée le : " & $TIME & @CRLF)
;----------définition du chemin a scanner et de sa destination
$sFilePath1="\\NAS-SIEGE\SAUVEGARDES_SERVEURS\serveur1\Backup Job serveur1"
$sDestPath1="\\NAS-EXT-1\SAUVEGARDES_SERVEURS\complete_mensuelle\serveur1"
$sFilePath2="\\NAS-SIEGE\SAUVEGARDES_SERVEURS\serveur2\Backup Job serveur2"
$sDestPath2="\\NAS-EXT-1\SAUVEGARDES_SERVEURS\complete_mensuelle\serveur2"
$sFilePath3="\\NAS-SIEGE\SAUVEGARDES_SERVEURS\serveur3\Backup Job serveur3"
$sDestPath3="\\NAS-EXT-1\SAUVEGARDES_SERVEURS\complete_mensuelle\serveur3"
$sFilePath4="\\NAS-SIEGE\SAUVEGARDES_SERVEURS\serveur4\Backup Job serveur4"
$sDestPath4="\\NAS-EXT-1\SAUVEGARDES_SERVEURS\complete_mensuelle\serveur4"
$sFilePath5="\\NAS-SIEGE\SAUVEGARDES_SERVEURS\serveur5\Backup Job serveur5"
$sDestPath5="\\NAS-EXT-1\SAUVEGARDES_SERVEURS\complete_mensuelle\serveur5"
$sFilePath6="\\NAS-SIEGE\SAUVEGARDES_SERVEURS\serveur6\Backup Job serveur6"
$sDestPath6="\\NAS-EXT-1\SAUVEGARDES_SERVEURS\complete_mensuelle\serveur6"
$sFilePath7="\\NAS-SIEGE\SAUVEGARDES_SERVEURS\serveur7\Backup Job serveur7"
$sDestPath7="\\NAS-EXT-1\SAUVEGARDES_SERVEURS\complete_mensuelle\serveur7"
$sFilePath8="\\NAS-SIEGE\SAUVEGARDES_SERVEURS\serveur8\Backup Job serveur8"
$sDestPath8="\\NAS-EXT-1\SAUVEGARDES_SERVEURS\complete_mensuelle\serveur8"
;----------création des tableaux contenants les fichiers présents
$aArray1 = _FileListToArray($sFilePath1, "*.vbk", $FLTAR_FILES,True)
$aArray2 = _FileListToArray($sFilePath2, "*.vbk", $FLTAR_FILES,True)
$aArray3 = _FileListToArray($sFilePath3, "*.vbk", $FLTAR_FILES,True)
$aArray4 = _FileListToArray($sFilePath4, "*.vbk", $FLTAR_FILES,True)
$aArray5 = _FileListToArray($sFilePath5, "*.vbk", $FLTAR_FILES,True)
$aArray6 = _FileListToArray($sFilePath6, "*.vbk", $FLTAR_FILES,True)
$aArray7 = _FileListToArray($sFilePath7, "*.vbk", $FLTAR_FILES,True)
$aArray8 = _FileListToArray($sFilePath8, "*.vbk", $FLTAR_FILES,True)
func serveur1()
;--------boucle pour serveur1--------------------------------------------------------------------------------------------------
For $a = 1 To $aArray1[0]
;-------------------on recupère la date de modification des fichiers
$ArrayTime1 = FileGetTime ($aArray1[$a],$FT_MODIFIED )
;------------si aucun sous dossier ne correspond a la l'année de modification du fichier on le crée puis on déplace le fichier
If Not FileExists($sDestPath1 & "\" & $ArrayTime1[1]) Then DirCreate ( $sDestPath1 & "\" & $ArrayTime1[1])
FileCopy($aArray1[$a],$sDestPath1 & "\" & $ArrayTime1[1],1)
_FileWriteLog("\\serveur2\d\installations\LOG\archivage_sauvegarde_mensuelle_complete.log", $sDestPath1 & "\" & $ArrayTime1[1] & @CRLF)
Next
;--------------------fin boucle serveur1---------------------------------------------------------------------------------
EndFunc
func serveur2()
;--------boucle pour serveur2--------------------------------------------------------------------------------------------------
For $b = 1 To $aArray2[0]
;-------------------on recupère la date de modification des fichiers
$ArrayTime2 = FileGetTime ($aArray2[$b],$FT_MODIFIED )
;------------si aucun sous dossier ne correspond a la l'année de modification du fichier on le crée puis on déplace le fichier
If Not FileExists($sDestPath2 & "\" & $ArrayTime2[1]) Then DirCreate ( $sDestPath2 & "\" & $ArrayTime2[1])
FileCopy($aArray2[$b],$sDestPath2 & "\" & $ArrayTime2[1],1)
_FileWriteLog("\\serveur2\d\installations\LOG\archivage_sauvegarde_mensuelle_complete.log", $sDestPath2 & "\" & $ArrayTime2[1] & @CRLF)
Next
;--------------------fin boucle serveur2---------------------------------------------------------------------------------
EndFunc
func serveur3()
;--------boucle pour serveur3--------------------------------------------------------------------------------------------------
For $c = 1 To $aArray3[0]
;-------------------on recupère la date de modification des fichiers
$ArrayTime3 = FileGetTime ($aArray3[$c],$FT_MODIFIED )
;------------si aucun sous dossier ne correspond a la l'année de modification du fichier on le crée puis on déplace le fichier
If Not FileExists($sDestPath3 & "\" & $ArrayTime3[1]) Then DirCreate ( $sDestPath3 & "\" & $ArrayTime3[1])
FileCopy($aArray3[$c],$sDestPath3 & "\" & $ArrayTime3[1],1)
_FileWriteLog("\\serveur2\d\installations\LOG\archivage_sauvegarde_mensuelle_complete.log", $sDestPath3 & "\" & $ArrayTime3[1] & @CRLF)
Next
;--------------------fin boucle serveur3---------------------------------------------------------------------------------
EndFunc
func serveur4()
;--------boucle pour serveur4--------------------------------------------------------------------------------------------------
For $d = 1 To $aArray4[0]
;-------------------on recupère la date de modification des fichiers
$ArrayTime4 = FileGetTime ($aArray4[$d],$FT_MODIFIED )
;------------si aucun sous dossier ne correspond a la l'année de modification du fichier on le crée puis on déplace le fichier
If Not FileExists($sDestPath4 & "\" & $ArrayTime4[1]) Then DirCreate ( $sDestPath4 & "\" & $ArrayTime4[1])
FileCopy($aArray4[$d],$sDestPath4 & "\" & $ArrayTime4[1],1)
_FileWriteLog("\\serveur2\d\installations\LOG\archivage_sauvegarde_mensuelle_complete.log", $sDestPath4 & "\" & $ArrayTime4[1] & @CRLF)
Next
;--------------------fin boucle serveur4---------------------------------------------------------------------------------
EndFunc
func serveur5()
;--------boucle pour serveur5--------------------------------------------------------------------------------------------------
For $e = 1 To $aArray5[0]
;-------------------on recupère la date de modification des fichiers
$ArrayTime5 = FileGetTime ($aArray5[$e],$FT_MODIFIED )
;------------si aucun sous dossier ne correspond a la l'année de modification du fichier on le crée puis on déplace le fichier
If Not FileExists($sDestPath5 & "\" & $ArrayTime5[1]) Then DirCreate ( $sDestPath5 & "\" & $ArrayTime5[1])
FileCopy($aArray5[$e],$sDestPath5 & "\" & $ArrayTime5[1],1)
_FileWriteLog("\\serveur2\d\installations\LOG\archivage_sauvegarde_mensuelle_complete.log", $sDestPath5 & "\" & $ArrayTime5[1] & @CRLF)
Next
;--------------------fin boucle serveur5---------------------------------------------------------------------------------
EndFunc
func serveur6()
;--------boucle pour serveur6--------------------------------------------------------------------------------------------------
For $f = 1 To $aArray6[0]
;-------------------on recupère la date de modification des fichiers
$ArrayTime6 = FileGetTime ($aArray6[$f],$FT_MODIFIED )
;------------si aucun sous dossier ne correspond a la l'année de modification du fichier on le crée puis on déplace le fichier
If Not FileExists($sDestPath6 & "\" & $ArrayTime6[1]) Then DirCreate ( $sDestPath6 & "\" & $ArrayTime6[1])
FileCopy($aArray6[$f],$sDestPath6 & "\" & $ArrayTime6[1],1)
_FileWriteLog("\\serveur2\d\installations\LOG\archivage_sauvegarde_mensuelle_complete.log", $sDestPath6 & "\" & $ArrayTime6[1] & @CRLF)
Next
;--------------------fin boucle serveur6---------------------------------------------------------------------------------
EndFunc
func serveur7()
;--------boucle pour serveur7--------------------------------------------------------------------------------------------------
For $g = 1 To $aArray7[0]
;-------------------on recupère la date de modification des fichiers
$ArrayTime7 = FileGetTime ($aArray7[$g],$FT_MODIFIED )
;------------si aucun sous dossier ne correspond a la l'année de modification du fichier on le crée puis on déplace le fichier
If Not FileExists($sDestPath7 & "\" & $ArrayTime7[1]) Then DirCreate ( $sDestPath7 & "\" & $ArrayTime7[1])
FileCopy($aArray7[$g],$sDestPath7 & "\" & $ArrayTime7[1],1)
_FileWriteLog("\\serveur2\d\installations\LOG\archivage_sauvegarde_mensuelle_complete.log", $sDestPath7 & "\" & $ArrayTime7[1] & @CRLF)
Next
;--------------------fin boucle serveur7---------------------------------------------------------------------------------
EndFunc
Func serveur8()
;--------boucle pour serveur8--------------------------------------------------------------------------------------------------
For $h = 1 To $aArray8[0]
;-------------------on recupère la date de modification des fichiers
$ArrayTime8 = FileGetTime ($aArray8[$h],$FT_MODIFIED )
;------------si aucun sous dossier ne correspond a la l'année de modification du fichier on le crée puis on déplace le fichier
If Not FileExists($sDestPath8 & "\" & $ArrayTime8[1]) Then DirCreate ( $sDestPath8 & "\" & $ArrayTime8[1])
FileCopy($aArray8[$h],$sDestPath8 & "\" & $ArrayTime8[1],1)
_FileWriteLog("\\serveur2\d\installations\LOG\archivage_sauvegarde_mensuelle_complete.log", $sDestPath8 & "\" & $ArrayTime8[1] & @CRLF)
Next
;--------------------fin boucle serveur8---------------------------------------------------------------------------------
EndFunc
;---------------appel des fonctions--------------------
serveur1()
serveur2()
serveur3()
serveur4()
serveur5()
serveur6()
serveur7()
serveur8()
_FileWriteLog("\\serveur2\d\installations\LOG\archivage_sauvegarde_mensuelle_complete.log", "fin d'execution" & @CRLF)
J'ai pas encore trop cherché de ce coté
-
- Status : Hors ligne
Re: aide script archivage mensuel
Pour l'envoi d'un mail, si tu utilises la version "batch" proposée par tlem, tu peux utiliser en ligne de commande sendmail.exe à la fin du script:
http://caspian.dotconf.net/menu/Software/SendEmail/
il y a 2 versions, avec et sans support TLS. Donc autant prendre la version "avec", pour être tranquille.
http://caspian.dotconf.net/menu/Software/SendEmail/
il y a 2 versions, avec et sans support TLS. Donc autant prendre la version "avec", pour être tranquille.
- Tlem
- Site Admin
- Messages : 11773
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: aide script archivage mensuel
Puisqu'un script AutoIt est requis ...
Voici une version tel que je la ferait pour moi (Il y a même l'envoi du mail que l'on peux activer ou pas ^^).
J'utilise 2 fichiers afin de ne pas avoir à recompiler le script en cas de changement sur la config des serveurs ou du mail ...
J'ai pas pu tester la copie des fichiers, mais le reste fonctionne.
Il est très certainement possible de l'améliorer encore. Je ne doute pas que les lecteurs de ce sujet feront part de leur avis.
Le code pour l'envoi de mail à été repris tel quel d'un sujet du forum, car je n'ai pas réussit à faire fonctionner _INetSmtpMail() !
archivage_sauvegarde_serveurs_mensuelle.au3
SRVList.ini
Voici une version tel que je la ferait pour moi (Il y a même l'envoi du mail que l'on peux activer ou pas ^^).
J'utilise 2 fichiers afin de ne pas avoir à recompiler le script en cas de changement sur la config des serveurs ou du mail ...
J'ai pas pu tester la copie des fichiers, mais le reste fonctionne.
Il est très certainement possible de l'améliorer encore. Je ne doute pas que les lecteurs de ce sujet feront part de leur avis.
Le code pour l'envoi de mail à été repris tel quel d'un sujet du forum, car je n'ai pas réussit à faire fonctionner _INetSmtpMail() !
archivage_sauvegarde_serveurs_mensuelle.au3
Code : Tout sélectionner
#AutoIt3Wrapper_Outfile=archivage_sauvegarde_serveurs_mensuelle.exe
#include <File.au3>
#include <Inet.au3>
Global $sFilePath, $sDestPath
Global $sMonthFr = GetMonNameFr(@MON) ; Mois en litéral Français
Global $fSRVList = @ScriptDir & "\SRVList.ini" ; Chemin du fichier de config
Global $sLogFile = IniRead($fSRVList, "LOG_FILE", "LOGFILE", "") & "_" & @YEAR & @MON & ".log" ; Fichier LOG
Global $aSRVList = IniReadSectionNames($fSRVList) ; Tableau des sections
; Info pour mail
Global $SendMail = IniRead($fSRVList, "MAIL_CFG", "SendMail", 0)
Global $ToAddress = IniRead($fSRVList, "MAIL_CFG", "ToAddress", "")
Global $FromAddress = IniRead($fSRVList, "MAIL_CFG", "FromAddress", "")
Global $SmtpServer = IniRead($fSRVList, "MAIL_CFG", "SmtpServer", "")
Global $Username = IniRead($fSRVList, "MAIL_CFG", "Username", "")
Global $Password = IniRead($fSRVList, "MAIL_CFG", "Password", "")
Global $AttachFiles = IniRead($fSRVList, "MAIL_CFG", "AttachFiles", $sLogFile)
Global $FromName = IniRead($fSRVList, "MAIL_CFG", "FromName", "")
Global $Subject = IniRead($fSRVList, "MAIL_CFG", "Subject", "") & " - " & @MDAY & "-" & @MON & "-" & @YEAR
Global $Body = IniRead($fSRVList, "MAIL_CFG", "Body", "")
Global $CcAddress = IniRead($fSRVList, "MAIL_CFG", "CcAddress", "")
Global $BccAddress = IniRead($fSRVList, "MAIL_CFG", "BccAddress", "")
Global $Importance = IniRead($fSRVList, "MAIL_CFG", "Importance", "0")
Global $IPPort = IniRead($fSRVList, "MAIL_CFG", "IPPort", "25")
Global $ssl = IniRead($fSRVList, "MAIL_CFG", "ssl", "0")
_FileWriteLog($sLogFile, "Exécution de la tâche planifiée de sauvegarde complète.")
; Boucle de traitement du tableau des sections
For $i = 1 To UBound($aSRVList) - 1
If $aSRVList[$i] = "LOG_FILE" Then ContinueLoop ; Passe la section [LOG_FILE]
If $aSRVList[$i] = "MAIL_CFG" Then ContinueLoop ; Passe la section [MAIL_CFG]
$sFilePath = IniRead($fSRVList, $aSRVList[$i], "FilePath", "") ; Récup du chemin source
$sDestPath = IniRead($fSRVList, $aSRVList[$i], "DestPath", "") ; Récup du chemin destination
; On vérifie que la source existe
If Not FileExists($sFilePath) Then
_FileWriteLog($sLogFile, "*** Erreur la source de " & $aSRVList[$i] & " n'existe pas !")
ContinueLoop
EndIf
; Si le dossier de destination existe et contient des fichiers .vbk, on les supprime
If FileExists($sDestPath & "\$sMon\*.vbk") Then FileDelete($sDestPath & "\$sMon\*.vbk")
_FileWriteLog($sLogFile, "Début de la sauvegarde de " & $aSRVList[$i])
; On copie les nouveaux fichiers de sauvegarde en créant le dossier si nécessaire
If FileCopy($sFilePath & "\*.vbk", $sDestPath & "\" & $sMonthFr & "\", 9) Then
_FileWriteLog($sLogFile, "Fin de la sauvegarde de " & $aSRVList[$i])
Else
_FileWriteLog($sLogFile, "*** Erreur lors de la sauvegarde de " & $aSRVList[$i])
EndIf
_FileWriteLog($sLogFile, "------------------------------------------------------")
_FileWriteLog($sLogFile, "Fin de la sauvegarde de " & $aSRVList[$i])
Next
_FileWriteLog($sLogFile, "Fin de la tâche planifiée de sauvegarde complète." & @CRLF & _
"=======================================================================")
; Envoi du Mail si SendMail=1
If $SendMail = 1 Then
Global $oMyRet[2]
Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")
$rc = _INetSmtpMailCom($SmtpServer, $FromName, $FromAddress, $ToAddress, $Subject, $Body, $AttachFiles, $CcAddress, $BccAddress, $Importance, $Username, $Password, $IPPort, $ssl)
If @error Then Exit 1
EndIf
Exit 0
Func GetMonNameFr($szMN)
Switch $szMN
Case 01
$Mon = "Janvier"
Case 02
$Mon = "Fevrier"
Case 03
$Mon = "Mars"
Case 04
$Mon = "Avril"
Case 05
$Mon = "Mai"
Case 06
$Mon = "Juin"
Case 07
$Mon = "Juillet"
Case 08
$Mon = "Aout"
Case 09
$Mon = "Septembre"
Case 10
$Mon = "Octobre"
Case 11
$Mon = "Novembre"
Case 12
$Mon = "Decembre"
Case Else
$Mon = $szMN
EndSwitch
Return $Mon
EndFunc ;==>GetMonNameFr
Func _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject = "", $as_Body = "", $s_AttachFiles = "", $s_CcAddress = "", $s_BccAddress = "", $s_Importance = "Normal", $s_Username = "", $s_Password = "", $IPPort = 25, $ssl = 0)
; Source : forum us
Global $objEmail = ObjCreate("CDO.Message")
$objEmail.From = '"' & $s_FromName & '" <' & $s_FromAddress & '>'
$objEmail.To = $s_ToAddress
Global $i_Error = 0
Global $i_Error_desciption = ""
If $s_CcAddress <> "" Then $objEmail.Cc = $s_CcAddress
If $s_BccAddress <> "" Then $objEmail.Bcc = $s_BccAddress
$objEmail.Subject = $s_Subject
If StringInStr($as_Body, "<") And StringInStr($as_Body, ">") Then
$objEmail.HTMLBody = $as_Body
Else
$objEmail.Textbody = $as_Body & @CRLF
EndIf
If $s_AttachFiles <> "" Then
Global $S_Files2Attach = StringSplit($s_AttachFiles, ";")
For $x = 1 To $S_Files2Attach[0]
$S_Files2Attach[$x] = __PathFull($S_Files2Attach[$x])
ConsoleWrite('@@ Debug(62) : $S_Files2Attach = ' & $S_Files2Attach & @LF & '>Error code: ' & @error & @LF) ;### Debug Console
If FileExists($S_Files2Attach[$x]) Then
$objEmail.AddAttachment($S_Files2Attach[$x])
Else
ConsoleWrite('!> File not found to attach: ' & $S_Files2Attach[$x] & @LF)
SetError(1)
Return 0
EndIf
Next
EndIf
$objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
$objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = $s_SmtpServer
If Number($IPPort) = 0 Then $IPPort = 25
$objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = $IPPort
;Authenticated SMTP
If $s_Username <> "" Then
$objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
$objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = $s_Username
$objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = $s_Password
EndIf
If $ssl Then
$objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
EndIf
;Update settings
$objEmail.Configuration.Fields.Update
; Set Email Importance
Switch $s_Importance
Case "High"
$objEmail.Fields.Item("urn:schemas:mailheader:Importance") = "High"
Case "Normal"
$objEmail.Fields.Item("urn:schemas:mailheader:Importance") = "Normal"
Case "Low"
$objEmail.Fields.Item("urn:schemas:mailheader:Importance") = "Low"
EndSwitch
$objEmail.Fields.Update
; Sent the Message
$objEmail.Send
If @error Then
SetError(2)
Return $oMyRet[1]
EndIf
$objEmail = ""
EndFunc ;==>_INetSmtpMailCom
Func MyErrFunc()
; Source : forum us
$HexNumber = Hex($oMyError.number, 8)
$oMyRet[0] = $HexNumber
$oMyRet[1] = StringStripWS($oMyError.description, 3)
ConsoleWrite( "! " & @ScriptFullPath & " (" & $HexNumber & ") :==> ### COM Error !" & @CRLF & "! Number: " & $HexNumber & " ScriptLine: " & $oMyError.scriptline & " Description:" & $oMyRet[1] & @LF)
Return SetError(1); something to check for when this function returns
EndFunc ;==>MyErrFunc
Func __PathFull($sRelativePath, $sBasePath = @WorkingDir)
; Source : forum us
If Not $sRelativePath Or $sRelativePath = "." Then Return $sBasePath
; Normalize slash direction.
Global $sFullPath = StringReplace($sRelativePath, "/", "\")
Global Const $sFullPathConst = $sFullPath
Global $sPath
Global $bRootOnly = StringLeft($sFullPath, 1) = "\" And StringMid($sFullPath, 2, 1) <> "\"
If $sBasePath = Default Then $sBasePath = @WorkingDir
For $i = 1 To 2
$sPath = StringLeft($sFullPath, 2)
If $sPath = "\\" Then
$sFullPath = StringTrimLeft($sFullPath, 2)
Global $nServerLen = StringInStr($sFullPath, "\") - 1
$sPath = "\\" & StringLeft($sFullPath, $nServerLen)
$sFullPath = StringTrimLeft($sFullPath, $nServerLen)
ExitLoop
ElseIf StringRight($sPath, 1) = ":" Then
$sFullPath = StringTrimLeft($sFullPath, 2)
ExitLoop
Else
$sFullPath = $sBasePath & "\" & $sFullPath
EndIf
Next
; If this happens, we've found a funky path and don't know what to do
; except for get out as fast as possible. We've also screwed up our
; variables so we definitely need to quit.
; If $i = 3 Then Return ""
; A path with a drive but no slash (e.g. C:Path\To\File) has the following
; behavior. If the relative drive is the same as the $BasePath drive then
; insert the base path. If the drives differ then just insert a leading
; slash to make the path valid.
If StringLeft($sFullPath, 1) <> "\" Then
If StringLeft($sFullPathConst, 2) = StringLeft($sBasePath, 2) Then
$sFullPath = $sBasePath & "\" & $sFullPath
Else
$sFullPath = "\" & $sFullPath
EndIf
EndIf
; Build an array of the path parts we want to use.
Global $aTemp = StringSplit($sFullPath, "\")
Global $aPathParts[$aTemp[0]], $j = 0
For $i = 2 To $aTemp[0]
If $aTemp[$i] = ".." Then
If $j Then $j -= 1
ElseIf Not ($aTemp[$i] = "" And $i <> $aTemp[0]) And $aTemp[$i] <> "." Then
$aPathParts[$j] = $aTemp[$i]
$j += 1
EndIf
Next
; Here we re-build the path from the parts above. We skip the
; loop if we are only returning the root.
$sFullPath = $sPath
If Not $bRootOnly Then
For $i = 0 To $j - 1
$sFullPath &= "\" & $aPathParts[$i]
Next
Else
$sFullPath &= $sFullPathConst
; If we detect more relative parts, remove them by calling ourself recursively.
If StringInStr($sFullPath, "..") Then $sFullPath = __PathFull($sFullPath)
EndIf
; Clean up the path.
Do
$sFullPath = StringReplace($sFullPath, ".\", "\")
Until @extended = 0
Return $sFullPath
EndFunc ;==>_PathFull
SRVList.ini
Code : Tout sélectionner
[LOG_FILE]
LOGFILE="archivage_sauvegarde_mensuelle_complete"
[MAIL_CFG]
SendMail=1
ToAddress="admin@domaine.fr"
FromAddress="2012Server@domaine.fr"
SmtpServer ="smtp.domaine.fr"
Username=
Password=
;AttachFiles=
FromName="Serveur 2012"
Subject="Sauvegarde complète"
Body="Sauvegarde complète des serveurs. Voir fichier LOG joint."
CcAddress=
BccAddress=
Importance=
IPPort=
ssl=
[Serveur_1]
FilePath="\\NAS-SIEGE\SAUVEGARDES_SERVEURS\serveur1\Backup Job serveur1"
DestPath="\\NAS-EXT-1\SAUVEGARDES_SERVEURS\complete_mensuelle\serveur1"
[Serveur_2]
FilePath="\\NAS-SIEGE\SAUVEGARDES_SERVEURS\serveur2\Backup Job serveur2"
DestPath="\\NAS-EXT-1\SAUVEGARDES_SERVEURS\complete_mensuelle\serveur2"
[Serveur_3]
FilePath="\\NAS-SIEGE\SAUVEGARDES_SERVEURS\serveur3\Backup Job serveur3"
DestPath="\\NAS-EXT-1\SAUVEGARDES_SERVEURS\complete_mensuelle\serveur3"
[Serveur_4]
FilePath="\\NAS-SIEGE\SAUVEGARDES_SERVEURS\serveur4\Backup Job serveur4"
DestPath="\\NAS-EXT-1\SAUVEGARDES_SERVEURS\complete_mensuelle\serveur4"
[Serveur_5]
FilePath="\\NAS-SIEGE\SAUVEGARDES_SERVEURS\serveur5\Backup Job serveur5"
DestPath="\\NAS-EXT-1\SAUVEGARDES_SERVEURS\complete_mensuelle\serveur5"
[Serveur_6]
FilePath="\\NAS-SIEGE\SAUVEGARDES_SERVEURS\serveur6\Backup Job serveur6"
DestPath="\\NAS-EXT-1\SAUVEGARDES_SERVEURS\complete_mensuelle\serveur6"
[Serveur_7]
FilePath="\\NAS-SIEGE\SAUVEGARDES_SERVEURS\serveur7\Backup Job serveur7"
DestPath="\\NAS-EXT-1\SAUVEGARDES_SERVEURS\complete_mensuelle\serveur7"
[Serveur_8]
FilePath="\\NAS-SIEGE\SAUVEGARDES_SERVEURS\serveur8\Backup Job serveur8"
DestPath="\\NAS-EXT-1\SAUVEGARDES_SERVEURS\complete_mensuelle\serveur8"
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".