debian の tar を使ったロールバックの方法
前にも書いたとおり、最近Thinkpadにdebianを入れて楽しんでいるのですが、いろいろ入れているとたまにうまくインストールできないソフトがあります。そういう時には、その新しくインストールしたソフトを削除したりしてみるのですが、必要なものまで削除されてたり、必要ないものが残ってたりとなかなかうまくいきません。今まではそのたびにシステムの再インストールをしてました。
ただ、このThinkpadにはCDやDVDのドライブが付いていないため、いちいち外付けドライブをくっつけてインストールしていたのですが、いい加減面倒になってきました。なので、いちいち外からとりこまないでもロールバックできる方法を探して見ました。結論としては、普通のバックアップ&リストアの方法と同じことをすればよいのですね。真剣にバックアップをするならば、dumpやddといった方法もあるのですが、ここでは手軽に行いたいので tar を使ってやります。なお、以下の方法はパーティション単位になります。パーティションの構成は、sda1がシステム全般、sda3が/homeになっています。
前準備
まずは前準備です。外からつながないで、中だけでバックアップ&リストアを完結できるようにします。
そのためにメインのOSとは別のバックアップ復旧用のOSをインストールします。僕は面倒だったので、そのままdebianをもうひとつインストール。設定は最小構成で十分です。容量的にも1Gあればどうにかなると思いますが、念のため3Gぐらい確保しておきます。
バックアップ
今回は「確実に動く特定の時点」にロールバックすることが目的なので、その時点のスナップショット代わりに tar によるバックアップを取っておきます。念のためシングルユーザモードで。
# mount -t ext3 /mnt /dev/sda1 # tar zcvf /home/share/backup.tar.gz /mnt
ロールバック (リストア)
さて、ここからが本題のロールバックの方法です。まず試したのはシングルユーザモードで入って、tarファイルの解凍です。
# tar zxvf /home/share/backup.tar.gz
ただ、この方法だと、システムの状態は元に戻るのですが、新しくインストールした分のファイルなどはそのままで残ってしまいます。つまりごみファイルが大量に残ります。さすがにこれは、と思ったので別の方法を探します。とりあえず、システムファイルを一度全部消してしまえばいいのです。ただ、システムを消すと動かなくなってしまいます。そこで前準備でやったバックアップ復旧用のOSです。あらかじめ別のOSがインストールしてあるならば、そのOSに入って、復旧したいパーティションを初期化してから展開すればいいのです。
# mke2fs -j /dev/sda1 # mount -t ext3 /dev/sda1 /mnt # mount -t ext3 /dev/sda3 /mnt2 # tar zxvf /mnt2/share/backup.tar.gz
これで復旧完了です。準備が面倒ですが、準備してしまえばあとは簡単にできます。