Я изо всех сил пытаюсь понять систему фильтров rsync, и это меня совершенно сбивает с толку.
У меня есть следующая «тестовая» структура каталогов, чтобы попытаться понять ее. Без параметров фильтра вот все мои файлы:
rsync -amv --dry-run/источник/цель
список файлов сборки ... готово
источник/
источник/1.pdf
источник/2.pdf
источник/exclude_rules.txt
источник/filter_rules.txt
источник/исключендир/
источник/excludedir/2.jpg
источник/excludedir/4.pdf
источник/подкаталог/
источник/подкаталог/1.jpg
источник/подкаталог/1.txt
источник/подкаталог/3.pdf
источник/подкаталог/подкаталог2/
источник/подкаталог/подкаталог2/6.jpg
источник/подкаталог/подкаталог2/6.pdf
Я просто хочу синхронизировать все *.pdf
файлы, за исключением определенных каталогов, а именно любого каталога, *исключать*
в этом.
Я использую файл с правилами фильтрации в нем со следующей командой:
rsync -amv --dry-run --filter='merge /filter_rules' /source /target
filter_rules выглядят как варианты следующего, но я не могу заставить их давать результаты, которые мне нужны:
-/ *исключать*/
+/ *.pdf
-/ *
Ближе всего я пришел к простому исключению:
-/ *исключать*/
Который дает:
список файлов сборки ... готово
источник/
источник/1.pdf
источник/2.pdf
источник/exclude_rules.txt
источник/filter_rules.txt
источник/подкаталог/
источник/подкаталог/1.jpg
источник/подкаталог/1.txt
источник/подкаталог/3.pdf
источник/подкаталог/подкаталог2/
источник/подкаталог/подкаталог2/6.jpg
источник/подкаталог/подкаталог2/6.pdf
Как мне отфильтровать остальные, чтобы просто получить *.pdf
?