Copie de fichier de rep A vers B

Résolu/Fermé
Signaler
Messages postés
4
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
26 mars 2009
-
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
-
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

6 réponses

Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 900
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
Messages postés
30551
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
24 janvier 2022
7 273
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
Messages postés
4
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
26 mars 2009

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
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 900
Salut,

Alors regarde du côté de rsync :
rsync -avz --ignore-existing /rep/source /rep/destination
;-))
0
Messages postés
4
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
26 mars 2009

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
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 900
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
Messages postés
4
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
26 mars 2009

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