RSYNC 过滤器冲突

RSYNC 过滤器冲突

鉴于目录的大小,我不得不将 rsync 任务分解为更小的作业。本质上,我是按字母顺序执行的(即,同步以 AD、EH 等开头的文件夹的脚本)。

我遇到的问题是.....我的 AD filter.txt 文件运行正常,但其他文件都失败了。我认为问题出在我同步的路径是:

/AUser/db/Backups/***
/AUser2/db/Backups/***
/CUser/db/Backups/***
/EUser/db/Backups/***

我的 AD 的 filter.txt 文件如下所示:

- E*
- e*
- F*
- f* (etc all the way through Z)
+ */db/
+ */db/Backups/***
- *

上面的代码没有问题。但是,这个却不行:

- A*
- a*
- B*
- b* 
- C*
- c*
- D*
- d*
- I*
- i*
- J* (etc all the way through Z)
+ */db/
+ */db/Backups/***
- *

我猜测是排除了 d 或 B 导致了这种情况(排除了 db 文件夹或 Backups 文件夹??)但我不明白为什么,因为我有一个包含 */db/ 和 */db/Backups/*** 的文件

谢谢你!!

答案1

rsync 过滤器对找到的第一个匹配项进行工作 - 所以是的,您对“d*”和“B*”的排除会在包含匹配之前排除“db”和“Backups”子目录。

最好只包含您想要包含的特定路径,然后排除其他所有内容,例如:

+ /[E-H]*            # include top-level dirs starting with E through to H
+ */db/              # include "db" subdirectories
+ */db/Backups/      # include "db/Backups" subdirectories
- */                 # exclude all other directories

相关内容