我完全理解--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
复制相似问题