Pages : 1
#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
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