ディレクトリのイメージファイルを作成するには?

ディレクトリのイメージファイルを作成するには?

ディレクトリのイメージファイルを作成するには?たとえば、

  • 端末コマンドでフォルダからISOイメージを生成する説明genisoimageディレクトリ用のisoイメージファイルを生成できます。私はディスクボリューム用のイメージファイルを作成する方法だけを知っています。genisoimageまず、ディレクトリ用のループデバイスまたはブロックデバイスファイル(CD / DVDに似ています)を作成し、次にループデバイスまたはブロックデバイスファイルのイメージファイルを作成しますか?これは、最初にイメージファイル用のループデバイスを作成する必要があるディレクトリにイメージファイルをインストールする2段階のプロセス(コマンドと同様)とは正反対ですかlosetup

  • ディレクトリのext4イメージファイルを生成するためのコマンドはありますか?これも2段階のプロセスですか?

ディレクトリのアーカイブファイルを作成することもできます。これら2つのプロセスはどう違いますか?ディレクトリのイメージファイルの生成にはループデバイスが含まれますが、ディレクトリのアーカイブファイルの生成にはループデバイスは含まれませんか?

答え1

ext4に対応するツールはありません。あなたが言ったようにループデバイスを使うと、同じ結果が得られます。

  1. ファイルを保存するのに十分な空白のイメージファイルを作成します。 -truncate -s 1G my.img
  2. フォーマットしてください -mkfs.ext4 my.img
  3. ループデバイスとしてインストール -mount -oloop my.img /mnt
  4. マウントされたファイルシステムにファイルをコピーします。 -cp -a directory/. /mnt/.
  5. 縮小ext4ファイルシステムを最小サイズで使用してくださいresize2fs -M my.img。ファイルシステムの長さとファイルシステムのブロックサイズが何ブロックかを示します。
  6. これで、適切なコマンドを使用してファイルを小さいサイズに切り捨てることができますtruncate

ただし、Linuxカーネルには書き込み可能なISO9660実装がないため、このgenisoimage方法ではありません。 ISO9660用の縮小ツールも確かにありません:-)。

ISO9660を書き込み可能なファイルシステムとしてマウントすることは、この目的のために設計されていないため、実用的ではない可能性があります。たとえば、ディスクの空き領域を効率的に追跡したり、削除によって残りの領域を収容するために作成されたファイルを断片化したりする構造がない場合があります。


genisoimageこれは、TAR または ZIP アーカイブファイルの生成と非常に似ています。ファイルシステムイメージには、指定されたすべてのファイルのコピーが含まれます。サイズは、指定されたすべてのファイルのサイズを合計したものとほぼ同じです。しかし、これらのアーカイブ形式の間にはいくつかの対照があります。ファイルシステムのデータ構造は、ディスクデバイスのセクタ(2048バイト)に整列され、個々のファイルを効率的に読み取ることができます。アーカイブ形式は、これらの大きな境界に従わない。アーカイブはコンパクトに保つ​​ために圧縮されます。また、すべてのファイルを一度に抽出するのが一般的です。アーカイブ形式を使用するには、より多くの努力が必要であると予想されます。探す別々のファイルを作成し、その内容を読みます。

私はこれをカタログイメージと呼びません。語源的には、実際のブロックデバイスのイメージではないようです。しかしそれは同じです滞在データCDROMのコピーで作成されたイメージファイル。マンページに示すように -

genisoimage特定のディレクトリツリーのスナップショットを撮ってブロックデバイスに書き込むと、ISO9660および/またはHFSファイルシステムに対応するバイナリイメージが作成されます。


CD-R(およびDVD-R)専用技術が作成された理由の1つは、これが特別な場合であるためです。

作成時に検索できません。さらに、CD-R記録プロセスは当然連続的なデータストリームの入力を必要とする。データが十分に早く提供されず、データが使い果たされると、書き込みが失敗し、ディスクが無駄になります。最近、多くの作家を除いてはそうです。解決策がありますこれは標準化されておらず、ディスクに書き込むには小さな間隔が必要です。

