現場ですぐに役立つ知識を欲するあなたに贈る珠玉のTips集。今回は、データを定期的にディスクへバックアップする方法について、シェルスクリプトとcronだけで実現してみます。
HDDの故障などで重要なデータを紛失したくないため、その領域をミラーリングして運用しています。ところが、この構成では、ユーザーの誤操作で消去してしまったファイルは、復旧が不可能になってしまいます。そこで定期的にデータのバックアップを行いたいと考えているのですが、テープ装置にデータをバックアップするのはリストア処理に時間もかかりますし、テープメディアの交換や装置のクリーニングなどの管理が面倒なので、別に用意したHDDにバックアップを行いたいと思っています。この場合、専用のバックアップソフトウェアを購入する必要があるのでしょうか?
最近は、HDDの小型化/大容量化と低価格化によって、バックアップデータの保存先としてHDDを利用する方が増えているようです。ディスクに書かれているデータをほかのディスクに書き込むわけですから、単純にミラーリングを行えば済むようにも思えます。しかし、質問にもあるように、ユーザーが誤ってファイルを消去してしまった場合には、ミラーリング先も同様に消去されてしまうことになり、復旧させることができません。
このような場合に備えて、スナップショット機能*が利用できるストレージ製品を導入される方も多いと思います。ここでは、専用の機器やバックアップソフトウェアを用いずに、UNIXの機能を利用してデータを定期的にディスクへバックアップする方法を紹介します。また、あらかじめシェルスクリプトを作成し、cron機能を使って、設定した時刻になったら作成したスクリプトが実行されるようにしてみましょう。
ファイルシステム全体、特定のディレクトリ以下のファイル、あるいは、ファイル単位のバックアップなど、どの部分をバックアップ対象とするかをまず決めます。
ある特定のファイルそのものをバックアップするだけであれば、単純にcpコマンドでも構いません。特定のディレクトリ以下に存在するファイルすべて、またはファイルシステム全体をバックアップするという場合には、tarコマンドやdump/restoreコマンド*を用いるのが一般的です。
それぞれのコマンドの主な特徴を簡単にまとめると、次のとおりになります。
複数のファイルを1つのアーカイブファイルにまとめる。特定のディレクトリ以下のファイルをアーカイブにまとめて、そのファイルを圧縮することもできる。
ファイルシステムそのものをバックアップするのに便利。前回のバックアップと比べて、更新された分のみバックアップを行うインクリメントバックアップが可能。
バックアップ先ディスクと、バックアップ対象ディスクが同一デバイスになってしまうと、ハードウェア障害に対応できないことになってしまいます。バックアップ先として適当なディスクがローカルシステムにあればよいのですが、システムディスク以外にディスクが接続されていない場合や、別のディスクがあっても空き容量が足りない場合には、ディスクを増設するか、リモートマシンのディスクを使用するしかありません。
ここでは、表1のような環境を例として、ファイルサーバの領域をバックアップ先ディスクとする作業手順を紹介していきます。また、バックアップ操作は一般的にはファイルパーミッションの関係で、rootにて実施しますので、NFSを使用する場合は、rootからのwriteアクセス許可設定をしておいてください。
ディレクトリ | デバイス名(NFS元) |
---|---|
バックアップ元 | /home/user1 /dev/dsk/c0t0d0s7 |
バックアップ先 | /backup fserver:/home/user1/backup |
特定時間のファイルシステムの状態をそのまま保存し、バックアップを行う機能。
Solarisでは、ufsdump/ufsrestoreコマンドになる。
Copyright © ITmedia, Inc. All Rights Reserved.