为了确保数据不丢失,我通常会选择要保留的文件,一旦我连接了大型(以字节为单位,而不是以重量为单位)外部硬盘(通常是 2TB,现在通常是 USB3),我就会使用通常的拖放方法来移动将文件复制到备份驱动器。
然后,稍后我可能会将内容再次复制到第三个硬盘上。
一切都很临时。
我知道所有“更好”的方法,但我更关心实用的方法。例如,使用单个外部硬盘,这意味着我有一个 2.5 英寸外部 USB3 驱动器,我将其与 MacBook Pro 一起放在包里,这样我就总共有 2TB 外部存储空间 + 256GB 本地存储空间。
任何具有更多冗余的东西都必然会增加设置的体积。与物理体积和 USB 闪存相比,2.5 英寸一直是传输速度和容量的最佳选择。为了获得适当的冗余,我现在需要携带两个外部驱动器。我只是知道,我最终不会正确地完成这项工作,将两个驱动器都插入。
其他“更好”的方法是使用各种程序,这些程序总是花费巨额资金,迫使您遵循某些工作流程或帮助您备份整个驱动器。我通常发现我不需要这些。但是,我仍然愿意接受建议,特别是一些有助于通过哈希处理在传输/备份后检查文件的建议。
回到手头的问题。在 Windows (7、8、8.1) 或 OS X (10.8、10.9) 中,当我告诉 Explorer (或 Finder)移动从本地磁盘到外部挂载磁盘的巨大目录,操作系统是否对文件进行哈希处理复制后,删除原始内容之前?
期待得到一些答案,是的,我知道 rsync。是的,我将 Time Machine 与我刚才提到的这个外部硬盘一起使用(它是 2TB 磁盘上的 500GB 分区)。我知道 Time Machine 在后台使用 rsync。问题是 Time Machine 将开始丢失您的资料,并且您必须分配大量空间才能合理地预期一切可恢复。如果您有一个 4GB 的文件并在其中编辑了 2 个字节,Time Machine 将在下次备份时占用额外的 4GB(并花费必要的时间来复制所有内容)。这些只是我所知道的使 Time Machine 远远不够完美的几个特点。不过,我很乐意让它在 500GB 分区上玩一玩。
重要文件(忽略 Git 服务器中已有的所有源代码)的流动情况如下:首先,它只在本地磁盘上,每隔几天就会进入 Time Machine 分区。最终,随着 Time Machine 分区填满,过去图像的粒度降低,它可能会从 Time Machine 分区中消失。每隔几周,我都会手动挑选出占用大量本地空间但我不会使用的文件,然后我会移动将其复制到外部驱动器上的分区。现在它作为一份副本存在,并且只存在于外部驱动器上。如果我真的需要这些数据,我也会将数据存储在另一个位置。
如果确实如此,告诉操作系统移动如果文件在交付时无法验证内容,那么我必须彻底更改协议。这是因为如果目标媒体有故障,那么数据肯定会损坏。
在写这个问题的过程中,我开始觉得我问错了问题。也许更明智的做法是始终使用两个备份目标,并将协议从 1 次移动、1 次复制更改为 2 次复制和 1 次删除。这无疑可以提高完整数据保留的保证。
然而,在删除/移动之前执行散列也非常重要,因为这是唯一的方法知道目标介质没有故障!
也许我想要的是一个 rsync GUI,或者更好的是,shell 扩展/插件,可以让我执行诸如“复制和哈希”和“移动和哈希”之类的操作,就像我在 Explorer/Finder 中对目录进行常规复制/移动一样。
对此也有一些变化:插入两个外部磁盘后,我想发出“复制到 2 个目标并进行哈希处理”。这将防止源数据不必要地被哈希处理两次,就像两次连续复制一样。
答案1
我可以确认 Windows 7 不会验证复制/移动操作的正确性,因为我刚刚遇到了将文件复制到外部驱动器时出现损坏的情况。
至于解决方法,就 Windows 而言,你可以使用万亿拷贝--我刚开始使用它,它似乎运行良好(只需先在首选项中启用“复制后始终检查”)。它还可以进行 shell 集成,虽然我还没有找到指定多个复制目标的方法,但您可以在第一次复制完成后手动选择要复制到的另一个目标,在这种情况下,它会记住源文件的哈希值。如果您认为该功能很重要,也许您可以联系作者并请求该功能。