rsync --include-from --exclude-from的理解

rsync --include-from --exclude-from的理解:
1、同时添加--include-from --exclude-from时。后者是对前者的结果进行排除
如:“--include-from include.txt --include-from exclude.txt” #也就是说绝对不会超过--include-from声明的范围
2、--include-from 文件前面的符号是有效的有意义的
3、--exclude-from 文件前面不管是什么符号、有没有符号都是排除的意思

4、每一个目录、子目录、文件都会与这个过滤规则列表进行匹配,直到找到一个命中的(命中的规则说要过滤就过滤,要包含那就包含),

5、最重要的一个原则: 只找第一个匹配的规则

 以下是原文,我把关键词标出来方便阅读:

FILTER RULES

The filter rules allow for flexible selection of which files to transfer (include) and which files to skip (exclude). The rules either directly specify include/exclude patterns or they specify a way to acquire more include/exclude patterns (e.g. to read them from a file).

As the list of files/directories to transfer is built, rsync checks each name to be transferred against the list of include/exclude patterns in turn, and the first matching pattern is acted on: if it is an exclude pattern, then that file is skipped; if it is an include pattern then that filename is not skipped; if no matching pattern is found, then the filename is not skipped.

Rsync builds an ordered list of filter rules as specified on the command-line.

 

以下是一个实例后面添加对相关过滤规则的说明和理解

#############################################################################
### include.txt:
# CompanyAttachment Files
# 限制所有目录只包含2019开头的
- ETest/20191/ #如果非要排除 ETest/20191下的文件 这个排除规则应该放前面。每个路径 只找第一个匹配的规则 ( 只找第一个、只找第一个、只找第一个 这很重要,理解了这个原则,才能理解所有的规则)
+ 2019*/ #这个只是 包含了目录,目录下的文件不会同步
+ 2019*/** #这个只包含了目录下的文件,如果没有上面的这个也无效
+ ETest/ #这个只是 包含了目录 但是子目录如果符合上面的其它条件也会被同步(如ETest目录下有2019开头的文件夹,也会同步)
- * #排除其它文件
- *.tmp #排除所有的.tmp文件。 这是个 错误 的示例,这个不一定会排除所有目录的.tmp文件。因为有些路径会命中前面的规则就直接返回了。这个排除规则要么写到最前面,要么写到exclude.txt里去
#############################################################################
#############################################################################
# exclude.txt
*.tmp #exclude-from文件里不管前面加不加+、-号都是排除(测试+号、-号、不要符号结果是一样的,很奇怪,但测试结果是这样,不知道我是不是理解错误)
#* #exclude-from 是对include-from的结果进行排除,所以不能加这个。这个相当于禁用同步了。
#############################################################################

 总结一下:

1、顺序很重要,重要的、命中范围小的写前面

2、最重要的还是理解它的过滤逻辑:每一个目录、子目录、文件都会与这个过滤规则列表进行匹配,直到找到一个命中的(命中的规则说要过滤就过滤,要包含那就包含),

转载于:https://www.cnblogs.com/heys/p/10335359.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
rsync命令中的--exclude选项用于排除指定的文件或文件夹,使其在同步过程中不被复制。通过使用--exclude选项,可以提高同步过程的效率。在给定的引用中提到了通过rsyncexclude-from选项来实现排除。这样可以在一个单独的文件中列出要排除的文件或文件夹,以便灵活地管理需要排除的内容。 在引用中,给出了一个示例命令,仅同步名为a的目录,并排除其他文件和文件夹。通过使用--include选项,指定要包含的目录,然后使用--exclude选项,排除除了指定目录之外的所有内容。 在引用中,给出了一个示例命令,仅同步名为a的目录下的a.txt文件,并排除其他内容。同样使用了--include和--exclude选项,通过指定要包含的文件和文件夹,然后排除其他内容。 在引用中,给出了一个示例命令,同步所有的a.txt文件。如果目标目录中没有该文件,则会全部同步。如果某个目录下已经存在该文件,则不会替换。同样使用了--include和--exclude选项,通过指定要包含的文件和文件夹,然后排除其他内容。 总结来说,rsync命令中的--exclude选项可以用于排除指定的文件或文件夹,以提高同步效率。可以通过在命令中使用--include选项来指定要包含的文件和文件夹,然后使用--exclude选项来排除其他内容。这样可以根据需要灵活地管理同步过程中的内容。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值