Je veux déplacer un sous-set de files de dirA vers dirB (disons des files avec "bla" dans le nom de file), mais je veux que tous les directorys nesteds soient les mêmes dans le nouvel location. Comment puis je faire ça?
La magie des règles de filtrage rsync
:
$ rsync -av --filter="+ */" --filter="-! *blah*" /source /dest
Consultez la page de manuel rsync
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 directory"
--filter="-! *blah*
signifie" exclure tout ce qui n'inclut PAS bla dans le nom de file "
Cela a fonctionné pour moi:
rsync -ave 'ssh -p 22' --filter="+ */" --exclude="*_blah.blah" [email protected]:/source/directory/ /destination/directory/
Le commutateur -e
définit le protocole de transfert rsync
avec le port comme -p 22
. De plus, les trailing /
slashes sont importants pour faire savoir au programme qu'il s'agit de directorys.
Merci @ pdo pour les heures supplémentaires de ma journée de travail!