惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

IT之家
IT之家
The GitHub Blog
The GitHub Blog
F
Fortinet All Blogs
Last Week in AI
Last Week in AI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
L
LangChain Blog
爱范儿
爱范儿
博客园_首页
Stack Overflow Blog
Stack Overflow Blog
MongoDB | Blog
MongoDB | Blog
博客园 - 三生石上(FineUI控件)
大猫的无限游戏
大猫的无限游戏
宝玉的分享
宝玉的分享
GbyAI
GbyAI
H
Help Net Security
A
About on SuperTechFans
Recent Announcements
Recent Announcements
Hugging Face - Blog
Hugging Face - Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
雷峰网
雷峰网
D
Docker
博客园 - Franky
有赞技术团队
有赞技术团队
G
Google Developers Blog

博客园 - BB_Coder

CruiseControl 安装配置 使用Common.Logging+log4net规范日志管理 我也表达式一回 sqlserver2005系统表、视图研究2 三种SQL分页方法性能分析 SQLServer2005新分页方法 关于SQLServer的小技巧 应该多了解一些工具 正则表达式网上学习资料 用最简单的方法实现Ajax - BB_Coder - 博客园 关于onMouseOver出现提示文字的多行处理办法 验证码缓存问题完美解决方案 由于登录失败而无法启动服务的解决方案 邮件发送不成功的问题 最近项目是跟框架有关的两个问题 自己写的一些小函数.用正则表达式实现一些小功能~ 数据库还原后连接不上 未与信任 SQL Server 连接相关联 IIS配置问题:出现了Failed to access IIS metabase的错误
rsync --include-from --exclude-from的理解
BB_Coder · 2019-01-29 · via 博客园 - BB_Coder

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