オペレーティングシステムで汎用ブロックデバイスインタフェースを使用してこれらのディスクへの書き込みを許可することは必ずしも有用ではない。 CD-Rブロックデバイスにファイルシステムを作成、マウント、およびファイルをコピーすることはできません。代わりに、私たちはより専門的なアプローチを使います。

genisoimageたとえば、光ディスクデバイスにファイルシステムイメージを直接書き込むように指示しません/dev/sr0wodim dev=/dev/sr0 -必要に応じてパイプで接続できます:-).古代では、1つの大きなファイルを読み取るとより一貫したパフォーマンスが得られたため、ファイルシステム全体を事前にイメージングする方が安全でした。つまり、読み込み速度が遅すぎる可能性が低く、Writerのデータが不足して失敗する可能性が少なくなります。

答え2

既存のファイルシステムをイメージングする場合、これは通常、既存のファイルシステムの基本ブロックデバイスコンテンツの正確なブロック固有コピーを作成することを意味します。実際には正確なコピーですそのまま保存イメージング中。

一つISOイメージ少し違います。これは、そのデータから作成されたCD / DVD /ブルーレイディスクコンテンツの正確なブロック固有のコピーになるように、任意の方法で定義された一連のディレクトリとファイルで構成されるファイルです。する。これには、ISOイメージの作成時に生成されたISO9660ファイルシステムメタデータが含まれます。

ISOイメージフォーマットが存在する理由は、CDレコーダデバイスが最初にシーケンシャルアクセスモードでのみディスクに書き込むことができたためです。書き込み中は停止できません。ディスクを傷つけずに。したがって、ここに1つのファイルを書き込めず、進行中にコンパイルすることはできません。書き込みを実行する直前に、CD-ROM(またはオーディオCD)を構成するすべてのファイルとすべてのメタデータを事前に指定する必要があります。レーザー その後、最後のバイトがディスク全体に一度に書き込まれるか、少なくともデータまたはオーディオトラック全体に書き込まれます。これは、プレスオーディオCDとCD-ROMの大量生産に適しています。

(以降、CD-Rが登場し、650MiBを全て記録しなくてもディスク全体を無駄にしなければならないという不便さが発見され、マルチセッションCD記録が開発されました。後でさらにスムーズに記録できるようになりました。書き込み開始/停止技術を使用すると、CD-RWパケット書き込みの開発が可能になり、それを最適化するためにUDFファイルシステムが開発されましたが、意見が異なります。

フルファイルシステムでイメージファイルを作成できるのと同じ方法で、ディレクトリからイメージファイルを作成することはできません。ファイルシステムイメージには、割り当てられたブロック、利用可能なブロック、ファイルシステムを含むブロックデバイス内の各ファイル、およびディレクトリ内の各ブロックの物理的な場所を記述するファイルシステムメタデータが含まれます。この情報は、残りのファイルシステムの文脈でのみ意味があります。

ファイルシステムの残りの部分をコピーせずにその情報をコピーしようとすることはほとんど役に立ちません。これらのイメージから新しいファイルシステムにファイルを復元するときは、元のブロック位置情報を無視し、ファイルシステムドライバにそれに応じてファイルとディレクトリを配置する必要があります。ブロックが使用可能なターゲットファイルシステムに移動します。そうしないと、「イメージ」を復元するときに既存のファイルおよび/またはディレクトリが上書きまたは破損する可能性があります。

したがって、ファイルシステム全体ではなくディレクトリを「イメージ化」する場合(相対)、パス名、ファイルとディレクトリの所有権、権限とその他の属性、ファイル内のデータのみを保存するのが合理的です。これに最適化されたファイル形式を開発すると、アーカイブファイル:例えば.tarファイルです。概念に圧縮を追加すると、ファイル.tar.gzまたは.zipさまざまな圧縮アーカイブファイル形式のいずれかが生成されます。

循環機器は不要作るイメージファイル:ファイルシステムのイメージを作成するには、ファイルシステムを含むブロックデバイスのすべてのブロックを最初から最後まで読み込み、ファイルに書き込んでファイルシステムがイメージされているイメージであることを確認するだけです。イメージング中は変更されません。

循環装置は以下を可能にします。コンテンツにアクセス「実際の」ブロックデバイスに書き込むことなく画像ファイルを作成します。

関連情報