OSの再インストール後にシステム設定を復元する簡単なスクリプト

 オペレーティング・システムの再インストールは決して楽しい作業ではないし、喜んで取り組みたい作業でもない。しかし、やむを得ず再インストールしなければならないこともある。その場合、再インストール後にシステム設定やダウンロードしたアプリケーションを復元する必要があるが、これも結構時間のかかる作業だ。そこで、復元作業を多少とも楽にしようとシェル・スクリプトを作ったので紹介する。

 なお、この方法を外部バックアップの代わりにはしないように。重要なファイルはCDやDVDなど、コンピューターの外部にバックアップすべきだ。シェル・スクリプトがどれほど強力であろうとも、ちょっとしたミスで、何時間もかけて作ったものがほんの数秒で跡形もなく消えてしまうことがあるのだから。

 Ubuntuをコンピューターにインストールしたとき、私はhomeディレクトリー用に独立したパーティションを用意した。ユーザーが作ったファイルは、通常、homeディレクトリーに保存される。したがって、こうしておけば、Ubuntuを再インストールしても、homeパーティションを上書きしない限り、それまで自分が作ってきたファイルが失われることはない。また、ルートパーティション上の構成ファイルをhomeディレクトリーにバックアップしているが、このバックアップも無事だ。再インストール後、バックアップを本来の場所にコピーすれば構成は終わる。

 さらに、インターネットからダウンロードしたプログラムの一部も、homeディレクトリーに保存してある。したがって、これらについては、Ubuntuの復元後、インストールするコマンドを実行するだけで復元可能だ。これから紹介するスクリプトでは、こうした作業をすべて自動で行う。

シェル・スクリプトを作る

 シェル・スクリプトはLinuxコマンドを含むテキスト・ファイルだ。MS-DOSのバッチ・ファイルをご存じなら、それとほぼ同じものだと考えればよい。

 シェル・スクリプトを作る手順は次の通り。まずテキスト・エディターを開き、コマンドを入力し、適切なファイル名で保存する。ただし、拡張子は".txt."ではなく、".sh"にする。

 次に、このスクリプトを実行可能ファイルに設定する。まずターミナル・ウィンドウ(Ubuntuの場合、Accessoriesの下のApplicationsメニューの中にある)を開き、スクリプト・ファイルのパスに対して「chmod +x」コマンドを実行する。これで、スクリプトのファイル・パスを指定したshコマンドを使って、このスクリプトを実行できるようになる。たとえば、スクリプトの名前をrestore.shとし、homeディレクトリーのconfigフォルダーに保存した場合は、次のようにする。

chmod +x /home/yourusername/config/restore.sh
sh /home/yourusername/config/restore.sh

 それでは、スクリプトの一例を挙げよう。わかりやすくするため、私が普段使っているものを少し簡略化して示す。その後、ステップごとに内容を説明する。

# System Restore Script
# Purpose: To restore my most used applications and settings easily

# Step 1: Restore my sources.list file
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
sudo cp /home/jeremy/Documents/Config/sources.list /etc/apt/sources.list

# Step 2: Make sure I have all the security and software updates
sudo apt-get update
sudo apt-get dist-upgrade

# Step 3: Install some of my favorite programs
sudo apt-get install frozen-bubble neverball chromium supertux kdf xmms  xmms-skins totem-xine nvidia-glx xine-ui

# Step 4: Install programs that I have downloaded on my local hard disk
# Note: If I move these packages to a different location, I'll need to update this script
sudo dpkg -i /home/jeremy/Documents/Downloads/dolphin_0.6.0-0ubuntu1_i386.deb
sudo dpkg -i /home/jeremy/Documents/Downloads/zsnes_1.510-0ubuntu1_i386.deb

# Step 5: Restore screen resolution settings for my monitor
# Note: Do not do this unless restoring to a single pc
sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf.backup
sudo cp /home/jeremy/Documents/Config/xorg.conf /etc/X11/xorg.conf

# Step 6: Install the Adobe Flash plugin for Mozilla Firefox
# Note: This works with 32-bit Ubuntu only
sudo apt-get install flashplugin-nonfree

# Step 7: Reboot
sudo reboot

