次のコマンドを使用してドライブをバックアップできました。
pv -EE /dev/sda > disk-image.img
これはすべて順調ですが、このコマンドを使用しない限り、ファイルを表示する方法がありません。
pv disk-image.img > /dev/sda
もちろん、これはディスクにデータを書き戻しますが、これは私がやりたいことではありません。私の質問は、単にディスクに書き戻すのではなく、.img
ファイル自体をマウントする方法を教えてください。
ループを使用してマウントしようとしましたが、無効なNTFSについて不満があるようです。
$ mount -o loop disk-image.img
mount: disk-image.img: can't find in /etc/fstab.
$ mount -o loop disk-image.img /mnt/disk-image/
NTFS signature is missing.
Failed to mount '/dev/loop32': Invalid argument
The device '/dev/loop32' doesn't seem to have a valid NTFS.
Maybe the wrong device is used? Or the whole disk instead of a
partition (e.g. /dev/sda, not /dev/sda1)? Or the other way around?
マウントできるsimpleパーティションではなく、MBR(512バイト)を含むディスク全体をバックアップしたため、MBRをスキップする必要があります。
試してみてください:
Sudo losetup -o 512 /dev/loop0 disk-image.img
Sudo mount -t ntfs-3g /dev/loop0 /mnt
編集: @grawityの提案どおり:
Sudo losetup --partscan /dev/loop0 disk-image.img
Sudo mount -t ntfs-3g /dev/loop0 /mnt
他の人がすでに指摘したように
Sudo losetup /dev/loop0 /path/to/disk-image.img
ファイルへのアクセスに使用できる仮想ブロックデバイスがセットアップされますが、パーティションに簡単にアクセスできません。
ただし、その後に手動でパーティションオフセットを計算せずに、ディスクイメージファイル内のすべてのパーティションにアクセスするために使用できる別のコマンドがあります。
Sudo kpartx -a /dev/loop0
これにより、ディスクイメージ内のパーティションテーブルが読み取られ、すべてのパーティションに対して/dev/mapper/loop0p1
、/dev/mapper/loop0p2
などのデバイスが作成されます。それらを使用して、パーティションを通常どおりマウントできます。
(各パーティションが何であるかを覚えていない場合は、fdisk -l /dev/loop0
を使用してディスクイメージ内のパーティションテーブルを表示できます。fdisk
の多くのバージョンには、パーティションデバイスの名前が表示されることに注意してください。この状況では少し変わっています。)
ディスクイメージへのアクセスが完了したら、マウントしたパーティションをアンマウントし、次の2つのコマンドを使用して、この設定を元に戻すことができます。
Sudo kpartx -d /dev/loop0 # remove the /dev/mapper/loop0pN partition mappings
Sudo losetup -d /dev/loop0 # disconnect the image file from the loop device
kpartx
コマンドは、もともとマルチパスデバイス用のツールとして開発されました(SANストレージシステムで使用))が、ディスクイメージでも完全に使用できます。