IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Gestion des sauvegardes


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 6
    Par défaut Gestion des sauvegardes
    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

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 6
    Par défaut Message d'erreur
    Je rencontre actuellement le message suivant pour chaque éléments copié :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    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. ...[/I][/I]
    +                    ~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : InvalidArgument : (INSEE_PACS_201910151102_NB3.xml:PSObject) [Remove-Item], ParameterBindingException
        + FullyQualifiedErrorId : InputObjectNotBound,Microsoft.PowerShell.Commands.RemoveItemCommand[/I]

    INSEE_PACS_201910151102_NB3 c'est un des fichiers transférés.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 6
    Par défaut Résolution ?
    Je crois que c'est bon maintenant sous cette forme :

    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    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.

  4. #4
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    Oui.
    Soit tu lui passe l'item en pipeline ForEach-Object {$_ | Remove-Item}
    Soit tu spécifier le chemin de l'item à supprimer ForEach-Object {Remove-Item -Path $_.FullName}

    Mais pas les deux
    Voir : Remove-Item

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 6
    Par défaut
    J'ai choisi la deuxième solution et ça marche correctement pour le nettoyage en revanche, il ne remonte plus les noms des fichiers que je supprime dans mon fichier de log. Il servait a cela $_ que tu m'a conseillé de supprimer :

    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ForEach-Object {
    $_ | del -Force
    $_.FullName | Out-File C:\Temp\deletedbackups$varDate.txt -Append 
    }

    Tu es sur qu'il ne faut pas le laisser ?

    Après ta modification cela donne le bout de code suivant (le reste n'a pas changé ) :

    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Get-ChildItem $srcSite -Recurse -Force -ea 0 |
    ? {!$_.PsIsContainer -and $_.LastwriteTime -lt (Get-Date).AddDays(-$tpsRetSrc)} |
    ForEach-Object {Remove-Item -Path $_.FullName} | Out-File C:\Temp\deletedbackups$varDate.txt -Append 
    }

    Sinon j'ai un autre problème. En fonction du répertoire dans lequel je me trouve (ou le script est lancé par powershell ), il va me checker ce qui est dans le répertoire et appliquer les règles de nettoyages.
    Pour palier à cela je l'ai fait pointer vers C:\temp au lieu du c:\windows\system32. Pour ma part je voudrais qu'il s'en tienne qu'aux répertoires de mes serveurs indiqués dans mon fichier CSV.

  6. #6
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    J'ai choisi la deuxième solution et ça marche correctement pour le nettoyage en revanche, il ne remonte plus les noms des fichiers que je supprime dans mon fichier de log. Il servait a cela $_ que tu m'a conseillé de supprimer
    Peut être pacque le fichier n'existe plus, essaie comme ceci
    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Get-ChildItem $dstSite -Recurse -Force -ea 0 |
    ? {!$_.PsIsContainer -and $_.LastwriteTime -lt (Get-Date).AddDays(-$tpsRetDest)} |
    ForEach-Object {
    $FullName = $_.FullName
    $_ | del -Force
    $FullName | Out-File C:\Temp\deletedbackups$varDate.txt -Append 
    }


    Sinon j'ai un autre problème. En fonction du répertoire dans lequel je me trouve (ou le script est lancé par powershell ), il va me checker ce qui est dans le répertoire et appliquer les règles de nettoyages.
    Pour palier à cela je l'ai fait pointer vers C:\temp au lieu du c:\windows\system32. Pour ma part je voudrais qu'il s'en tienne qu'aux répertoires de mes serveurs indiqués dans mon fichier CSV.
    Tu doit définir correctement le $srcSite c'est le dossier de recherche

Discussions similaires

  1. [WD23] Gestion des sauvegardes / restaurations sous HFSQL CS
    Par wd_newbie dans le forum WinDev
    Réponses: 6
    Dernier message: 01/11/2018, 15h13
  2. Gestion des sauvegardes As/400
    Par passager123 dans le forum AS/400
    Réponses: 21
    Dernier message: 14/02/2017, 17h06
  3. Gestion des sauvegardes HyperfilesSQL CS
    Par tahraz dans le forum HyperFileSQL
    Réponses: 2
    Dernier message: 26/10/2012, 08h18
  4. Gestion des sauvegardes dans un jeu en C++
    Par Invité dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 21/05/2012, 09h58
  5. Que choisir pour la gestion des sauvegardes?
    Par Somato dans le forum Autres
    Réponses: 14
    Dernier message: 22/04/2008, 09h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo