GNU/Linux >> Linux の 問題 >  >> Linux

Linux のスパース ファイルの詳細情報

SOにも同様の質問があります。 @ephemient によって現在受け入れられている回答では、 ioctl の使用が提案されています fiemap と呼ばれる linux/Documentation/filesystems/fiemap.txt に記載されています .そのファイルからの引用:

<ブロック引用>

fiemap ioctl は、ユーザー空間がファイルエクステント マッピングを取得するための効率的な方法です。ブロックごとのマッピング (bmap など) の代わりに、fiemap はエクステントのリストを返します。

これがあなたが探している情報の種類のようです。ファイルシステムによるサポートは再びオプションです:

<ブロック引用>

fiemap をサポートするファイル システムは、->fiemap を実装する必要があります。 inode_operations のコールバック

SEEK_DATA のサポート と SEEK_HOLE lseek への引数 あなたがSolarisから言及したのは、manページによるとLinux 3.1に追加されたので、それも使用できます。 fiemap ioctl lseek より古いように見えるので、現時点では異なる Linux バージョン間での移植性が高い可能性があります。 Solaris に同じ機能がある場合、オペレーティング システム間での移植性が向上する可能性があります。


SEEK_HOLE を使用する sparseutils と呼ばれる Python プログラムのコレクションがあります。 と SEEK_DATA ファイルのどのセクションが穴として表され、どのセクションがデータであるかを判別します。使い方はとても簡単です。 mksparse 特定のレイアウトに従ってスパース ファイルを生成するために使用できます。

 $ echo hole,data,hole | mksparse --hole-size 4096 --data-size 4096 example
 $ du -sh example
 4.0K   example

sparsemap プログラムを使用して、レイアウトを標準出力に出力できます:

 $ sparsemap example
 HOLE 4096
 DATA 4096
 HOLE 4096

Linux
  1. Linuxファイルパーミッションの基本

  2. Linux –すべてがファイルですか?

  3. Linux のスパース ファイルとは

  1. Linuxでファイルを移動する方法

  2. Linux – Unix / linuxファイルのディレクトリ構造情報をどのように検査しますか?

  3. 「dd」コマンドを使用して Linux でスパース ファイルを作成する方法

  1. Linuxファイルのアクセス許可について

  2. Linuxテールコマンド

  3. Linuxタッチコマンド