循环设备文件的校验和是否可以完全重现?

时间:2011-09-29 08:16:12

标签: linux loops timestamp checksum mount

如何将文件作为循环设备挂载和卸载,之后是否具有相同的MD5校验和? (Linux)的

这是工作流程:

  1. 我拍摄了一份包含已准备好的修复模板文件的新副本 ext2 根文件系统。
  2. 该文件以mount -t ext2 <file> <mountpoint> -o loop,sync,noatime,nodiratime
  3. 挂载
  4. (这里,将来会添加一些文件 - 但暂时忽略它并专注于mount / umount)
  5. umount
  6. 获取文件的MD5总和。
  7. 每次执行完全相同的步骤时,我都期望得到相同的,可重现的校验和。
  8. 但是,当我重复这个过程时(请记住:获取模板文件的副本),我总是得到一个不同的校验和。

    我一方面假设仍然在内部设置了一些时间戳(我试图用noatime选项避免这种情况),或者另一方面,Linux以我自己的方式管理文件系统没有影响力。这意味着:里面的文件和时间戳可能是相同的,但文件系统在文件中的排列方式可能不同,因此是随机的。

    相比之下,当我创建文件树的 zip文件,并且我触摸了具有已定义时间戳的所有文件时,zip文件的校验和是可重现的。

    有没有办法让我根据需要控制挂载或文件访问?

1 个答案:

答案 0 :(得分:1)

它取决于磁盘格式的文件系统。我相信ext2保持最少的挂载计数计数器 - 文件系统安装了多少时间。我不记得任何挂载选项告诉它不要写那个计数器(也许还有其他数据项),但你可以:

一个。将文件系统挂载只读。那么校验和当然不会改变。

湾更改ext2文件系统内核驱动程序以添加一个选项,以便不更改计数器和其他可能的数据位。

更有趣的问题是你感兴趣的原因是这样的选择。我认为可能有更好的方法来实现你想要做的事情 - 不管它是什么。