我试图识别与特定文件绑定的块并向它们写入零。我已经发现了几种方法做到这一点到磁盘上的可用空间,但到目前为止,我还没有发现任何下滑做的建议如下:将零写入文件块
- 识别块文件
- 写入零到那些块。
这是针对虚拟化系统的目的。该系统可以重复数据块被识别为相同。这用于减少驱动器上客户操作系统使用的空间。
当前这是通过使用dd
将零写入驱动器的可用空间来完成的。然而,这对VMWare系统有副作用,导致来宾操作系统驱动器使用它已经被分配的整个磁盘空间,这是从所有字节被写入的系统上的那个点开始的。
我试图识别与特定文件绑定的块并向它们写入零。我已经发现了几种方法做到这一点到磁盘上的可用空间,但到目前为止,我还没有发现任何下滑做的建议如下:将零写入文件块
这是针对虚拟化系统的目的。该系统可以重复数据块被识别为相同。这用于减少驱动器上客户操作系统使用的空间。
当前这是通过使用dd
将零写入驱动器的可用空间来完成的。然而,这对VMWare系统有副作用,导致来宾操作系统驱动器使用它已经被分配的整个磁盘空间,这是从所有字节被写入的系统上的那个点开始的。
编写能够安全修改卸载文件系统的代码需要付出极大的努力。除非没有其他选择,否则应予以避免。
你基本上有两种选择,使容易修改文件系统:
这样,您可以使用(来宾或主机)操作系统的文件系统代码,而不必自行滚动。 :-)如果您可以使用这些选项中的一个,下面列出的代码片段将填充用零文件:
import os
def overwrite(f):
"""Overwrite a file with zeroes.
Arguments:
f -- name of the file
"""
stat = os.stat(f)
with open(f, 'r+') as of:
of.write('\0' * stat.st_size)
of.flush()
这看起来正是我所需要的。 – Drahkar
我不知道 - 这看起来可怕的低级别的给我;不像Python这样的高级语言看起来适合什么。如果本机Python允许对硬件进行这种访问,我会非常惊讶。 –
带上你的潜水装备并潜入深海C. –
我担心这最终会成为共识。是否有人可以为此发布最终答案,以便我可以接受并解决问题? – Drahkar