web-dev-qa-db-ja.com

マウントせずにディスクイメージからファイルを抽出するにはどうすればよいですか?

読み取り権限があるディスクイメージ(パーティション化されている可能性があります)があるとします。ただし、ループバック経由でマウントする権限がありません*。理論的には、データはすべてそこにあります。 Linuxカーネル、パーティションエディター、mount独自のコードに似たコードを記述して、イメージを解析し、パーティションを探し、ファイルシステムを解釈してファイルを抽出することができます。しかし、そのようなツールはすでにGNU/Linuxシステムに存在するのでしょうか?

*実際に、私はそれを扱うためのツールを書く立場にあり、(a)これらのツールのユーザーがSudoを使用できると想定したり、(b)Sudo必要ない場合があります。

(ファイルシステムによって答えが変わる場合は、ext2-4は私にとってより重要です。ただし、複数の一般的なファイルシステムをカバーする回答が優先されます。)

4
detly

ext [234]

/ dev/whateverのルートディレクトリにファイルがある場合foo

debugfs -f <(echo cat /foo) /dev/whatever | tail -n +2 > /restore/file

一般的なアプローチ

一般的なアプローチは、VMを2つのディスクドライブ(rawモードのファイル)で作成し、1つはイメージ(VM read-only )およびファイルを復元するための別のファイル(ネットワークを使用して転送できない場合)。

イメージから起動できる必要があります(そうでない場合は、VMを3つのディスクドライブで作成し、1つは起動用))。したがって、ファイルシステムに簡単にアクセスできます。

マウントできないため、ファイルシステムなしで認識できる何らかの形式でデータを書き込む必要があります。

tar -cf /dev/vdc /etc/passwd

ホストでは、単にイメージファイルを読み取ることができます。

tar -xf imagefile.img

tarはアーカイブの終わりを認識し、ファイルの残りを無視します。

2
Hauke Laging