Je veux déplacer un sous-ensemble de fichiers de dirA à dirB (disons des fichiers avec "blah" dans le nom de fichier), mais je veux que tous les répertoires imbriqués soient les mêmes dans le nouvel emplacement. Comment puis je faire ça?
8
Réponses:
La magie des
rsync
règles de filtrage:Consultez la
rsync
page 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"la source
Si vous avez besoin de copier ces fichiers, cp fera:
L'option
--parents
préserve les sous-répertoires - elle crée le chemin de répertoire complet pour la destination.la source
Cela a fonctionné pour moi:
rsync -ave 'ssh -p 22' --filter="+ */" --exclude="*_blah.blah" [email protected]:/source/directory/ /destination/directory/
Le
-e
commutateur définit lersync
protocole 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!
la source