You need to enable JavaScript to run this app. 如何在Shell脚本中合并两个同名目录 Rsync不生效如何解决
优惠活动
大模型
产品
解决方案
定价
更多

如何在Shell脚本中合并两个同名目录 Rsync不生效如何解决

Rsync编译问题修复与目录合并方案

一、编译Rsync报错解决

  • 先清理之前的编译残留文件,避免旧配置干扰后续操作:
make clean && rm -f config.h config.log config.status
  • 执行./configure后务必检查最终输出的报错提示,不要直接执行make,多数编译失败都是因为configure阶段依赖不满足未被发现,比如依赖库版本低于当前rsync版本要求。
  • 不建议自行编译替换系统默认rsync,Ubuntu官方源自带的rsync版本已经可以满足绝大多数目录合并需求,可先执行以下命令恢复系统默认版本,避免编译版本导致的环境混乱:
sudo apt install --reinstall rsync
  • 若必须使用自定义编译的rsync,可查看编译目录下的config.log文件,定位具体的依赖缺失或版本不兼容问题,针对性解决后再重新编译。

二、使用Rsync实现目录合并的正确方法

合并目录核心注意源路径末尾的斜杠不能省略,否则会把整个源目录复制到目标目录下,而非合并两个目录的内容。以下是不同场景的使用命令,默认需求为将/source目录的内容合并到/dest目录:

  • 基础合并(源目录重名文件直接覆盖目标目录的对应文件,保留文件权限、软链接、属性等信息):
rsync -av /source/ /dest/

注意:/source/末尾的斜杠为必填项

  • 保留目标目录重名文件,仅复制目标目录不存在的文件:
rsync -av --ignore-existing /source/ /dest/
  • 对比文件修改时间,仅当源文件比目标文件更新时才覆盖:
rsync -avu /source/ /dest/
  • 预演合并效果,不实际执行文件操作,确认效果符合预期后再去掉--dry-run参数执行:
rsync -av --dry-run /source/ /dest/
  • 小体量目录如果需要交互确认每个重名文件的处理逻辑,可直接使用mv命令:
mv -i /source/* /source/.* /dest/

内容的提问来源于stack exchange,提问作者user16194927

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 22:24:04