PCを長く利用していくと、どうしてもハードウェア故障は避けられません。不慮の故障による影響を減らすことは非常に重要なことですが、HDDやファイルシステムの異常はバックアップなしに回避することができません。Ubuntuを利用したデスクトップ環境で、バックアップを行うツールを中心にしたレシピを紹介します。
今回は「デスクトップで手軽にバックアップを行う」レシピと、「バックアップとはどう考えるべきか?」ということを説明します。「サーバ用途でのバックアップ」や、「リモートバックアップ」など、より詳細なバックアップを実現する方法を来週お届けする予定です。
Simple Backup(SBackup)によるバックアップ
Simple Backup(SBackup)は、Ubuntu向けに開発されている[1]バックアップソフトウェアです。その名の通りきわめてシンプルな機能を持っており、データ保存のためにバックアップを行いたい、というユーザの要望を満たしてくれるはずです。これまでバックアップの習慣がなかった方にお勧めします。
SBackupのインストール
SBackupのインストールは[アプリケーション]→[追加と削除...]から行うことができます(Synapticやapt-getからインストールすることもできますが、ここでは初心者でも意味をとりやすい[追加と削除...]から行っています)。ウインドウ右上の“表示:”ドロップボックスで“全てのオープンソースアプリケーション”を選択して"sbackup"を検索してください。
表示された“Simple Backup Config”と“Simple Backup Restore”の両方にチェックを入れ、[変更の適用]を行ってください。SBackupに必要なパッケージが一括してインストールされます。
SBackupは、通常のソフトウェアのような[アプリケーション]メニューではなく、[システム]→[システム管理]にインストールされます。
SBackupの設定とバックアップ
SBackupの使い方は非常に単純です。主な使い方は最初に設定を行い、あとは自動的に日々のバックアップを取得させることです。この場合、ユーザはあまりバックアップの存在を意識せずに利用することができます。
また、手動でバックアップを開始し、自動実行させない使い方も可能です。
いずれの場合も、最初に[Simple Backup Config]を起動し、バックアップ対象の設定が必要になります。順に作業を見ていきましょう。
メニューから[Simple Backup Config]を起動すると、次のような設定ダイアログが表示されます。
この画面でSBackupが行うべき動作のうち、大まかな方針を決定します。各メニューで指定される方針は次の通りです。いずれの場合も、原則としては/var/backup以下に、「年-月-日_時-分-秒-ミリ秒-ホスト名-バックアップ種別」(YYYY-MM-DD_hh.mm.ss.ms.%hostname%.{full,inc})というディレクトリにバックアップが取得されます。
使い方にもよりますが、ごく一般的なユーザであればUse recommended backup settingを選択し、後は忘れてしまうことができるようになっています。
- Use recommended backup settings
SBackupが推奨するバックアップ対象・周期を用いてバックアップを行います。
バックアップ対象は/home, /etc, /usr/local, /varディレクトリです。ただし、ホームディレクトリにあるゴミ箱やキャッシュファイル、/var/cache, /var/spool, /var/tmp、拡張子がmp3, avi, mpeg, mkv, ogg, isoのファイルと、10MBを越えるファイルはバックアップされません[2]。
バックアップは毎日0:00に実行されます。また、7日に一度フルバックアップを取得し、あとの6日はフルバックアップに対する差分のみバックアップします。
- Use custom backup settings
バックアップ対象をユーザが指定するモードです。バックアップしたいディレクトリ・除外する条件などはすべてユーザが指定できます。
また、バックアップ周期やフルバックアップ・差分バックアップの指定も自由に行えます。
この設定では、ユーザが指定したタイミング(例えば、平日・朝の7:00)で自動的にバックアップが取得されます。
- Manual Backups only
“Use custom backup settings”と同じように、バックアップ対象を指定することができます。
バックアップは自動的には実行されず、ユーザが能動的にバックアップ開始を指示する必要があります。
Use custom backup settings/Manual Backups onlyで利用する設定タブを順番に見ていきましょう。
- “Include”タブ
バックアップ対象とするディレクトリ・ファイルを列挙する形で指定します。
- “Exclude”タブ
バックアップ対象と「しない」ディレクトリ・ファイルを指定します。このタブにはさらに下位のタブが存在します。いずれも、“Include”タブで指定したディレクトリ・ファイルに対する例外条件として機能します。
“Paths”は、ディレクトリパスやファイルパスを用いての指定です。
“File types”は拡張子ベースの指定、“Regex”はパスに対してPerl互換正規表現を用いてマッチさせて指定します。
“Max size”は、ファイルサイズに基づく指定です。ここで指定した容量を越えた容量のファイルがバックアップ対象から除外されます。
- “Destination”
ここでは、バックアップ先(保存先)を指定します。デフォルトでは/var/backupに保存しますが、任意のディレクトリに保存先を変更することができます。
また、“Use a remote directory (SSH or FTP)”という項目があり、ここで適切な指定を行うことで、ネットワーク越しにリモートマシンへバックアップを作成することができます。これについては次回に詳しく説明します。
- “Time”
自動バックアップを行う日時を設定します。
時刻の設定が不要であれば“Do backups”でdaily/weeklyなどを指定すれば充分です。細かく時間を指定したい場合は、“precisely at:”ボタンを選択することで行えます。また、“Do backups”でcustomを設定することで、cron同様の記法で指定を行えます。
また、このタブではフルバックアップを行う周期を指定することができます。
あまり短い周期を設定するとバックアップディレクトリに多大な容量が必要になりますので、筆者はデフォルトの21日か、14日をお勧めします。
- “Purging”
自動的に古いバックアップを消去するための設定です。HDDの容量は有限ですから、取得したバックアップのうち、不要になったものは削除していく必要があります。
このタブで、自動消去の有効・無効と、消去方針を設定できます。
“Simple”は、単純に一定期間が経過したバックアップを消去するアプローチです。
これに対して、“Logarithmic”は「昔に遡れるように」配慮しつつ、不要なバックアップを削除します。具体的にはダイアログにある通り、「1週間前のものは、1日につき1つ」・「1ヶ月前のものは、1週間につき1つ」・「1年前のものは、1ヶ月につき1つ」・「それ以上前のものは1年ごとに1つ」という方針でバックアップを残します。通常はこちらを選択することになるでしょう。
設定が完了したら、[保存]を行うことでcronにスケジュール設定が登録され、以降は自動的にバックアップが実施されるようになります。
また、“Backup Now!”ボタンを押すことで、スケジュールと無関係にバックアップを手動で実行することができます。Manual Backups onlyを選択した場合は、必要に応じてSBackupを起動し、このボタンを用いてバックアップを行います。
バックアップ中はHDDへ断続的にアクセスを行うため、若干レスポンスが低下します。もし可能であれば、PCを使わない時間(昼休みなど)にバックアップを取得するように設定すると良いでしょう。
バックアップは次のような形で保存されています。
このディレクトリの中身は次のようになっています。
packagesというファイルがありますが、これはSBackupが取得した「バックアップを取得した時点でインストールされていたパッケージの一覧」です(中身はsudo dpkg --get-selectionsの出力です)。excludes, flist, fpopsはバックアップを取得した際の条件・対象を記録したメタデータファイルです。verはSBackupのバックアップフォーマットのバージョンを格納しています。
また、SBackupは古典的なUnixツールによるバックアップのラッパーとして構成されています。
各設定を実際に確認して頂くと分かりますが、たとえばバックアップの自動実行はcronに登録される形です(内部でどのような処理が実行されているのか、/usr/sbin/sbackupdのPythonスクリプトを追うか、もしくはバックアップ実行中にtopコマンドを実行し、キックされるコマンドを眺めてみることをお勧めします)。
また、取得するバックアップは、バックアップの属性情報を保存したいくつかのファイルと、files.tgzという名前の圧縮ファイルです。このTARアーカイブの中にはバックアップ対象がフルパスで(パス上、最上位の/は削除された形で)そのまま格納されており、必要であれば、SBackupに頼らなくても手動でファイルを取得できるようになっています。
tar tvzf files.tgzなどとすれば、どのようにファイルが保存されているのかを確認することができるでしょう。
こうして取得したバックアップをDVD-Rや外付けHDDなどにコピーすることで、システムのHDDがクラッシュしても、データを守ることができます(外付けHDDを用いる場合は、SBackupのバックアップ先を直接外付けHDDにすることも検討してください)。
SBackupによるリストア
SBackupによるバックアップからの復元(リストア)は、“Simple Backup Restore”を用いて行います。前述の通り、SBackupのバックアップファイルは単なるTARですので、必要であれば手動で復元を行うことも可能です。
ただし、こちらはバックアップデータが完全であることを確認することができ、かつ、差分バックアップを適切に処理できる、という利点があるため、通常はこちらを用いた方が便利でしょう。
“Simple Backup Restore”を起動すると、次のウインドウが表示されます。
操作は単純で、“Restore Source Folder”でバックアップが保存されたディレクトリを選択し、“Available backups:”でバックアップを選択し、[Restore]もしくは[Restore As...]でバックアップからファイルを復元します。
多くの場合、[Restore]で直接対象ディレクトリに復元するのではなく、[Restore As...]を用いて一時的な復元用ディレクトリを指定し、そこへデータを展開する方が良いでしょう(下手にオリジナルディレクトリに書き戻すと、場合によっては不要なファイルまで巻き戻ってしまいます)。
バックアップからのリストアは必ずしも全ファイルを戻す必要はありません。ダイアログ下部に表示されているファイルシステムツリーで必要なファイルを選択することで、特定のディレクトリ以下のみを復元することができます。
通常はこの機能を用いて、ディレクトリ単位で復元することになるでしょう。
- その他、参考になるドキュメント
SBackupのsourceforgeサイト
http://sbackup.sourceforge.net/HomePage
SBackupによるバックアップ・復元の紹介記事
http://www.ubuntugeek.com/
backup-and-restore-your-ubuntu-system-using-sbackup.html