Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 02/06/2019, à 09:02

fredobaldo

[Résolu] Commande rsync

Bonjour,
Voici  l'arborescence de mon dossier SOURCE:
   /SOURCE/Dossier1/test1.jpg
   /SOURCE/Dossier1/test2.jpg
   /SOURCE/Dossier2/test3.jpg
   /SOURCE/Dossier3/test4.jpg

Je souhaite copier à l'identique par RSYNC tous ces fichiers vers DESTINATION. Je lance donc la commande:

rsync -az --progress /SOURCE /DESTINATION

Je rajoute maintenant ces fichiers:
   /SOURCE/Dossier1/a_recuperer/fic1.jpg
   /SOURCE/Dossier1/a_recuperer/fic2.jpg
   /SOURCE/Dossier3/a_recuperer/fic3.jpg

Je souhaiterai maintenant copier à l'identique par RSYNC uniquement fic1.jpg, fic2.jpg et fic3.jpg vers DESTINATION et les effacer de SOURCE (sans forcément supprimer le dossier "a_recuperer").
mais je n'y parviens pas. Voici ce que j'ai essayé en vain:

rsync -az --progress --delete --include "*/a_recuperer/*.jpg" /SOURCE /DESTINATION
rsync -az --progress --delete --include "*/a_recuperer/*.jpg" --exclude "*" /SOURCE /DESTINATION

RSYNC peut-il faire celà ? Si oui, pourriez-vous m'aiguiller ?
Merci.

Dernière modification par fredobaldo (Le 02/06/2019, à 17:51)

Hors ligne

#2 Le 02/06/2019, à 11:09

kamaris

Re : [Résolu] Commande rsync

Je n'ai pas l'impression que ce soit possible d'un bloc. L'option pour dire à rsync de supprimer les fichiers sources, c'est --remove-source-files, et non pas --delete (ou ses variantes), qui concerne uniquement les fichiers destinations. Mais je ne sais pas trop si on peut composer l'option --remove-source-files avec des exclude/include, comme il est possible de le faire avec --delete.
Par ailleurs, je n'ai pas l'impression que rsync sache faire cette recherche/distinction par pattern au niveau de l'arboresence source, sans compter qu'il faudrait encore qu'il déplace les fichiers dans l'arborescence cible par rapport à la source…

Bref, perso je procèderais en deux temps. Tout d'abord un find -exec pour gérer les « a_recuperer », du type :

find /SOURCE -type f -path "/SOURCE/*a_recuperer*" -exec mv '{}' /DESTINATION \;

Puis ton rsync de départ sur le reste (EDIT : en excluant les répertoires « a_recuperer »)

rsync -az --exclude 'a_recuperer' --progress /SOURCE /DESTINATION

Dernière modification par kamaris (Le 02/06/2019, à 12:04)

Hors ligne

#3 Le 02/06/2019, à 15:27

fredobaldo

Re : [Résolu] Commande rsync

Bonjour et merci pour ta réponse.

1er point: est-ce que ceci fonctionnerai ?

rsync -az --progress --remove-source-files --include="a_recuperer/*.jpg" --include="*/" --exclude="*" /SOURCE /DESTINATION

(qui ne supprimerai pas le dossier a_recuperer)

2ème point: j'avais pensé au find, mais le problème (que je n'avais pas indiqué) est que SOURCE est sur un serveur distant accessible par SSH ou FTP.
Donc j'utilise le rsync avec: l'option

-e "ssh -i /home/ubuntu/.ssh/id_rsa"

Du coup, pourrais-tu me dire comment exécuter le find sur le serveur distant ?
Merci.

Dernière modification par fredobaldo (Le 02/06/2019, à 15:28)

Hors ligne

#4 Le 02/06/2019, à 16:19

kamaris

Re : [Résolu] Commande rsync

Eh bien si, tu as raison, il est possible de faire de la suppression différentielle au niveau de la source, je n'avais même pas essayé. Par contre, si j'en crois les petits tests que je viens de faire, il suffit de faire

rsync -az --progress --remove-source-files --include="a_recuperer/*.jpg" /SOURCE /DESTINATION

