rsync的--include-from配置未生效,请求排查问题原因
解决rsync同步规则不生效的问题
你的rsync配置和命令存在几个关键问题,导致规则未按预期生效:
核心错误点
路径匹配逻辑错误:
你在include配置中使用了系统绝对路径(/home/developer/...),但rsync处理--include-from规则时,是相对于你指定的源目录(/home/developer/)来匹配路径的。这些绝对路径规则根本匹配不到任何文件,导致最后- *的排除规则完全失效,最终同步了所有内容。目录递归规则缺失:
对于.kube这类目录,仅写+ /home/developer/.kube只会匹配目录本身,不会同步其下的子文件和子目录,必须添加递归规则才能完整同步目录内容。通配符限制过严:
save_only_this_folder/*.*只能匹配该目录下带扩展名的文件,会漏掉无扩展名的文件和子目录。
修正后的配置与命令
1. 调整include配置文件(/home/developer/preparation/rsync_include.lst)
+ save_only_this_folder/ + save_only_this_folder/** + .gitconfig + .kube/ + .kube/** - *
规则说明:
+ save_only_this_folder/:先允许目标目录本身(rsync需要先匹配目录才能访问其下内容)+ save_only_this_folder/**:允许该目录下所有文件、子目录递归同步(若不需要递归,可改为+ save_only_this_folder/*,仅同步一级内容)+ .gitconfig:单独指定允许同步的文件+ .kube/:允许.kube目录本身+ .kube/**:允许.kube目录下所有内容递归同步- *:排除所有未被前面规则匹配的内容
2. 保留原命令(路径逻辑已修正)
rsync -azhv --dry-run --include-from=/home/developer/preparation/rsync_include.lst /home/developer/ /mnt/c/Work/WSL/save/ubuntu20.04/home
测试时保留--dry-run参数确认输出符合预期,之后去掉该参数执行实际同步即可。
内容的提问来源于stack exchange,提问作者aBanhidy
相关产品推荐
相关产品推荐

