rsync仅包含目录模式

时间:2018-09-15 09:07:31

标签: rsync

我只想包含名为*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                       │       

2 个答案:

答案 0 :(得分:1)

这应该有效:

--include='*/'
--include='*cache*/**'
--exclude='*'
--prune-empty-dirs

说:

  • 包括所有文件夹(在其中搜索是必需的。)
  • 在父目录的名称中包含所有带有“缓存”的文件。
  • 排除其他所有内容。
  • 删除所有已复制但事实证明不包含缓存的文件夹。不幸的是,这也会删除缓存目录中的所有空文件夹,但希望对您而言并不重要。

答案 1 :(得分:0)

我已经接受了ams的回答,但是,如果您不知道rsync --include --exclude的语法(我不知道),请首先使用find获取一个明确的文件列表。

cd source
find . | grep /.*cache.*/ | rsync --files-from=- source dest