Windows PCのDtoDリカバリー領域のバックアップ

最近のWindows PCはDtoDリカバリー領域を備えていることが多い。
そういう場合、たいていはリカバリー用のメディア(DVDとか)は付いていないことが多い。
じゃあというのでプリインストールのユーティリティーを使ってリカバリー領域のバックアップを取ろうとしたら、なんとまあDVD-Rが8枚だそうで。
「仕方ないなあ」と心を決め作業を始めてみたものの、メディアのエラーとかで終わらないよ(>_<) これって結局、MBRとリカバリー用のパーティションのデータがあればいいんでしょ? だったらLinuxのddでいいよね? そういうときってKNOPPIXだよね? ということで、手持ちのUSB接続外付けHDDにバックアップを取ろうとしたら、外付けHDDがFAT32だった! つまり4GB以上のファイルが作れないので、4GB以上のサイズのパーティションはこれではバックアップできないよ(>_<) ということで2GBずつに別けてddするスクリプトを組もう! おー!
以下、作業メモ。

  1. KNOPPIX起動用のCD-Rを作成
    KNOPPIX日本語版公式サイト http://www.risec.aist.go.jp/project/knoppix/ だとDVD用ISOファイルはすぐ見つかるが、欲しいのはCD用ISOファイル。http://www.dnsbalance.ring.gr.jp/archives/linux/knoppix/iso/ を覗いたがCD版はちょいと古いのしかない。結局、http://ftp.riken.go.jp/Linux/simosnet-livecd/knoppix/ から KNOPPIX_V7.2.0CD-2013-06-16-JA-LCR.iso をダウンロードしてCD-Rを焼く。
  2. KNOPPIX起動用CD-RでPCを起動
  3. バックアップ用の外付けHDDを接続
  4. 端末を開いてsu
  5. dfして外付けHDDを認識していること、内蔵ハードディスクは/dev/sdaであることを確認
  6. fdisk /dev/sdaして、pして現状のパーティション情報を調査
    バックアップが必要なパーティションはsda1、sda3、sda4であることを確認。(パーティションが3つも必要だとは意外。1つだと思ってた)
    あと、この情報はリストアする時にも必要なので、fdisk.txtとしてファイルに保存。
  7. MBRをバックアップ
    dd if=/dev/sda out=sda bs=512 count=1
  8. sda1をバックアップ
    dd if=/dev/sda1 out=sda1 bs=512
  9. sda3をバックアップ
    dd if=/dev/sda3 out=sda3 bs=512
    ここでエラーが起こった。調べてみると/dev/sda3は8GBなので、FAT32の外付けHDDではファイル1個に収まらないことが判明。
    仕方ないので2GBずつに別けることにした。

    dd if=/dev/sda3 out=sda3-0 bs=2M count=1024
    dd if=/dev/sda3 out=sda3-1 bs=2M count=1024 skip=1024
    dd if=/dev/sda3 out=sda3-2 bs=2M count=1024 skip=2048
    dd if=/dev/sda3 out=sda3-3 bs=2M count=1024 skip=3072
    ...

    これ、面倒だね。skipの計算、間違えそうだし。
    ということでこんな↓感じのシェルスクリプトを書いた。

    i=0
    
    while [ 1 ]
    do
      of=sda3-$i
      skip=`expr $i \* 1024`
    
      dd if=/dev/sda3 of=$of bs=2M count=1024 skip=$skip
    
      if [ ! -f $of ] ; then
        break
      fi
    
      if [ ! -s $of ] ; then
        rm $of
        break
      fi
    
      ls -l $of
    
      i=`expr $i + 1`
    done
    
  10. sda3と同じようにしてsda4もバックアップ
    スクリプトは2箇所のsda3って部分をsda4に変更する必要がある。

2GBのバックアップが45秒ほど。

さて。
たぶん、これでいいはず。
リストアは未経験なので、実はこれじゃだめかも?
たぶん、大丈夫だと思うけどなあ。

リストアする時には、MBRの512バイトを一旦書き込んでから、fdiskでパーティションをいい感じに割り当て直して、sda1、sda3、sda4を書き戻してやればよいはず。はず。


追記。
こんなことしなくてもsplitを使えば一撃だったのかもしれない。

dd if=/dev/sda3 | split -b 2G - sda3.

あるいは

dd if=/dev/sda3 | split -b 2G -a 1 - sda3.

とか。
こっちの方が100万倍綺麗。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください