Bonjour,
Je suis en train de mettre en place 3 scritps qui vont me permettre pour le premier de copier mes sauvegardes vers un serveur centralisé. Il va cherché dans un fichier CSV le répertoire source, le nom du ou des fichiers, le répertoire de destination et le nombre maximum d'occurrence (non implémenté). Le second script fait le ménage dans les deux répertoires (sources et destination) d'un autre fichier CSV. Son fichier CSV contient 4 colonnes la source, le délai de rétention en jour, la destination, le délai de rétention de destination. Un troisième script s'occupera à lancer les scripts de lancement de sauvegarde, ce sera le premier à utiliser.
Mon premier script fonctionne pas mal mais il est peut être perfectible :
Code Powershell : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 # Activation du fichier de log $varDate=(get-date -format yyyy-MM-dd) start-transcript -path "C:\Temp\log_$varDate.txt" $csvFile = "C:\Temp\SAVE_BDD.csv" $table = Import-Csv $csvFile -Delimiter ";" Set-Variable srcSite, dstSite , nameDump, tpsRetention foreach ($row in $table) { Clear-Variable srcSite Clear-Variable dstSite Clear-Variable nameDump Clear-Variable tpsRetention $srcSite = $row.Source $dstSite = $row.Destination $nameDump= $Row.Dump $tpsRetention= $Row.Retention robocopy $srcSite $dstSite $nameDump /mt /z /MAXAGE:5 # /mt permet le multi threading sans valeur la valeur par défaut est 8 # /z permet la copie des fichiers en mode redémarrable #/MAXAGE :5 permet de ne pas copier les fichier de plus de 5 jours } robocopy C:\Temp\ \\NELSON\DUMP_BDD\_Logs "log_$varDate.txt" /MIR # Désactivation des logs Stop-Transcript
Pour le second script il fonctionnait bien sur mon poste à la maison mais lorsque je l'exécute il se comporte bizarrement
Code Powershell : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 # Activation du fichier de log $varDate=(get-date -format yyyy-MM-dd) start-transcript -path "C:\Temp\log_Gestion_Historique_$varDate.txt" $csvFile = "C:\Temp\Historique.csv" $table = Import-Csv $csvFile -Delimiter ";" Set-Variable srcSite, dstSite , nameDump, tpsRetSrc, tpsRetDest foreach ($row in $table) { Clear-Variable srcSite Clear-Variable dstSite Clear-Variable tpsRetSrc Clear-Variable tpsRetDest $srcSite = $row.Source $dstSite = $row.Destination $tpsRetSrc= $Row.Retention_Src $tpsRetDest= $Row.Retention_Dest ADD-content -path C:\Temp\deletedbackups$varDate.txt -value "Fichiers_supprimés_sur $srcSite" Get-ChildItem $srcSite -Recurse -Force -ea 0 | ? {!$_.PsIsContainer -and $_.LastwriteTime -lt (Get-Date).AddDays(-$tpsRetSrc)} | ForEach-Object { $_ | del -Force $_.FullName | Out-File C:\Temp\deletedbackups$varDate.txt -Append } ADD-content -path C:\Temp\deletedbackups$varDate.txt -value "Fichiers_supprimés_sur $dstSite" Get-ChildItem $dstSite -Recurse -Force -ea 0 | ? {!$_.PsIsContainer -and $_.LastwriteTime -lt (Get-Date).AddDays(-$tpsRetDest)} | ForEach-Object { $_ | del -Force $_.FullName | Out-File C:\Temp\deletedbackups$varDate.txt -Append } robocopy C:\Temp\ \\NELSON\Dump_BDD\_Logs "deletedbackups$varDate.txt" /MIR } # Désactivation des logs Stop-Transcript
Il y a t'il des anomalies dans mon script qui explique pourquoi il va me supprimer des fois des fichiers dans mon c:\windows\system32 … ?
Je souhaiterais le faire évoluer pour sur le fichier de sortie deletedbackups_XXX.txt, il m'ajoute la date de création, la date dernier accés et de dernière modification.
Merci de votre aide par avance
Partager