Copie de fichier de rep A vers B

Résolu
yoman59000 Messages postés 4 Statut Membre -  
jipicy Messages postés 41342 Statut Modérateur -
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 41342 Statut Modérateur 4 896
 
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 34195 Date d'inscription   Statut Modérateur Dernière intervention   7 895
 
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 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
jipicy Messages postés 41342 Statut Modérateur 4 896
 
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 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
jipicy Messages postés 41342 Statut Modérateur 4 896
 
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 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