如果文件长度和文件日期相同,为什么 Robocopy 会跳过更改的文件?

如果文件长度和文件日期相同,为什么 Robocopy 会跳过更改的文件?

我已经使用 Robocopy 一段时间来创建磁盘的(快速)备份。我使用的确切命令是robocopy /MIR /R:0 sourcedrive:\ targetdrive:\sourcedrivename

这应该在备份位置创建我的所有文件的精确镜像,对于几乎所有文件来说都是如此。

不幸的是,我注意到有一个大文件自创建以来从未被复制过,尽管该文件被多次修改。这是一个 200Gb 的容器,但容器的大小和容器的操作系统日期从未更新过。

为什么 Robocopy 没有在备份目标中更新此文件?更重要的是,我如何让 Robocopy 检查并复制该文件?

当我从我的备份目标执行 rsync 到下一个备份目标时,rsync 会获取这些更改。

我发现了无数其他帖子,但没有一个考虑到文件的大小和日期都没有变化,因此我提出了一个新问题。

谢谢。

答案1

Robocopy 是一款以速度为重点的实用程序。它只会检查文件大小或修改日期以检测更改。如果对每个文件进行 md5 检查,复制程序会慢很多。

然而 Robocopy 不支持此功能。

这将为您提供一些选择。

  1. 如果您使用脚本,并且 robocopy 是该脚本的一部分,请让它在复制开始之前删除该文件,以便 Robocopy 将新版本复制到该文件。

  2. 使用其他可以进行 MD5 比较的工具,例如 TeraCopy

  3. 确保定期更改修改日期。这可以使用 powershell 来完成。

从个人经验来看,我更喜欢 2,但这取决于你想要什么。这个答案只是为了给你提供替代方案,因为 Robocopy 本身不支持 md5 比较,因此不可能根据提供给它的内容找出文件是否发生了更改。因此,要么对环境进行足够的更改,以便 robocopy 能够理解它,要么使用不需要更改环境即可工作的其他工具。

相关内容