私は--dig-holes
スパースファイルを生成することを完全に理解しています。つまり、ファイルに脆弱性がある場合、--dig-holes
オプションはその脆弱性を削除します。
non-sparseという大きなファイルがあるとし、非常に簡単な方法で見てみましょう。
まれではありません:
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
使用可能なスペースを0(空)に割り当て解除します。ここで実際のファイルサイズは変更されません(保存されています)。
それでは、--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
(論理的または言語的な違いではないことをお知らせします!)?
ベストアンサー1
--dig-holes
ファイルを読み取るときに決定されたように、ファイルの内容は変更されません。単に穴に置き換えることができる連続ゼロを識別します。
--punch-hole
そのオフセットにファイルが含まれているかどうかに関係なく、ファイルに穴を開けるには、および--offset
引数を使用します。ファイルにゼロ以外の値が含まれていても機能しますが、ファイルの内容は--length
変化だから。サンプルファイルを考えると、実行時にfallocate --punch-hole --offset 2 --length 10
2文字目以降の10文字をゼロに置き換えます。a