校验和与验证系列科普(三)
- By : Titivillus -
- Category : 科普版块
- Tags: 校验和, 科普
比较校验和软件
为这项工作选择合适的工具是个好主意,而测试一下不同的工作流软件也是个好主意,因为这样你就会对确保数据完整性和准确性有把握。
不过,要记住一件事……
计算机的设计理念是在进行数据处理流的同时结合多个缓存。它们存在于硬盘、连接端口和计算机操作系统中。这种设计的目的是加快返回“已知”最近访问项目的数据请求。
想想你的浏览器是如何缓存你之前访问过的网页的。缓存浏览器历史记录允许浏览器在再次请求时快速显示最近访问过的页面,而不必每次重新下载整个页面。
苹果操作系统也有类似做法(硬盘本身也是如此)。最近访问的项目会被保存在一个周转的RAM缓存中,以方便快速显示。
因此,当软件要求操作系统从输出硬盘读取最近文件时,Mac OS会说:“噢!不用再去载一遍了,我这儿有一份呢!”然后直接返回缓存信息。如果你不需要比较和验证一份文件和它的副本,那这还挺不错。但它只是对源文件的重复,不是从输出磁盘新读取全部文件内容,所以对验证来说毫无意义,甚至在比较文件大小方面也不具安全性。
事实上,在苹果操作系统中,如果不明确绕过缓存,你就无法获得文件的硬盘(而不是从缓存中的)读取结果——了解这种做法的人只有经验丰富的程序员,或者那些对校验算法实际工作原理非常感兴趣的人——比如你!
要测试不同的备份软件,在Mac上打开活动监视器(Activity Monitor)程序。启动它,然后点击“磁盘”(Disk)。然后打开终端(Terminal)程序,输入命令“SUDO PURGE”刷新缓存。
准备好后,进行一次合理大小的装载——比如15 GB。然后查看右下表中的磁盘读写大小。为了进行校验和比较,读的大小应该是写的两倍。因为你只从源读取一次,向输出硬盘写入一次,然后再从输出硬盘读取回来计算校验和。
如果你有打算用在工作流中的软件或工作方法,而它没有让读的大小为写的两倍,那它其实没有检索磁盘内容来和源文件做比较,安全性也逊于真正的校验和比较。换句话说,文件在最终目标位置的拷贝实际上可能和源文件不匹配——如果你真正关心数据完整性,那这就很成问题了。
记住,如果一件事看起来好得难以置信——那它可能真的就不可信。
出处:Studio Daily
翻译:Charlie | 盖雅翻译小组
系列阅读:校验和与验证系列科普