我的问题很简单:是否有一个工具可以将文件从目录 A 复制到目录 B,同时生成所复制/读取的文件的校验和,而无需进行额外的读取/传递以生成所述校验和?
我将把几 TB 的文件从一个 HDD 复制到另一个 HDD,而不是:
- 从 HDD1 复制文件到 HDD2 (X 小时)
- 生成 HDD1 上文件的校验和(Y 小时)
- 验证 HDD2 上的文件的校验和(~Y 小时)
我正在考虑一个更简化的流程:
i. Copy files from HDD1 -> HDD2 and generate checksums of the files copied as well (Z hours)
ii. Verify checksums of files on HDD2 (~Y hours)
我的假设是 Z ~= X因为可以这样做的程序将读取完整的文件(因为它将其从一个硬盘复制到另一个硬盘),因此不需要再次读取文件只需生成其校验和。
现在我知道我的这个想法可能行不通,例如,如果操作系统使用 DMA 来复制文件,并且我不确定 Windows 7 使用什么技术将文件从一个 HDD 复制到另一个 HDD。
任何有关此方面的建议都将受到赞赏 - 特别是加快复制过程和确保转移是 1:1,没有损坏或丢失的文件。
答案1
您的假设并不完全正确,因为较大的文件肯定不会存储在内存中,为了提高复制速度,文件会以特定大小的块进行复制(在 Linux 中,您可以调整该块的大小以加快文件操作速度)。是的,文件缓存在内存中。至于 DMA - 这项技术的全部意义在于复制文件时避免使用 CPU,并直接将其放入 RAM,因此它不会直接从 HDD 转到 HDD。DMA 代表直接内存访问。
我建议使用特定的 Linux LiveCD 解决方案(例如 rsync 或非常简单的脚本),但我知道这可能比节省时间花费更多时间,所以最好坚持使用 Windows。试试这些:
http://technet.microsoft.com/en-us/magazine/2006.11.utilityspotlight.aspx
http://www.karenware.com/powertools/ptreplicator.asp
http://sourceforge.net/projects/rsyncwin32/
http://codesector.com/teracopy
编辑
微软的 ROBOCOP 有一个更新、更强大的版本:http://technet.microsoft.com/en-us/magazine/2009.04.utilityspotlight.aspx
编辑2
如果在复制过程中发现某些内容已损坏,我会怀疑长期使用 HDD2 进行数据存储是否安全(因为只有更多扇区会损坏)。