【发布时间】:2011-05-13 08:38:13
【问题描述】:
如果我有一个包含许多零的大文件,我怎样才能有效地使其成为稀疏文件?
是否只有读取整个文件(包括全零,可能稀疏存储)并使用 seek 将其重写到新文件以跳过零区域的唯一可能性?
或者是否有可能在现有文件中进行此操作(例如 File.setSparse(long start, long end))?
我正在寻找 Java 或一些 Linux 命令的解决方案,文件系统将是 ext3 或类似的。
【问题讨论】:
-
第一个解决方案是在 'cp --sparse=always' 中实现的,但效率不高,需要复制文件并在之后移动。
-
@joe:那是关于从头开始创建一个稀疏文件,但我想让现有文件变得稀疏。
-
@runouni,如果漏洞足够大,也许值得拆分文件并使用文件系统删除/删除部分。
-
使文件稀疏会导致这些部分在被重复使用时被碎片化。我认为你最好预先分配整个文件并维护一个被占用的页面/部分的表/位集。也许节省几 TB 的磁盘空间不值得高度碎片化文件的性能损失。
标签: java linux file sparse-file