Question
Powershell gestion des sauvegardes
- POTEY
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 4
- Remerciements reçus 0
il y a 3 ans 5 mois #30057
par POTEY
Powershell gestion des sauvegardes a été créé par POTEY
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 :
# 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
# 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 … ? Peut il être simplifié ?
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
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 :
# 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
# 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 … ? Peut il être simplifié ?
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
Connexion ou Créer un compte pour participer à la conversation.
- POTEY
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 4
- Remerciements reçus 0
il y a 3 ans 5 mois #30058
par POTEY
Réponse de POTEY sur le sujet Powershell gestion des sauvegardes
Je rencontre actuellement le message suivant pour chaque éléments copié :
del : L'objet d'entrée ne peut être lié à aucun paramètre de la commande, soit parce que cette commande n'accepte pas l'entrée de pipeline, soit parce que l'entrée et ses propriétés ne
correspondent à aucun des paramètres qui acceptent l'entrée de pipeline.
Au caractère C:\Temp\Gestion_Historique_BDD.ps1:32 : 153
+ ... -Object { $_ | del -Force $_.FullName | Out-File C:\Temp\deletedbackups$varDate. ...
+ ~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument : (INSEE_PACS_201910151102_NB3.xml:PSObject) [Remove-Item], ParameterBindingException
+ FullyQualifiedErrorId : InputObjectNotBound,Microsoft.PowerShell.Commands.RemoveItemCommand
INSEE_PACS_201910151102_NB3 c'est un des fichiers transférés.
del : L'objet d'entrée ne peut être lié à aucun paramètre de la commande, soit parce que cette commande n'accepte pas l'entrée de pipeline, soit parce que l'entrée et ses propriétés ne
correspondent à aucun des paramètres qui acceptent l'entrée de pipeline.
Au caractère C:\Temp\Gestion_Historique_BDD.ps1:32 : 153
+ ... -Object { $_ | del -Force $_.FullName | Out-File C:\Temp\deletedbackups$varDate. ...
+ ~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument : (INSEE_PACS_201910151102_NB3.xml:PSObject) [Remove-Item], ParameterBindingException
+ FullyQualifiedErrorId : InputObjectNotBound,Microsoft.PowerShell.Commands.RemoveItemCommand
INSEE_PACS_201910151102_NB3 c'est un des fichiers transférés.
Connexion ou Créer un compte pour participer à la conversation.
- POTEY
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 4
- Remerciements reçus 0
il y a 3 ans 5 mois #30059
par POTEY
Réponse de POTEY sur le sujet Powershell gestion des sauvegardes
Je crois que c'est bon maintenant sous cette forme :
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
}
Si je découpe la ligne comme ça, ça passe !!! Des explications ?
Si vous avez des critiques sur le script, n'hésitez pas.
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
}
Si je découpe la ligne comme ça, ça passe !!! Des explications ?
Si vous avez des critiques sur le script, n'hésitez pas.
Connexion ou Créer un compte pour participer à la conversation.
- POTEY
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 4
- Remerciements reçus 0
il y a 3 ans 5 mois #30063
par POTEY
Réponse de POTEY sur le sujet Powershell gestion des sauvegardes
le problème ne venait pas de l’indentation ou d u fait de couper les lignes.
Le problème venait du répertoire où je me positionnais. J'ai ajouté une ligne cd c:\temp pour me positionner sr le bon répertoire. Lorsque je l'exécute en tache planifié, j'indique qu'il faut le lancer dans c:`\temp
Le problème venait du répertoire où je me positionnais. J'ai ajouté une ligne cd c:\temp pour me positionner sr le bon répertoire. Lorsque je l'exécute en tache planifié, j'indique qu'il faut le lancer dans c:`\temp
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.067 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- Powershell gestion des sauvegardes