Linuxで `fallocate --dig-holes`と `fallocate --punch-hole`の違いは何ですか?

Linuxで `fallocate --dig-holes`と `fallocate --punch-hole`の違いは何ですか?

私は--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 102文字目以降の10文字をゼロに置き換えます。a

おすすめ記事