使用 rsync 在 windows 服务器之间迁移文件:Excel 电子表格的问题

使用 rsync 在 windows 服务器之间迁移文件:Excel 电子表格的问题

我们已经将大约 220 GB 的数据从 Windows 2003 Server 迁移到 Windows 2008 Server,由于复制这些数据需要时间,而且需要让用户能够使用这些数据,所以我想出了rsync在 Ubuntu 服务器上使用以代理迁移的想法。(我可能已经选择了合适的 Windows 解决方案 - 但我发现这些应用程序对于这种一次性解决方案来说有点贵 - 而且权限不是问题)。

一切都很好 - 今天我正在进行最后一次同步并使用 diff 确认新服务器是最新的,但我注意到 Excel 电子表格(.xls)有一个奇怪的事情。

rsync 将之前同步中已复制的 Excel 电子表格的每个实例标记为“已更新”。但是,当我运行 diff 时,系统提示文件不同。我正在手动复制它们,因为文件数量很少,但我想知道是什么原因造成的。

整个 220 GB 树中的其他文件类型都没有出现过这样的问题 - 只有 Excel/xls 文件。如果有人能给出解释就太好了。

答案1

我同意@Zoredache,Robocopy 就是你所需要的。

尝试从您的 2008 服务器执行此操作,将一个目录复制到另一个目录;包括安全性、属性和时间戳...

ROBOCOPY /SEC \\source\share\folder \\destination\share\folder 

复制上述所有内容以及所有者和审计信息...

ROBOCOPY /COPYALL \\source\share\folder \\destination\share\folder

更多信息...


如果您想继续使用 rsync,请尝试 --checksum 开关。根据rsync 手册页, “Rsync 使用“快速检查”算法(默认情况下)查找需要传输的文件,该算法查找大小或上次修改时间已更改的文件。” 虽然我不确定为什么 rsync 不会注意到文件上的时间戳变化,但 Excel 文件的大小在编辑之间保持不变是完全有可能的。

答案2

rsync 使用时间戳。也许 Excel 没有设置最后修改时间?

在这种情况下,更好的选择可能是在 rsync 中使用“--checksum”标志。这样,所有文件都将被扫描。这并不意味着所有文件都会被一次又一次地传输,只会传输更改部分,但这意味着每次都必须扫描所有文件。

它们还有其他选项:“--ignore-times”和“--size-only”(我不知道区别),但与--checksum相反,如果文件大小匹配,则会跳过文件而不先检查其内容。

相关内容