Delphi 中的安全文件复制

Delphi 中的安全文件复制

我最近将两个 2TB WD Caviar Black SATA 硬盘添加到带有 USB 2.0 的外部机箱中。从那时起,当我使用 Explorer 将文件从本地 C: 驱动器复制到外部驱动器时,我不得不处理偶尔发生的文件损坏问题。我要么最终无法再读取文件,要么可以读取文件,但一旦将它们复制到其中一个外部硬盘上,就无法复制。所有驱动器都经过测试并且没有问题。现在进行了一些谷歌搜索,在网上发现各种提示,这可能是我的 Vista Home Premium 32 位(已应用所有更新)的外壳存在问题。

为了避免这种文件损坏,我正在寻找将文件从一个 NTFS 文件系统复制到另一个 NTFS 文件系统的最安全方法(保留所有文件属性),包括 CRC32 检查 - 如果可能的话,不涉及 Shell。有人能给我指出一个代码片段来展示如何在 Delphi 2007 Pro 中做到这一点吗?

答案1

您的驱动器可能已采用 NTFS 格式化。

如果驱动器未标记为“快速删除”,则只能将其格式化为 NTFS。

这意味着您应该在关闭或移除 NTFS 驱动器之前正确关闭机器。

对于复制,您可以使用 RoboCopy;它没有验证,但它有一个非常快的备份模式(当您以管理员身份登录并提升到管理员令牌时可以使用它)。

XXCOPY 已验证,并且 RoboCopy/XXCOPY 的一个好比较是这里

对于我的备份,我使用具有主动检查功能的 RAID 系统。这意味着它会定期检查所有 RAID 卷的完整性。不便宜,但物有所值。

答案2

如果有人感兴趣的话:我在 Earl F. Glynn 的网站上找到了一些有趣的 Delphi 代码

http://www.efg2.com/Lab/Mathematics/FileCheck.htm

答案3

自从我在系统上重新启用 UAC 后,文件损坏问题就消失了。我之前读过关于此问题的报告(尽管它们非常模糊),似乎它确实起了作用。再次感谢大家的回复!非常感谢。

相关内容