我正在使用 Python 3 编写一些代码来备份我的硬盘。
我的问题是,某些 RAID 和其他内容会隐藏某些驱动器的第一个和/或最后一个兆字节中的内容。我想确保复制并恢复任何此类内容。第一个兆字节很容易,但我不确定如何最好地完成最后一个兆字节。
我看到有关清除最后 1MB 的旧线程,但答案大多是在 shell 中。例如,参见擦除硬盘的最后 1MB
但我想阅读并恢复它,并且我想使用Python,所以我需要一些帮助。
答案1
块设备就像普通文件一样,也有大小。您可以查询它,计算最后一个兆字节的开始位置seek
:
# assume you've already `open()`ed the file as f
# seek to end of file
f.seek(-2**20, os.SEEK_END)
last_MB_of_data = f.read()
backupfile = open("./end_backup", "wb")
backupfile.write(last_MB_of_data)
backupfile.close()
或类似的。
然而,当然,这就像块设备的启动一样,当然只是Linux看到的东西;如果硬件对操作系统隐藏了第一个或最后一个 MB,则无法规避这一点。什么都不能。
单独备份第一个和最后一个兆字节是很不寻常的——如果没有中间的东西,它们就毫无用处,而没有它们,中间的东西也毫无用处。因此,无论如何,您基本上总是会在获得这些区域的地方进行全磁盘备份;或者您只备份与数据相关的部分(即,只是相关分区,或者实际上只是文件系统提供的文件),然后这些部分是不相关的。