【发布时间】:2013-02-05 17:13:03
【问题描述】:
我正在从事一个个人项目,定期(每月)遍历我的硬盘并粉碎(用零覆盖)磁盘上当前未分配给任何 inode 的任何块。
C 考虑到项目的低级性质,似乎是最合乎逻辑的语言,但我不确定如何最好地在文件系统中找到未使用的块。我发现了一些关于 S.O. 的问题。以及与此类似的其他地方,但没有看到关于有效和有效找到这些未使用块的最佳方法的任何共识。
df 提出了任何与此类似的问题,但我不相信它具有指定精确块偏移量所需的分辨率,除非我遗漏了什么。我应该研究其他实用程序或其他方向吗?
无论我开发什么解决方案,都需要至少能够处理ext3 文件系统,最好还能够处理ext4。
【问题讨论】:
-
首先,您需要确定要支持的文件系统。
-
为了争论,假设
ext3和ext4。我会相应地修改问题。 -
你不能简单地创建一个足够大的临时文件然后删除它吗?
-
不是真的,@AkiSuihkonen。目标是删除从系统中“删除”的所有文件的记录。拥有一个大的
tmp目录意味着所有文件,包括未删除的文件,都将被删除。 -
我不关注。临时文件将如何占用可用空间以外的任何东西?还有其他问题,例如,如果设备上暂时没有可用空间,某些守护进程(或应用程序)可能会因错误而终止并损坏打开的文件。
标签: c linux filesystems