スクリプトの説明

 スクリプトの各ステップには、冒頭に少なくとも1行のコメント――先頭が井桁(#)の行――を付けてある。あとで見たとき、そのステップでどんな処理をしているのかがわかるようにするためだ。

 ステップ1では、cpコマンドを使って、ファイルを別の場所にコピーする。この場合、元のファイルが削除されることはない。まず、最初のcpコマンドで、ソフトウェア・リポジトリーの一覧であるsources.listファイルをバックアップする。何らかのミスがあっても復元できるようにするためだ。バックアップの名前は、ここではsources.list.backupとしているが、何でもよい。そして、2つめのcpコマンドで、ローカルに保存してある(私が手を加えてある)sources.listファイルをUbuntuが使う本来の場所にコピーする。

 コマンドの前に付いているプレフィックス・コマンドsudoは指定されたコマンドをrootユーザーとして実行すべきことを示すもので、このスクリプトのほとんどのコマンドに付いている。スクリプトを実行すると、最初のsudo付きコマンドを実行する際にrootのパスワードが要求される。

 ステップ2では、まずコマンドapt-get updateでPC上のパッケージ・リストとオンライン・リポジトリーとの同期をとり、次のコマンドapt-get dist-upgradeでインストールされているものより新しいパッケージがあればそのすべてをダウンロードし、インストールする。セキュリティー・アップデートがあれば、これもインストールする。

 ステップ3では、私が利用しているアプリケーションのうち、sources.listファイルに保存してある登録情報では自動的にインストールされないものをダウンロードしインストールする。このコマンドに指定できるパッケージの数に制限はない。新しいアプリケーションをインストールしたら、必ず、ここに追加すること。

 ソフトウェア・パッケージの中には、ハードディスクにダウンロードし保存してあるものもある。それらについては、リポジトリーからインストールするのではなく、ローカルにパッケージを保存する方が便利だからだ。たとえば、自分でコンパイルした場合や、特定のバージョンがほしい場合だ。ステップ4では、そうしたパッケージをdpkgコマンドでインストールする。このコマンドでは、インストールするハードディスク上のパッケージの名前をパス付きで完全に指定する。

 私はモニターを解像度1280×1024、リフレッシュ・レート85Hzで使っているが、Ubuntuはこのモニター構成を自動では認識してくれない。そこで、必要な設定をすべて含むxorg.confファイルを復元することにした。それがステップ5だ。ただし、このモニター設定が有効になるのはPCのリブート後だ。なお、このスクリプトでは、私が今使っているビデオ・カードでハードウェア・アクセラレーションを利用するためnvidia-glxパッケージをインストールしている(ステップ3)が、ステップ5はこのドライバを有効にするためでもある。

 ここで注意してほしいのは、この方法でxorg.confファイルを復元できるのは、このスクリプトが特定のPC専用である場合だけだということ。ハードウェアがまったく同じでない限り、コンピューターが違えばxorgファイルも異なるからだ。複数のPCを設定するスクリプトを書く場合はこの部分をカットする必要がある。さもないと、リブート後GUIが使えなくなってしまう。

 以上で、復元はほぼ完了した。あとは、ステップ6でYouTubeのビデオを見るときに必要なMozilla Firefox用のAdobe Flashプラグインをインストールし、最後にリブートするだけだ。このスクリプトのようにPCをいろいろ変更したあとは、リブートしておいた方がよい。

まとめ

 homeディレクトリーを独立したパーティションに割り当て、復元用スクリプトをそこに置いておく。そうすれば、Ubuntuを再インストールした場合でも、OSの復元後にコマンドsh /home/jeremy/Config/restore.shで復元用スクリプトを実行するだけで事は済む。スクリプトの実行が終わりコンピューターが自動的にリブートすると、私のいつもの設定ができあがっているという寸法だ。モニターはいつもの解像度に構成され、いつものプログラムがインストールされている。アプリケーションは最新のものになり、Adobe Flashプラグインを利用しているWebサイトを見ることもできる。お陰で、私は数時間の作業をしないで済んでいる。

便利なスクリプトを教えてください。この欄で紹介します。こちらまでお寄せください(ただし英語でお願いします)!

Jeremy LaCroixは、ITの達人にして技術者

Linux.com 原文