Rsync完美复制需求:远程端目录需替换为软链接,求对应参数
解决Rsync同步软链接替换远程目录的问题
我来帮你搞定这个rsync同步的困扰!你遇到的问题是因为rsync的安全机制:默认情况下,当源端是软链接但目标端对应位置是目录时,rsync不会主动替换——毕竟直接删目录风险不小。要实现把远程的bin目录删掉、同步成本地的软链接,你需要添加两个关键参数:--delete和--force,再配合你原来的参数就可以了。
完整命令示例
rsync -avPl --delete --force /你的本地挂载磁盘路径/ /远程挂载磁盘路径/
参数详解
让我拆解一下每个参数的作用,帮你理解为什么这么用:
-a:归档模式,已经包含了递归同步、保留权限、时间戳、所有者等属性,比单独用-r更全面-v:verbose模式,能看到同步的详细过程,方便排查问题-P:显示同步进度条,同时保留传输到一半的文件,中断后可以续传-l:保留软链接(这个你原来的命令已经加了,它会同步软链接本身而不是跟随软链接去同步目标文件)--delete:告诉rsync删除目标端存在但源端没有的内容。这里源端的bin是软链接,目标端是目录,rsync会判定二者类型不匹配,把目标的bin目录标记为“需要删除”--force:强制删除目标端的非空目录。默认rsync不会删除非空目录,这个参数允许它这么做,这样才能把远程的bin目录彻底删掉,再同步本地的软链接
重要注意事项
- 先模拟再执行:可以先加上
--dry-run参数(比如rsync -avPl --delete --force --dry-run ...),这样rsync只会输出要执行的操作,不会真的修改文件,确认没有误删风险再正式运行 - 备份重要数据:如果远程的bin目录里有你需要保留的内容,一定要先备份再执行命令
- 路径末尾的斜杠:注意源路径和目标路径末尾的斜杠,
/你的本地路径/表示同步路径下的所有内容,而/你的本地路径会把路径本身同步到目标端,别写错了!
内容的提问来源于stack exchange,提问作者elbarna
相关产品推荐
相关产品推荐

