Copie de fichier de rep A vers B

Résolu
yoman59000 Messages postés 4 Statut Membre -  
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

je souhaiterai copier le contenu d'un répertoire A qui peut contenir des sous répertoires vers un répertoire B si seulement les fichiers ne sont pas présents dans B.

Pourriez vous m'aider s'il vous plait car je suis pas tres calé sous shell Unix

j'ai une petite idée mais je n'arrive pas à la mettre en oeuvre sous shell ksh

parcourir l'arborescence avec une boucle et vérifier si fichier de REP A pas présent dans REP B alors copier sinon pas copier

par contre je sais pas comment faire gérer la récursivité

car c'est arborescence REP-->fichier--->sous répertoire --->fichiers ---->sous répertoires

merci bcp c'est urgent
Configuration: Windows XP
Internet Explorer 6.0

6 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    jp@MDK:~/tmpfs ssh$ tree
    .
    |-- comptes_mails_orange.xls
    |-- dossier
    |   |-- foo.sh
    |   |-- foo.sh~
    |   `-- plop
    |-- foo.sh
    |-- foo.sh~
    |-- plop
    `-- rep
    
    2 directories, 7 files
    
    jp@MDK:~/tmpfs ssh$ rsync -avz /home/jp/tmpfs/dossier rep/
    building file list ... done
    dossier/
    dossier/foo.sh
    dossier/foo.sh~
    dossier/plop
    
    sent 727 bytes  received 92 bytes  546.00 bytes/sec
    total size is 648  speedup is 0.79
    
    jp@MDK:~/tmpfs ssh$ tree
    .
    |-- comptes_mails_orange.xls
    |-- dossier
    |   |-- foo.sh
    |   |-- foo.sh~
    |   `-- plop
    |-- foo.sh
    |-- foo.sh~
    |-- plop
    `-- rep
        `-- dossier
            |-- foo.sh
            |-- foo.sh~
            `-- plop
    
    3 directories, 10 files
    
    jp@MDK:~/tmpfs ssh$ rm -f rep/dossier/plop
    
    jp@MDK:~/tmpfs ssh$ tree
    .
    |-- comptes_mails_orange.xls
    |-- dossier
    |   |-- foo.sh
    |   |-- foo.sh~
    |   `-- plop
    |-- foo.sh
    |-- foo.sh~
    |-- plop
    `-- rep
        `-- dossier
            |-- foo.sh
            `-- foo.sh~
    
    3 directories, 9 files
    
    jp@MDK:~/tmpfs ssh$ rsync -avz --ignore-existing /home/jp/tmpfs/dossier rep/
    building file list ... done
    dossier/
    dossier/plop
    
    sent 390 bytes  received 48 bytes  876.00 bytes/sec
    total size is 648  speedup is 1.48
    
    jp@MDK:~/tmpfs ssh$ $ tree
    .
    |-- comptes_mails_orange.xls
    |-- dossier
    |   |-- foo.sh
    |   |-- foo.sh~
    |   `-- plop
    |-- foo.sh
    |-- foo.sh~
    |-- plop
    `-- rep
        `-- dossier
            |-- foo.sh
            |-- foo.sh~
            `-- plop
    
    3 directories, 10 files
    
    jp@MDK:~/tmpfs ssh$
    ;-))
    1
  2. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     
    Il suffit de lire la doc :
    man cp

    Ce qui donne :
    cp -r /mon/repertoire/a/copier /mon/repertoire/de/destination

    Dans ce cas le répertoire "copier" sera recopié récursivement dans "/mon/repertoire/de/destination"

    Bonne chance
    0
  3. yoman59000 Messages postés 4 Statut Membre
     
    merci pour ton retour mais la commande cp -r ne suffira pas car cela risque décraser les fichiers du REP B par ceux de A si c'est les meme alors que je ne veux pas justement

    exemple si le fichier_1 est déja présent dans MON_REP_DESTINATION je ne veux pas l'écraser par celui présent dans le répertoire MON_REP_A_COPIER

    MON_REP_A_COPIER/fichier_1

    j'espere que je suis clair dans mes explications.

    donc ce n'est pas aussi simple avec une commande il faut un script mais je sais pas quoi
    0
  4. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    Alors regarde du côté de rsync :
    rsync -avz --ignore-existing /rep/source /rep/destination
    ;-))
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. yoman59000 Messages postés 4 Statut Membre
     
    la commande rsync n'est pas approprié pour ma question elle est valable pour tranfert vers une machine distant moi la copie se fait sur les repertoires de la meme machine
    0
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      On peut utiliser rsync pour copier un répertoire sur la même machine !

      Extrait :
      Rsync copie des fichiers depuis ou vers un hôte distant, ou localement sur l'hôte actuel
      0
  7. yoman59000 Messages postés 4 Statut Membre
     
    oui effectivement je confirme désolé pour l'erreur

    par contre le pb avec rsync c'est le suivant :

    j'ai un répertoire TOTO qui contient les fichiers A B C D E le repertoire TITI qui contient A B C D

    si je modifie A et que je fait la commande

    rsync -av toto/ titi/ alors le fichier A est quand meme ecrassé dans le répertoire TITI alors que je veux juste qu'il rajoute E dans le repertoire TITI
    0