dd
を使用して80GBドライブをバックアップしました
dd if=/dev/sdb of=~/sdb.img
今、そのドライブ上のいくつかのファイルにアクセスする必要がありますが、「。img」をドライブにコピーして戻したくありません。
mount ~/sdb.img /mnt/sdb
も機能しません。それは返します:
mount: you must specify the filesystem type
file -s
でファイルシステムの種類を見つけようとしました
fox@shoebox $ file -s sdb.img
sdb.img: x86 boot sector; partition 1: ID=0x12, starthead 1, startsector 63, 10233342 sectors; partition 2: ID=0xc, active, starthead 0, startsector 10233405, 72517410 sectors; partition 3: ID=0xc, starthead 0, startsector 82750815, 73545570 sectors, code offset 0xc0
sdb.img
をマウントすることは可能ですか、またはdd
を使用してドライブを復元する必要がありますか?
/dev/sdb
または/dev/sdb1
ではなく/dev/sdb2
でdd
を使用すると、allがコピーされます上記のドライブのパーティションをoneファイルに変換します。
各パーティションを個別にマウントする必要があります。
ファイルからパーティションをマウントするには、最初にどこを見つける必要がありますパーティションが存在するファイル内。
file -s sdb.img
からの出力を使用して、パーティションごとにstartsectors
を見つけます。
sdb.img:x86ブートセクター。 パーティション1:ID = 0x12、スタートヘッド1、スタートセクター63、10233342セクター; パーティション2:ID = 0xc、アクティブ、スタートヘッド0、startsector 10233405 、72517410セクター。 パーティション3:ID = 0xc、スタートヘッド0、startsector 82750815、73545570セクター、コードオフセット0xc0
PartitionStartsector
1 63
2 10233405
3 82750815
X
がそのパーティションのstartsectorである単一のパーティションをマウントするには、次のコマンドを実行します。
mount ~/sdb.img /mnt/sdb -o offset=$((X*512))
したがって、2番目のパーティションをマウントするには、次のコマンドを実行する必要があります。
mount ~/sdb.img /mnt/sdb2 -o offset=$((10233405*512))
sidenote:これを実行する前に、/mnt/sdb2
が存在することを確認してください。
楽しんで!
update:回答では、イメージのセクターサイズは512
であると想定しました。参照してください この質問 =それを計算する方法について。
Linuxでは、 受け入れられた回答 内のマウントコマンドは、暗黙的にループデバイスを作成します。フルディスクイメージに正しいパーティションテーブル(カーネルが理解できる)があると仮定すると、オフセットを計算する手間を省くために losetup(8)
を直接使用することをお勧めします。また、他の answer で提案されているようなkpartx
のような追加のツールは必要ありません。基本的には次と同じことを行います。
_losetup -Prf sdb.img
_は、最初のフリーループデバイス(_-f
_)を読み取り専用(_-r
_)として画像ファイル_sdb.img
_に関連付けます。 _-P
_オプションは、カーネルにこのループデバイスのパーティションテーブルをスキャンさせ、パーティションごとにループデバイスを作成します。
だからあなたは次のようなものを得るかもしれません:
_$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 167.7G 1 loop
├─loop0p1 259:0 0 500M 1 loop
└─loop0p2 259:1 0 167.2G 1 loop
...
_
もちろん、各パーティションを読み取り専用で希望のマウントポイントにマウントできます。
_$ mount -r /dev/loop0p1 /tmp/backup_sdb1
_
すべてを読み取り専用に保つことはオプションですが、代替画像を作成する場合に適しています。
update:_-P
_オプションが追加されました 2012年にutil-linux-2.21を使用。受け入れられた回答が書かれた時間。また、これと他の回答はLinuxに固有のものであることに注意してください。 OpenBSDとNetBSDは vnconfig(8)
によって管理されるvnodeディスクを持ち、FreeBSDは mdconfig(8)
によって管理されるメモリディスクを持っています。
または、kpartx
というNiceツールを使用することもできます。 manページから:
kpartx-パーティションテーブルからデバイスマップを作成する
これは、imgファイルから直接、デバイスパーティションを使用して「疑似デバイス」を作成できることを意味します。
$ kpartx -av sdb.img
add map loop0p1 (254:2): 0 2048 linear /dev/loop0 0
add map loop0p2 (254:3): 0 31162 linear /dev/loop0 2048
$ lsblk
.
.
.
loop0 7:0 0 16.2M 0 loop
├─loop0p1 254:2 0 1M 0 part
└─loop0p2 254:3 0 15.2M 0 part
その後、/dev/mapper/loop0p2
たとえば、イメージの2番目のパーティションが必要な場合。