鉴于目录的大小,我不得不将 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