У меня есть дерево подкаталогов, некоторые из которых содержат файл со словом «шаблон» как часть имени. Я хочу синхронизировать их с тем же деревом подкаталогов в другом месте.
например: Источник:
curfolder/dir1/dir2/blah_template.ext
curfolder/dir3/dir4/foo_template.blah
Предполагаемый пункт назначения:
destfolder/dir1/dir2/blah_template.ext
destfolder/dir3/dir4/foo_template.blah
Эта команда не сработала; он помещает все файлы в базовую папку назначения, а не в правильные подкаталоги:
rsync -av curfolder/*/*/*template* destfolder
Я думаю, мне нужен фильтр вроде этого, но он не работает (кажется, просто синхронизирует все):
rsync -av -f"+ *template*" curfolder destfolder
Один из способов сделать это:
rsync -av --include "*/" --include="*_template*" --exclude="*" --prune-empty-dirs curfolder/ destfolder/
что он делает, выражается словами:
Два включения имеют приоритет перед исключением, поэтому исключение соответствует только всему, что не соответствует включению.