プリインストール済のディスクをバックアップ2007年08月27日 13時02分19秒

新規でも中古でも、PC を手にいれたら Windows だけが動くことなどない。しかし、ディスクは既に Windows に占拠されているのである。そうなるとディスクの要領を FreeBSD 用に空ける必要がある。そして、パーティションの大きさを変更する前に、バックアップは欠かせない。

経験上未使用のハードディスクを読み出すと、全てがゼロで埋まっている。これが、偶然なのか、工場で全てこの様に初期化して出荷しているのかは知らない。何はともあれ、未使用の領域が多いと、dd で読み出したものを圧縮すると、圧縮率がとてもたかい。

それに加えて、MBR や複数のパーティションをもろとものバックアップを取ることもある。

そのため、新しく手元に来た PC のハードディスクは dd でバックアップを取るのが恒例の行事になっている。


# dd if=/dev/ad2 bs=1MB | buffer -m20M | gzip -9 | split -b2048m - XXX-ad2.dd.gzip.

流石に、512 バイト毎に読み出すと時間が掛かって仕方がないので、bs で大きくする。最近は、ディスクの末尾はほとんど使われていない場合が多いので、あまり考えずに 1MB と指定することも多い。

gzip を使うか、bzip2 を使うかは、CPU と IO の性能で臨機応変に変える。buffer を使うと、余計な IO 待ちが減るので、早くなる。

経験上、split は絶対いれておいた方がいい。ふと、fat 領域に書き込んで、2 GB の壁にぶつかり泣いたことが何度かある。古い Linux では、2 GB 以上のファイルを作れなかった事もある。

普段 split と 圧縮を組み合わせる時は、split したものを圧縮する。aa.bz2 などとなるわけだ。こうした方が、特定のバイトの範囲を指定するときに便利だったからだ。しかし、ディスク全体の dd の場合は、圧縮したものを split している。bz2.aa などとなる。一ファイルあたり、2 GB ものゼロを書き、圧縮し直すのが無駄だからだ。

次回