Я хочу включить только каталоги с именем *cache* и все файлы и подкаталоги в них. Как написать rync --include --exclude?
*cache*
rync --include --exclude
source dest ├── a │ ├── b ├── b │ └── d │ └── d │ └── e │ └── e │ └── cache │ └── cache ├── c ├── c │ └── f │ └── f │ └── npm_cache │ └── npm_cache ├── g ├── g │ └── cache_stores │ └── cache_stores ├── h ├── h │ └── cache │ └── cache │ └── i │ └── i │ └── j │ └── j └── k │ └── l │
Я принял ответ ams, но если вы не знаете синтаксис rsync --include --exclude (не знаю), сначала получите явный список файлов с find.
--include --exclude
find
cd source find . | grep /.*cache.*/ | rsync --files-from=- source dest
Это должно работать:
--include='*/' --include='*cache*/**' --exclude='*' --prune-empty-dirs
То есть: