首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >限制深度和排除特定文件夹的rsync目录树结构

问限制深度和排除特定文件夹的rsync目录树结构
EN

Unix & Linux用户
提问于 2015-10-09 10:16:33
回答 2查看 4.5K关注 0票数 2

我想让我的文件夹和子文件夹树结构没有文件,但最大深度为3(/ folder 1/folder 2/folder 3),并排除特定的文件夹(ex )。缓存/)

我试过这样的命令:

代码语言:javascript
复制
$ rsync -azv --include=*/ --exclude=* --exclude=cache/ --exclude=/*/*/*/ source/ destination/

但这不管用..。它正在复制所有文件夹和子文件夹;它不尊重最大深度,也不排除缓存文件夹。

它是否需要使用另一个参数来限制rsyc的最大深度;我的现有参数有什么问题?

附注:上次我问这个问题时,它被标记为Rsync过滤器:只复制一个模式的副本。

这并不是因为它不处理最大深度,也不是只处理rsync目录树结构。thx

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2015-10-09 10:53:36

在包含*/之前,您需要排除多级模式,因为后者的意思是“包含所有目录”,而忽略后者的排除。您还需要添加一个额外的级别,因为*/表示一个目录,因此/*/*/*/的意思是“排除三个或多个级别。

该命令变成:

代码语言:javascript
复制
rsync -azv --exclude='/*/*/*/*/' --include='*/' --exclude='*' --exclude=cache/ source/ destination/

(正如通配符已经注释过的那样,您必须始终引用或转义shell元字符。)

票数 2
EN

Unix & Linux用户

发布于 2015-10-09 11:22:45

要同步两个目录树,同时尊重三个子目录的最大深度限制,请使用:

代码语言:javascript
复制
rsync -avz /source/ /destination --exclude "/**/**/**/*" --exclude=cache

这还将排除源路径中任何地方称为缓存的目录。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/234984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档