为什么我的 rsync 过滤器复制一个包含的文件夹而不复制另一个?

为什么我的 rsync 过滤器复制一个包含的文件夹而不复制另一个?

我希望同步我的主目录及其两个子目录中名称符合某些模式的所有文件。但是,我的 rsync 命令和过滤器仅遍历其中一个子目录。

rsync -aHm --delete --include-from=/home/ftamborello/.rsync-include --exclude-from=/home/ftamborello/.rsync-exclude -e "ssh -A -t frank@frynseytv" /home/ftamborello/ :/Users/frank/Backup/

.rsync-包括:

*.pdf
*.lisp
*.scr
*.r
*.txt
*.csv
*.py
*.c
*.h
*.[0-9][0-9]
.rsync*
.autobackup.sh
Documents/
fpt-logs/

.rsync-排除:

*

Rsync 命令结果(使用 -nv):

building file list ... done
deleting .#fpt-log-2016.05.10
./
.ccl-init.lisp
.emacs.2016.06.17
.profile.2016.03.09
.profile.2016.08.05
.rsync-exclude
.rsync-include
fabfile.py
output.pdf
python-test.py
temp.txt
Documents/
fpt-logs/
fpt-logs/fpt-log-2015.12.16
fpt-logs/fpt-log-2015.12.17
...
fpt-logs/fpt-log-2016.08.19
fpt-logs/fpt-log-2016.08.22

sent 4,827 bytes  received 1,130 bytes  2,382.80 bytes/sec
total size is 3,213,954  speedup is 539.53 (DRY RUN)

我认为文档层次结构中有相当多的文件应该与包含模式匹配,例如 Documents/auto-backup-test.txt 和 cl-template.lisp,rsync 无法复制它们。

我使用这个 unix.stackexchange 帖子来开发我的代码。

Rsync 过滤器:仅复制一种模式

我缺少什么?

答案1

我再次 RTFMedrsync手册页,这次我发现了似乎是知识的关键核心:

请注意,--include/--exclude命令行选项不允许进行全方位的规则解析...

我认为这意味着指向排除/包含的文件会产生相同的结果。所以我制作了.rsync-filter文件并使用了该-F选项。现在,rsync 遍历完整的目录层次结构并按.rsync-filter预期匹配我的文件中的模式。

因此,解决方案似乎是使用过滤,而不是排除/包含,除了最简单的情况之外的所有情况。

相关内容