2012年11月23日金曜日

メディアのバックアップを取る(dd コマンド)

発売時に購入したkobo touchを分解してみようと思い
まずはバックアップの取り方を勉強.

dd コマンド

これはメディアからイメージをそのまま取り出したりすることができるコマンドなのですが,使ったことが無いのでいまいち分からない・・・.

ググれば大抵の情報は出てくるのですが,自分で試してみないことには全てを理解することはできないので,実験してみました.

【実験】

1.使っていないUSBメモリをPCに挿し込みフォーマット
(BUFFALO製,1GB)

前方100MBをFAT32で,残り(約900MB)をntfsでフォーマットしました.
USBメモリ本体は/dev/sdd/
FAT32の領域は/dev/sdd1/
ntfsの領域は/dev/sdd2/

その後,FAT32とntfsのそれぞれに日本語で書かれたテキストファイルを保存.
(日本語なら文字化けするかどうかも確認できると思ったので)

2.各領域をアンマウント
(マウント状態でもできそうな感じでしたが念のため)

3.そしてddの実行.

(1)sdd,sdd1,sdd2をそれぞれ吸い出す.

sudo dd if=/dev/sdd of=~/hoge.dump
sudo dd if=/dev/sdd1 of=~/hoge1.dump
sudo dd if=/dev/sdd2 of=~/hoge2.dump

(2)次に各領域を削除(いわゆる未割り当て領域に)

(3a)hoge.dumpをsddにリストアしてみる
sudo dd if=~/hoge.dump of=/dev/sdd

無事にコピーが終了し,マウントすると中のテキストファイルもちゃんと読める.
バックアップを取るだけならこれで完了と言えそうです.

(3b)hoge1.dumpをsddにリストアしてみる
sudo dd if=~/hoge1.dump of=/dev/sdd

コピーが終了後,gpartedで領域を確認すると未割り当て領域のまま.
やはり失敗したかと思ったのですが,なぜかマウントできる!?
しかも中のテキストファイルも読める.プロパティを見ると,約100MBの空き領域.

・・・.

何これ・・・.意味分からん.

(3c)hoge2.dumpをsddにリストアしてみる
hoge1の場合とほぼ一緒になりましたが,
gparted上できちんとntfs領域になっていました.

つまり状態としては,最初から(1GBではなく900MBの)USBメモリに900MBのntfs領域がsdd1として作られているように見えます.もちろん中のテキストファイルもちゃんと読めます.

hoge1とhoge2の違いについての仮説
A,FAT32とntfsの違い?
B,hoge2の方は元々のサイズ(1GB)に近かったから上手く読めた?
C,gpartedの仕様でFAT32の方は読み込みに失敗しやすい?

結局よくわかりませんが,バックアップ&リストアにはhoge.dumpをsddにリストアすれば間違いなさそうです.

次回は kobo touch 分解に挑戦です.






0 件のコメント:

コメントを投稿