我想让我的文件夹和子文件夹树结构没有文件,但最大深度为3(/ folder 1/folder 2/folder 3),并排除特定的文件夹(ex )。缓存/)
我试过这样的命令:
$ rsync -azv --include=*/ --exclude=* --exclude=cache/ --exclude=/*/*/*/ source/ destination/但这不管用..。它正在复制所有文件夹和子文件夹;它不尊重最大深度,也不排除缓存文件夹。
它是否需要使用另一个参数来限制rsyc的最大深度;我的现有参数有什么问题?
附注:上次我问这个问题时,它被标记为Rsync过滤器:只复制一个模式的副本。
这并不是因为它不处理最大深度,也不是只处理rsync目录树结构。thx
发布于 2015-10-09 10:53:36
在包含*/之前,您需要排除多级模式,因为后者的意思是“包含所有目录”,而忽略后者的排除。您还需要添加一个额外的级别,因为*/表示一个目录,因此/*/*/*/的意思是“排除三个或多个级别。
该命令变成:
rsync -azv --exclude='/*/*/*/*/' --include='*/' --exclude='*' --exclude=cache/ source/ destination/(正如通配符已经注释过的那样,您必须始终引用或转义shell元字符。)
发布于 2015-10-09 11:22:45
要同步两个目录树,同时尊重三个子目录的最大深度限制,请使用:
rsync -avz /source/ /destination --exclude "/**/**/**/*" --exclude=cache这还将排除源路径中任何地方称为缓存的目录。
https://unix.stackexchange.com/questions/234984
复制相似问题