重要データを任意のHDDへ定期的にバックアップ:UNIX処方箋(3/3 ページ)
現場ですぐに役立つ知識を欲するあなたに贈る珠玉のTips集。今回は、データを定期的にディスクへバックアップする方法について、シェルスクリプトとcronだけで実現してみます。
バックアップデータの世代管理
リスト1A、リスト2のような方法で幾つかのバックアップデータを保存しておき、世代管理を行うことで、バックアップ実行間隔と保存している世代数によっては、最新のバックアップデータにファイルが存在していなくても、ファイルの復旧が可能な場合があります。
リスト1Aのように、tarコマンドでバックアップを行った場合には、次回のバックアップを行う前に、バックアップ後のアーカイブファイルの名前を変更することで世代管理を行えます。また、リスト2のようにdump/restoreコマンドでバックアップを行った場合には、前述のとおり、バックアップ先のディレクトリ名を変更することで、世代管理が可能となります。
例えば、リスト1Aであれば、バックアップ実行個所の手前に、次のように追記しておくとよいでしょう。
mv backup_files.tar.0 backup_files.tar.1
mv backup_files.tar backup_files.tar.0
そうすると、バックアップを行う前に、前回のアーカイブファイルが別名保存されるので、バックアップデータは上書きされず、世代管理が可能です。この例では、3世代(backup_files.tar、backup_files.tar.0、backup_files.tar.1)のバックアップデータが保存されることになります。
定期的にシェルスクリプトを実行
作成したスクリプトが実際に動作することが確認できたら、cron機能を使って、作成したシェルスクリプトを定時に実行させてみます。注意点は、バックアップに要する時間が、バックアップの実行間隔よりも短くなければならないことです。例えば、バックアップに1時間半かかる場合に、1時間おきにバックアップを実行するように設定してしまうと、バックアップの途中で次のバックアップが開始されてしまい、管理が複雑になってしまいます。
作成したシェルスクリプトを実行して、どの程度の時間がかかるか計測し、バックアップを実行させる間隔をどの程度にするかを決めてください。また、あまり頻繁にバックアップを行うとシステムに対する負荷が高くなり、本来行うべき作業に時間が掛かる可能性があります。
crontabへの設定手順
バックアップを行う曜日や時刻を決めて、crontabに登録します。リスト1Aを月曜日から金曜日の午後11時30分に実行するように設定してみると、以下のようになります。登録するフィールドは、左から「分、時、日、月、曜日、実行するコマンド」の6つで、「*」はワイルドカードです。
また曜日の指定は、0が日曜日で、6が土曜日となることに注意してください。例えば、「月、水、金」を指定したい場合は、「1,3,5」とフィールドに登録します。
バックアップデータのリストア
dump/restoreコマンドを使ったバックアップでは、バックアップ元とバックアップ先の指定を逆にすることで、データのリストアが可能になります。tarコマンドを使ったバックアップを行っている場合なら、リストア先のディレクトリに移動して、次のように実行すると、リストアされます。
# tar xvf <バックアップアーカイブファイル>
関連記事
- SUIDとは
- シェルスクリプトによる特定ファイルのバックアップ
- 9個以上のディスクスライス作成
- bashが起動時に実行するファイル
- acctcomコマンドによる終了ステータスの確認
- 電源制御キーの役割と無効化
- 「load average」によるCPU負荷の確認
- FTP利用でのファイル/ディレクトリの属性変更
- UFS loggingによるエラーと復旧方法
- ALOMにおけるSC用ユーザーの確認とパスワード変更
- PostgreSQLのテーブルデータをファイルへコピーする方法
- sotrussやapptraceによる実行コマンドのトレース
- TCP遅延肯定応答タイマーのタイムアウト値の変更
- 複数のマシンで効率的にシャットダウンする方法
- WWW::MechanizeモジュールによるWebアクセスの自動化
- IPv6アドレスの自動生成による不具合解消法
- キャッシュファイルを利用したNFSマウント
関連リンク
Copyright © ITmedia, Inc. All Rights Reserved.