web-dev-qa-db-ja.com

エントリディスクイメージからddを使用して、未割り当て領域または特定のパーティションに復元します

エントリディスク用にddを使用してWindows 10のイメージを作成し、Ubuntuリカバリモードから復元します

Windowsを復元する場合、hddを消去し、すべてのパーティションを削除します

wget -O- 'http://your_webhosting.com/Windows10template.img.gz' | gunzip | dd of=/dev/sda

画像サイズは5GB圧縮(gz形式)、20GB非圧縮です

3つのパーティションがありました

 Device     Boot     Start        End    Sectors   Size Id Type
    /dev/sda1  *         2048    1026047    1024000   500M  7 HPFS/NTFS/exFAT
    /dev/sda2         1026048  208089944  207063897  98.8G  7 HPFS/NTFS/exFAT
    /dev/sda3       208089949 1953520064 1745430116 832.3G  f W95 Ext'd (LBA)
    /dev/sda5       208090012 1953520064 1745430053 832.3G  7 HPFS/NTFS/exFAT

必要なのは、エントリディスクから作成されたイメージをsda1およびsda2のみに復元し、sda5(自分のファイル)を保持することだけでした。

Sda1とsda2を削除し、新しいパーティションsda1 100GBを作成して、イメージを復元しました

wget -O- 'http://your_webhosting.com/Windows10template.img.gz' | gunzip | dd of=/dev/sda1

しかし、何も変わっていません。パーティションは次のようになりました

Device     Boot     Start        End    Sectors   Size Id Type
/dev/sda1            2048  195311615  195309568  93,1G 83 Linux
/dev/sda3       208089949 1953520064 1745430116 832,3G  f W95 Ext'd (LBA)
/dev/sda5       208090012 1953520064 1745430053 832,3G  7 HPFS/NTFS/exFAT

通常の作業方法でhddを完全に消去しました。 1つのパーティションのみまたは未割り当て領域に復元するための作業方法が必要です

/dev/sda1

ddでこれを行う方法

UPDATE

$ fdisk -l Windows10template.img
Disk Windows10template.img: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x266de740

Device                 Boot   Start      End  Sectors  Size Id Type
Windows10template.img1 *       2048  1026047  1024000  500M  7 HPFS/NTFS/exFAT
Windows10template.img2      1026048 41940991 40914944 19,5G  7 HPFS/NTFS/exFAT
3
ezak

ドライブバックアップイメージのパーティション境界は現在のディスクレイアウトのサブセットと整列するため、gunzip出力から関連部分を切り取り、/dev/sdaの適切な部分に書き込むのは比較的簡単です。 ddを使用しますが、他の人のデータを上書きするだけであなただけを助ける答えを書くつもりはありません。あなた自身にとっても、間違ったオフセット計算を行ったり、同じ結果に間違った数値を入力したりする大きなリスクがあります。

代わりに、十分な大きさの記憶媒体にドライブイメージを解凍し、その上で操作することをお勧めします。回復モードでも可能です。ただし、グラフィカルユーザーインターフェイス(ライブDVD/USBなど)でこれを行うと、端末でこれのほとんどを行う場合でも、はるかに簡単です。

/dev/sda5上のファイルシステムには、少なくとも25 GB(圧縮および解凍されたバックアップイメージを保持するのに十分)の空きがあると想定しています。

  1. ファイルシステムを/dev/sda5にマウントします。

    • 動作する端末で:

      udisksctl mount --block-device /dev/sda5 --options rw
      

      udisksctlは、ドライブがマウントされた場所を示します。

    • または、ファイルマネージャまたはGnomeディスクを使用してファイルシステムをマウントできます。

    マウントポイントは/media/ubuntu/my-dataにあると仮定します。実際のマウントポイントに従って次のコマンドを調整します。

  2. Webブラウザーまたはお気に入りのHTTPクライアントを使用して、以前にマウントしたファイルシステムに圧縮ドライブイメージをダウンロードします。 g .:

    wget -P /media/ubuntu/my-data 'http://your_webhosting.com/Windows10template.img.gz'
    
  3. イメージを解凍し、出力を同じファイルシステムに保存します。 File-Rollerなどのアーカイブマネージャーまたはコマンドラインツールを使用できます。 g .:

    gunzip /media/ubuntu/my-data/Windows10template.img.gz
    
  4. 解凍されたドライブイメージのループデバイスをセットアップします。

    Sudo losetup -f --show /media/ubuntu/my-data/Windows10template.img
    

    losetupは、ループデバイスへのパスを表示します。 /dev/loop7であると仮定します。実際のデバイスパスに応じて、次のコマンドを調整します。

  5. カーネルに、ループデバイス上の(ドライブイメージによって裏付けられた)パーティションテーブルを検出するように指示します。

    Sudo partprobe /dev/loop7
    

    カーネルは、検出されたパーティションに追加のブロックデバイスノードを追加します。 e。 /dev/loop7p1および/dev/loop7p2

  6. 以前に公開されたパーティションを個別にターゲットデバイスにコピーします。 Gnome DisksやGParted、またはddなどのパーティションマネージャーを使用できます。後者の場合、次のようになります。

    Sudo dd if=/dev/loop7p1 of=/dev/sda1 bs=8M
    Sudo dd if=/dev/loop7p2 of=/dev/sda2 bs=8M
    

    正しいターゲットデバイスパスを入力したことと、/dev/sdaが実際にあなたが思っているとおりであることを再確認してください!システムのリブート後もブロックデバイスに同じ名前を再割り当てするのにカーネルに頼らないでください! =

    /dev/sdaのIDを確認するには、そのパーティションレイアウト(fdisk /dev/sdaまたはGnome Disksなど)を確認するか、/dev/disk/by-*で一意で(ほとんど)安定したデバイス識別子を使用します。

  7. /dev/sda1および/dev/sda2に目的のデータが含まれていることを確認します。

  8. できました。 Windowsを再起動するか、何でもします。

  9. いつでも好きなときに、残ったドライブイメージをクリーンアップします。ループデバイスを削除します(その間に再起動しなかった場合)。そうしないと、実際に削除されません。

    Sudo losetup -d /dev/loop7
    
2
David Foerster

ddは非常に強力ですが、非常に危険なツールでもあります。 backup ddの改ざんを開始する前に、ターゲットドライブ(パーティション/ dev/sda5など)で新しくなったものは何でもください。

一番危険な方法は

  1. バックアップイメージから「すべて」を追加のドライブにクローンします

  2. 追加ドライブの最初のパーティションをターゲットドライブの最初のパーティションに複製します。

  3. ただし、ドライブのヘッド(最初のmibibyte)が破損しているため、バックアップイメージからその部分をターゲットドライブにも複製する必要があります。 count=Nを使用してNブロックのみをコピーできます。デフォルトのブロックサイズは512バイトです。

別のより速く、しかしよりリスクの高い方法は、バックアップの最初の部分を、ヘッドエンドから最初のパーティションの終わりまで複製することです。

4
sudodus