Я нашел проблему. Мои проблемы были вызваны способом rsync
обработки имен файлов. Абсолютный (то есть относительно корня передачи) путь включения не работает напрямую, поскольку родительские каталоги также должны быть включены. В противном случае вся структура каталогов уже исключена, и требуемый файл или подкаталог никогда не обрабатывается. Само руководство говорит так (где-то), но оно очень нелогично.
Чтобы включить только некоторые вложенные каталоги, необходимо включить все родительские каталоги, а затем все остальные дочерние каталоги должны быть снова исключены:
include sub/ include sub/dir/ include sub/dir/I/ include sub/dir/I/want/*** exclude sub/* exclude sub/dir/* exclude sub/dir/I/* include other/ include other/sub/ include other/sub/dir/ include other/sub/dir/I/ include other/sub/dir/I/want/*** exclude other/* exclude other/sub/* exclude other/sub/dir/* exclude other/sub/dir/I/* ... protect .hg* exclude /*
Вторая-последняя строка защищает все .hg*
каталоги и файлы, такие как .hg/
и .hgtags
. Линия исключает все остальные каталоги в корне передачи.
Я написал Perl-скрипт для создания файла фильтра из списка нужных подкаталогов. Он доступен по адресу http://www.perlmonks.org/?node_id=928357 .