我正在尝试实现以下目标:
为了检查我是否正确地将所有数据从旧 NAS 同步到新 NAS,我正在执行:
rsync --rltD -hvinu /path/to/old/NAS/ /path/to/new/NAS
现在:-n 为我提供一次试运行,-ia 更改列表和 -u 应该跳过新 NAS 上所有较新的文件(我需要这样做,因为新 NAS 上已经有更新 - 人们已经在使用它了)。
上述命令给出了包含以下几个目录的列表:
.d..t
根据手册页,这意味着不会发生任何传输,但目标中的属性(即时间)将会更新。
检查受影响的目录,我可以看到目标中的目录比源中的目录更新。
所以我会
- 甚至不会在 rsyncs 输出中看到它 - 因为它应该被跳过,
- 该时间戳永远不应该更新。-u 应该处理好这个问题。
这里有 rsync 专家可以解释一下吗?我不明白什么?
顺便说一句:这是 Qnap NAS(源)和 Synology NAS(目标)上的 rsync 实现。
更新 1:
因此看起来 --update 仅适用于文件,而不适用于目录。rsync 正在执行它应该做的事情:比较大小和最后修改的时间戳,并将目标中的时间戳更新为源中的时间戳(较旧)。
我找不到将 --update 应用于目录的选项 - 但是 --omit-dir-times 会忽略目录上的时间戳。应用该选项还会导致源中较新的目录被忽略。因此,源中添加的文件将同步到目标,但其父目录时间的相应更改将不会同步。我无法想象这是 rsync 中的错误/缺陷 - 我一定是遗漏了什么?