我完全理解--dig-holes在本地创建一个稀疏文件。也就是说,如果文件有漏洞,--dig-holes选项将删除这些漏洞:
让我们以一种非常简单的方式来看待它,比方说,我们有一个名为非稀疏的大型文件:
非稀疏的:
aaaaaaaaaaaaaaaaaaaaaaaaaaaa
\x00\x00\x00\x00\x00\x00\x00
\x00\x00\x00\x00\x00\x00\x00
\x00\x00\x00\x00\x00\x00\x00
bbbbbbbbbbbbbbbbbbbbbbbbbbbb
\x00\x00\x00\x00\x00\x00\x00
\x00\x00\x00\x00\x00\x00\x00
cccccccccccccccccccccccccccc非稀疏中有许多零,假设交错零以千兆字节为单位.fallocate --dig-holes去分配实际文件大小保持不变(保留)的零(洞)可用空间。
现在,有了--punch-hole,它到底做了什么?我读了手册页,还是不明白:
-p, --punch-hole
Deallocates space (i.e., creates a hole) in the byte range
starting at offset and continuing for length bytes. Within
the specified range, partial filesystem blocks are zeroed,
and whole filesystem blocks are removed from the file.
After a successful call, subsequent reads from this range
will return zeroes.创建洞,这与--dig-hole选项相反--看起来是这样的,为什么挖洞不等于挖洞呢?!帮助!我们需要一个逻辑学家:)。
这两个选项的命名在语言上是同义的,这可能会造成混淆。
--dig-holes和--punch-holes在操作上有什么区别(请不要在逻辑上或语言上!)
发布于 2017-09-04 13:03:46
--dig-holes不会像读取文件时所确定的那样更改文件的内容:它只是标识可以用漏洞替换的0的运行。
--punch-hole使用--offset和--length参数在文件中打孔,不管该偏移量包含什么:即使文件中包含非零,但文件的内容会因此发生变化。考虑到您的示例文件,运行fallocate --punch-hole --offset 2 --length 10将将10个a字符替换为零,从第二个字符之后开始。
发布于 2017-09-04 13:03:12
简言之:
--dig-holes在不修改其内容的情况下使文件稀疏(如读取它的程序所看到的)。--punch-hole在文件中创建一个漏洞,可能会修改现有数据。不同之处在于,--dig-holes分析可以使文件稀疏的区域(如果提供的话,使用--offset和--length来指示要分析的文件中的范围),而--punch-holes则使用--offset和--length实际上将文件的一部分为零以创建一个洞。
还请注意复数“挖洞”与单数“穿孔”。
来自手册,关于--dig-holes:
您可以将此选项考虑为执行
cp --sparse,然后将目标文件重命名为原始文件,而不需要额外的磁盘空间。
https://unix.stackexchange.com/questions/390248
复制相似问题