rsync 排除目录不起作用,同时仅扫描 *.php 文件

rsync 排除目录不起作用,同时仅扫描 *.php 文件

我正在尝试同步 /home/ 内任何目录中的所有 .PHP 和 .HTML 文件。但是在 /home/site2/public_html/cache_old/ 中有一些我不想包含在同步中的 .html 文件(因此我想排除该目录及其任何子目录)

这是我能想到的最好的 rsync 命令(经过大量测试和失败):

rsync -avv /home/ /ssd/rsyncPHPsFORmtree/ --include '*/' --include '*.html' --include '*.php' --exclude /site2/public_html/cache_old/* --exclude '*'

我确信我的 rsync 命令的格式不正确,基于 rsync 运行时的输出:

[sender] showing file site2/public_html/cache_old/total_pages/s/e/a/r/c/page99.html because of pattern *.html

[sender] showing file site2/public_html/cache_old/total_pages/s/e/a/r/c/Page4.html because of pattern *.html

[sender] showing file site2/public_html/cache_old/total_pages/s/e/a/r/c/searchHe107.html because of pattern *.html

[sender] showing file site2/public_html/cache_old/total_pages/s/e/a/r/c/page18.html because of pattern *.html

谢谢

答案1

rsync -avv /home/ /ssd/rsyncPHPsFORmtree/ --exclude '/site2/public_html/cache_old/' --include '*.html' --include '*.php' --include '*/' --exclude '*'  

这应该可以做到。
归档者的顺序很重要。第一个匹配规则适用。因此,您首先排除文件夹,然后包含所需的文件,然后包含之前未排除的目录,然后排除其他所有内容。

相关内容