pour avoir une copie intégrale de /SOURCE vers /DESTINATION, avec une suppression des *.jpg dans /SOURCE tout en conservant les répertoires « a_recuperer ». Ensuite, si tu remets des fichiers dans les répertoires « a_recuperer » et que tu réexécutes cette commande, elle se contentera de copier les fichiers en question puis de les supprimer de /SOURCE.

Après par contre, je ne suis pas sûr d'avoir bien compris ta demande en fait, tout à l'heure : veux-tu qu'au final les fichiers *.jpg se trouvent à la même place dans /DESTINATION que celle où ils se trouvaient dans /SOURCE (auquel cas il me semble que la commande ci-dessus résout ton problème), ou bien veux-tu qu'ils se trouvent à la racine de /DESTINATION (en supprimant par dessus le marché les répertoires « a_recuperer » de /DESTINATION) ?

Dernière modification par kamaris (Le 02/06/2019, à 16:22)

Hors ligne

#5 Le 02/06/2019, à 16:28

fredobaldo

Re : [Résolu] Commande rsync

J'ai testé ta commande et elle semble fonctionner.
Ma demande est que si SOURCE est ainsi:
   /SOURCE/Dossier1/test1.jpg
   /SOURCE/Dossier1/test2.jpg
   /SOURCE/Dossier1/a_recuperer/fic1.jpg
   /SOURCE/Dossier1/a_recuperer/fic2.jpg
   /SOURCE/Dossier2/test3.jpg
   /SOURCE/Dossier3/test4.jpg
   /SOURCE/Dossier3/a_recuperer/fic3.jpg
J'exécute la commande:

rsync -az --exclude 'a_recuperer' --progress /SOURCE /DESTINATION

J'ai donc SOURCE inchangé et DESTINATION ainsi:
   /DESTINATION/Dossier1/test1.jpg
   /DESTINATION/Dossier1/test2.jpg
   /DESTINATION/Dossier2/test3.jpg
   /DESTINATION/Dossier3/test4.jpg
Et avec la commande:

rsync -az --progress --remove-source-files --include="a_recuperer/*.jpg" /SOURCE /DESTINATION

J'ai donc SOURCE:
   /SOURCE/Dossier1/test1.jpg
   /SOURCE/Dossier1/test2.jpg
   /SOURCE/Dossier1/a_recuperer (vide)
   /SOURCE/Dossier2/test3.jpg
   /SOURCE/Dossier3/test4.jpg
   /SOURCE/Dossier3/a_recuperer (vide)
et DESTINATION ainsi:
   /DESTINATION/Dossier1/test1.jpg
   /DESTINATION/Dossier1/test2.jpg
   /DESTINATION/Dossier1/a_recuperer/fic1.jpg
   /DESTINATION/Dossier1/a_recuperer/fic2.jpg
   /DESTINATION/Dossier2/test3.jpg
   /DESTINATION/Dossier3/test4.jpg
   /DESTINATION/Dossier3/a_recuperer/fic3.jpg
C'est parfait, merci.
Comment puis-je passer le sujet en [RESOLU] ?

Dernière modification par fredobaldo (Le 02/06/2019, à 17:50)

Hors ligne

#6 Le 02/06/2019, à 16:30

xubu1957

Re : [Résolu] Commande rsync

Bonjour,

Pour éditer ta discussion et rajouter [Résolu] au début du titre, il faut utiliser le bouton Modifier au bas de ton premier message.

Merci wink


Conseils pour les nouveaux demandeurs et pas qu'eux
Important : Pensez à passer vos sujets en [Réso|u] lorsque ceux-ci le sont, au début du titre en cliquant sur Modifier sous le premier message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.                   Membre de Linux-Azur

Hors ligne

#7 Le 02/06/2019, à 16:40

kamaris

Re : [Résolu] Commande rsync

Hum… sauf que chez moi, les répertoires « a_recuperer » sont préservés dans /SOURCE, comme tu semblais le vouloir au début. Mais bon, si ça te convient comme ça c'est le principal !

Hors ligne