Comment puis-je copier un sous-ensemble de fichiers à partir d'un répertoire tout en préservant la structure des dossiers?


Réponses:


9

La magie des rsyncrègles de filtrage:

$ rsync -av --filter="+ */" --filter="-! *blah*" /source /dest

Consultez la rsyncpage de manuel pour les détails sur les règles de filtrage, mais voici la version condensée pour ce besoin particulier.

--filter="+ */" signifie "inclure tout ce qui est un répertoire"

--filter="-! *blah* signifie "exclure tout ce qui n'inclut pas bla dans le nom de fichier"


3

Si vous avez besoin de copier ces fichiers, cp fera:

cd dirA
find . -iname "*blah*" | xargs -If cp --parents f dirB

L'option --parentspréserve les sous-répertoires - elle crée le chemin de répertoire complet pour la destination.


la syntaxe ici est beaucoup plus claire que rsync
Matěj Šmíd

0

Cela a fonctionné pour moi:

rsync -ave 'ssh -p 22' --filter="+ */" --exclude="*_blah.blah" uid@555.55.555.55:/source/directory/ /destination/directory/

Le -ecommutateur définit le rsyncprotocole de transfert avec le port comme -p 22. En outre, les /barres obliques de fin sont importantes pour informer le programme qu'il traite des répertoires.

Merci @pdo pour les heures supplémentaires de ma journée de travail!

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.