Copie de fichier de rep A vers B

Résolu/Fermé
yoman59000 Messages postés 4 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 26 mars 2009 - 26 mars 2009 à 11:32
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 26 mars 2009 à 13:43
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
A voir également:

6 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
26 mars 2009 à 13:43
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
mamiemando Messages postés 33077 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 avril 2024 7 748
26 mars 2009 à 11:49
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
yoman59000 Messages postés 4 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 26 mars 2009
26 mars 2009 à 11:58
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
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
26 mars 2009 à 13:22
Salut,

Alors regarde du côté de rsync :
rsync -avz --ignore-existing /rep/source /rep/destination
;-))
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yoman59000 Messages postés 4 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 26 mars 2009
26 mars 2009 à 13:27
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
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
26 mars 2009 à 13:29
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
yoman59000 Messages postés 4 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 26 mars 2009
26 mars 2009 à 13:42
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