You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

rsync使用--ignore-existing参数仍重复复制相同文件原因排查

macOS环境下rsync无可见差异仍触发文件复制的核心原因

你当前使用的排查手段存在明确盲区:ls -le仅能展示文件权限、所有者、基础ACL、秒级精度的修改时间,diff仅校验文件正文内容,三类rsync默认校验的元数据维度完全没有覆盖,这些差异都会触发文件复制操作:

  • 亚秒级修改时间偏差
    原生APFS/HFS+文件系统的修改时间精度为纳秒级,而USB存储常用的exFAT/FAT32文件系统时间戳精度仅为2秒(FAT32)或10毫秒(exFAT),第三方NTFS挂载工具也常出现时间戳上报偏差。这类偏差普遍小于1秒,ls默认仅展示整秒级时间,肉眼核对完全一致,但rsync会读取纳秒级精度的时间戳,存在偏差即判定文件需要更新。
  • 文件系统标志(file flags)差异
    macOS支持通过chflags为文件设置锁定、禁止修改、隐藏等专属标记,这部分信息ls -le不会输出,必须添加-O(大写O)参数才能查看。系统自带的rsync集成了苹果官方补丁,归档模式(-a)下默认校验该属性,只要两边flags不匹配,即使内容、权限、修改时间完全一致,也会触发复制。
  • 扩展属性(xattr)与Mac专属元数据差异
    macOS下的文件会附带大量扩展属性,包括下载文件的隔离标记(打开时弹出“来自互联网”提示的依据)、Finder标签/颜色标记、Spotlight注释、旧版资源分支数据等。这类信息完全不会出现在ls -le的输出中,需要通过xattr -l <文件路径>命令查看。苹果定制版rsync默认校验这部分元数据,目标文件缺失对应属性或属性内容不一致时,就会判定文件需要同步。

对应解决方案

  • 时间戳精度问题:执行stat -x <源文件路径>和stat -x <目标文件路径>,对比Modify time字段的精确值确认偏差。确认后为rsync添加--modify-window=2参数,允许2秒以内的修改时间误差,即可适配低精度文件系统,消除误判。
  • 文件flags差异:执行ls -lO <源文件路径>和ls -lO <目标文件路径>对比flags列,不需要同步flags时为rsync添加--no-flags参数跳过校验即可。
  • 扩展属性差异:执行xattr -l <源文件路径>和xattr -l <目标文件路径>对比属性列表,不需要同步xattr时为rsync添加--no-xattrs参数跳过校验;需要同步扩展属性时,确认rsync添加了--xattrs参数(Homebrew安装的第三方rsync默认不开启该参数)。
  • 第三方NTFS驱动导致的元数据上报异常:可临时添加--size-only参数,仅通过文件大小判定是否需要同步,规避驱动上报不准的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 13:36:17