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