想象一个用以下方式创建的文件:
truncate -s1T file
echo test >> file
truncate -s2T file
Run Code Online (Sandbox Code Playgroud)
我现在有一个 2 tebibyte 的文件(在磁盘上占用 4kiB), "test\n"写在中间。
我将如何"test"有效地恢复它,即无需读取整个文件。
tr -d '\0' < file
Run Code Online (Sandbox Code Playgroud)
会给我结果,但这需要几个小时。
我想要的是只输出文件的非稀疏部分的东西(所以只在上面 "test\n"或更可能的是,在磁盘上分配的 4kiB 块存储该数据)。
有API可以找出文件的哪一部分被分配(FIBMAP、FIEMAP、SEEK_HOLE、SEEK_DATA...),但是哪些工具可以公开这些?
一个可移植的解决方案(至少对于支持这些 API 的操作系统)将不胜感激。