想象一下使用以下命令创建的文件:
truncate -s1T file
echo test >> file
truncate -s2T file
我现在有一个2 tebibyte文件(在磁盘上占用4kiB),"test\n"
中间写着。
我将如何"test"
有效地恢复它,而不必读取整个文件。
tr -d '\0' < file
将给我结果,但这将需要几个小时。
我想要的是仅输出文件的非稀疏部分的东西(仅在"test\n"
或更可能的情况下,分配在存储该数据的磁盘上分配的4kiB块)。
有API可以找出分配文件的哪一部分(FIBMAP,FIEMAP,SEEK_HOLE,SEEK_DATA ...),但是哪些工具可以公开这些内容?
便携式解决方案(至少支持这些API的OS)将受到赞赏。
@glennjackman,
—
斯特凡Chazelas
tr
它比起仍然读取整个文件并执行更多的操作要多,而不仅仅是删除NUL字节。
strings
吗?