読み取り権限を持つディスクイメージ(おそらく分割されている)があるとしましょう。ただし、ループバック*を介してインストールする権限がありません。理論的には、データは実際に存在しますが、データはすでに存在します。 Linuxカーネルに似たコード、パーティションエディタ、イメージをmount
解析し、パーティションを見つけ、ファイルシステムを解釈し、ファイルを抽出する独自のコードを書くことができます。しかし、そのようなツールはGNU / Linuxシステムにすでに存在していますか?
*実際に私はそれを処理するためのツールを作成していますsudo
。sudo
(ファイルシステムによって答えが変わるのはext2-4
私にとってより重要です。しかし、広く使用されている複数のファイルシステムへの答えが好まれます。)
答え1
7z(p7zipでは)は完全ではありませんが、多くの一般的なVMディスクイメージ、パーティションスキーム、およびファイル形式でディスクおよびファイルシステムイメージを解凍できます。 https://www.7-zip.org/リストがあります(Windowsで利用可能 - p7zipはLinux / Posixポートです)
これは通常2段階のプロセスです。
$ 7z l [raw HD image file]
Path = [raw HD image file]
Type = MBR
Physical Size = 42949672960
Date Time Attr Size Compressed Name
------------------- ----- ------------ ------------ ------------------------
..... 104857600 104857600 0.ntfs
..... 42842718208 42842718208 1.ntfs
..... 1048576 1048576 2
------------------- ----- ------------ ------------ ------------------------
42948624384 42948624384 3 files
次のステップ:
$ 7z x [raw image file] 0.ntfs
Extracting archive: [raw Image file]
ついに
$ 7z l 0.ntfs
Scanning the drive for archives:
1 file, 104857600 bytes (100 MiB)
Listing archive: 0.ntfs
--
Path = 0.ntfs
Type = NTFS
Physical Size = 104857600
Label = System Reserved
File System = NTFS 3.1
Cluster Size = 4096
Sector Size = 512
Record Size = 1024
Created = 2013-09-10 16:20:30
ID = 591300999067013540
Date Time Attr Size Compressed Name
------------------- ----- ------------ ------------ ------------------------
2013-09-10 16:20:30 ..HS. 262144 262144 [SYSTEM]/$MFT
[Lots of files]
2013-09-10 16:23:30 .RHSA 8192 8192 BOOTSECT.BAK
------------------- ----- ------------ ------------ ------------------------
2014-10-14 16:35:50 23880514 23957604 56 files, 31 folders
2013-09-10 16:20:30 1314956 1318920 3 alternate streams
2014-10-14 16:35:50 25195470 25276524 59 streams
答え2
拡張[234]
/dev/whateverのルートディレクトリにファイルがある場合foo
:
debugfs -f <(echo cat /foo) /dev/whatever | tail -n +2 > /restore/file
一般的なアプローチ
一般的なアプローチは、2つのディスクドライブ(RAWモードのファイル)で仮想マシンを作成することです。 1つは画像用(仮想マシンに読み取り専用で提供されています)、もう1つは回復ファイル用(ネットワークを使用して転送できない場合)です。文書)。
ファイルシステムに簡単にアクセスできるように、イメージから起動できる必要があります(そうでない場合:3つのディスクドライブ(1つの起動用)を持つ仮想マシンを作成します)。
マウントできないため、ファイルシステムがなくても認識できる形式でデータを作成する必要があります。
tar -cf /dev/vdc /etc/passwd
ホストシステムでは、イメージファイルを簡単に読み取ることができます。
tar -xf imagefile.img
tar
アーカイブの終わりを識別し、ファイルの残りの部分は無視してください。