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 :

Copie conditionelle de fichiers


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2012
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 81
    Par défaut Copie conditionelle de fichiers
    Bonjour,

    Je m'adresse à vous aujourd'hui car je suis un peu perdu.
    Un de mes clients m'a demandé de lui pondre un script Powershell afin de copier des fichiers d'un dossier A vers un serveur B.
    Sur ce serveur B, les fichiers sont compressés avec 7zip puis envoyés vers un serveur C.

    Ceci a été implémenté sans souci.
    Le problème maintenant, c'est que mon client, un peu parano veut que le script de copie compare le serveur A et le serveur C afin de vérifier quels sont les fichiers qui n'ont pas encore été copiés.

    Les fichiers compressés garde le même nom mais avec une extension .7z.

    En gros, je dois adapter mon script powershell pour que ce dernier compare le BaseName des fichiers sur le serveur A avec ceux du serveur C.
    Ensuite il doit copier tous les fichiers dont le basename n'existe pas sur le serveur C (mais sur le serveur A) vers le serveur B pour compression.


    En gros j'ai:

    Serveur A:

    fichier1.bkp
    fichier2.bkp
    fichier3.bkp
    fichier4.bkp

    Serveur C:

    fichier1.7z
    fichier2.7z

    Le script devrait alors copier les fichiers fichier3.bkp et fichier4.bkp vers mon serveur B.

    J'ai pondu le script suivant, mais celui-ci ne me copie rien du tout. Une âme charitable pourrait y jeter un oeil et me dire ce que j'ai foiré?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $source = "c:\test"
    $sourcelist = Get-ChildItem $source
    $destination = "d:\test"
    $final = "h:\test"
    $filename = $file.basename
    foreach ($file in $sourcelist){
    $result = test-path -path "$destination\*" -include $filename
    if ($result -like "False"){
    Copy-Item "$source\$file" -Destination "$final"
    }
    }
    Je vous remercie par avance de votre aide et vous souhaite une excellente journée

  2. #2
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Utilise Compare-Object tu te faciliteras la vie.
    Construit une liste de fichiers par serveur, puis compare les sur la propriété BaseName

  3. #3
    Membre éclairé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2012
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 81
    Par défaut
    Bonjour et merci pour la réponse qui m'a aiguillé.

    J'ai pondu ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $source = "C:\test"
    $destination = "d:\test"
    $final = "i:\test"
    
    Compare-Object (ls $source) (ls $destination) -Property Basename -passthru | 
    Where { $_.PSParentPath -eq (gi $source).PSPath } |
    Copy-Item $final
    mais ça me renvoie une erreur:
    Copy-Item <<<< $final
    + CategoryInfo : InvalidArgument: (Test7.txtSObject) [Copy-Item], ParameterBindingException
    + FullyQualifiedErrorId : InputObjectNotBound,Microsoft.PowerShell.Commands.CopyItemCommand
    avec une indication d:\test3.ps1:14 digit 10

    Malheureusement, je ne vois pas vraiment où j'ai pu faire une erreur

    Peut-être pourrez-vous m'aider...

    Encore merci pour l'aide

  4. #4
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Si tu utilises Compare-Object l'usage de la proprièté SideIndicator est préférable ...

Discussions similaires

  1. [VB6] Impact de la copie d'un fichier
    Par Cereal123 dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 31/03/2006, 07h57
  2. Réponses: 12
    Dernier message: 07/12/2005, 18h42
  3. copie de base, fichier mdw, perte des droits
    Par hades666evil dans le forum Access
    Réponses: 2
    Dernier message: 14/09/2005, 17h06
  4. Copie d'un fichier sans montage avec Samba
    Par jean-jacques varvenne dans le forum Réseau
    Réponses: 5
    Dernier message: 14/07/2005, 11h31
  5. copie d'un fichier vers un autre serveur
    Par jexl dans le forum ASP
    Réponses: 4
    Dernier message: 20/12/2004, 16h04

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