treedown’s Report

システム管理者に巻き起こる様々な事象を読者の貴方へ報告するブログです。会社でも家庭でも"システム"に携わるすべての方の共感を目指しています。

※https化しました。その影響でしばらくリンク切れなどがあるかもしれませんが徐々に修正していきます。 リンク切れなどのお気づきの点がございましたらコメントなどでご指摘いただけますと助かります。

小規模な共有フォルダのバックアップなら安価に用意しましょう。

今回はフリーソフトを利用したバックアップ体制の構築についてご報告します。
本来はリストアも同じ文書にまとめたかったのですが、長くなってしまいました。バックアップの取得についてはリストアを考慮したつくりにはしますがリストアの方法については別記事でご紹介します。

バックアップは(どちらかといえば)冗長化より優先して実施すべき施策、というのが世の考え方と思います。
以前にバックアップの考慮事項を(バックアップはどう考えましょうか? - treedown’s Report)ご報告しましたが、その考え方に沿って、極力ローコストで最小限のバックアップを本記事で考えてみようと思います。
最近ではSOHO・個人事業主であっても手ごろなNASでファイルサーバをご利用の方も多いのではないかと思いますが、意外と(機器毎の制限事項もあってか)共有フォルダのバックアップがされていないケースも見受けられます。ぜひ本記事で「データを、亡くさぬ準備、バックアップ」を始めてみませんか?


ファイルサーバ(共有フォルダ)1台のデータをバックアップするために用意するのは、
・バックアップサーバ(となるPC)×1台
・外付けハードディスク(USBかeSATA接続)×1台
・ギガビットイーサネットワーク(のスイッチ)×1台

※外付けHDDは以下の条件を推奨します。

  • 容量はファイルサーバの共有フォルダが配置されるパーティションの2倍~3倍程度のHDDをバックアップ用として用意します。
  • 中身のHDDはWDかSeagateをHDDケースに組み込んで使います。これは後述するソフトウェアTrueImageのベンダーエディション(無料)を利用するためです。TrueImage製品版をもしお持ちでしたら、特にHDD自体は選びません。
  • 接続方式はPCによってベストが異なります。eSATAはUSB2.0より高速な規格なはずなのにイマイチ速度が出ないPC、が実際に存在します。逆にUSB3.0であっても速度が抑えられていてeSATAの方が圧倒的に速度が出るケースもあるようです。
    このあたりは実際に利用するPCで実測を出してみることをお勧めします。(内蔵HDDから接続インターフェース別にデータコピーなどで速度を測ってみるということです。)

※追加:一考する価値があるポイントとして、外付けHDDは内蔵用HDD2台を購入し、HDDケースをRAID1対応のHDDケースに2台入れてRAID1を組んで使用するのがおすすめです。バックアップデータを記憶させる外付けHDDの故障が1台だけであればRAID1で新しいHDDに交換することでバックアップパーティションが復旧できるからです。

使用する機材が用意できたところでソフトウェアの話にうつります。
ここで使うソフトウェアは以下の3点、費用を掛けないようすべてフリーソフトです。

  • BunBackup
  • Everything(解説はしませんが、バックアップの動作前に
  • TrueImage(ベンダーエディション(フリー)で可)

※本記事ではEverythingの解説はありませんが、バックアップの動作前にインストールだけ済ませておくことを推奨します。

構成は簡単です。

f:id:treedown:20150902123635j:plain


ファイルサーバ(NAS)と同一サブネットにバックアップ専用PCを用意します。(バックアップ時のみ起動してもOKですし、常時起動でバックアップタスクを実行してもOKです。)
バックアップの速度をあげて妥当な時間内に完了させるために、2台の間はギガビットイーサスイッチで接続します。
朝、業務が開始する時間になっていてもバックアップが完了せず(バックアップ動作によって)ファイルサーバのアクセスが遅い、という状況を避けるためにネットワークバックアップの場合にはケチらずギガビットイーサを使いましょう。

各設定内容は以下をご自分の環境で読み替えてください。

  • ファイルサーバ:FILESVR
  • バックアップPC:BAKSVR
  • バックアップ対象の共有フォルダ:Share1/Share2
  • 外付けHDDのドライブレター、ルートフォルダ:R:\

バックアップPC(BAKSVR)に使用するソフトウェア3点(BunBackup/Everything/TrueImage)をインストールします。
それぞれのソフトウェアについて使い方は各自検索して解説ページを参照してください。

BunBackupでファイルサーバの共有フォルダ内にあるファイル群をバックアップします。このソフト素敵です。私は有償(のドキュメント)版も購入しました。まずはこのソフトでバックアップを学び始めるとしっかりとした基礎になると思います。
バックアップを取得したいファイルサーバの共有にアクセス可能なユーザIDでログオンしBunBackupを設定します。
--------------バックアップ設定その1--------------
バックアップ設定で
・タイトル:Share1フォルダデイリーバックアップ
・バックアップ元フォルダ:\\FILESVR\Share1
・バックアップ先フォルダ:R:\BKFS\Share1

f:id:treedown:20150902123742p:plain

詳細設定で以下のように設定します。(ざっくりです。)
バックアップ方法:サブフォルダもバックアップする
        条件指定⇒新しいファイル/異なるサイズ/新しい時刻
        ※バックアップを敢えて取得しないファイルがある場合除外設定に追加

f:id:treedown:20150902123824p:plain

世代管理:フォルダフォーマットデフォルト「'世代' yyyy-mm-dd」を決定し入力します。
        保存期間⇒3日間
        ※データを巻き戻す期間分の好きな日数を入力します。
        ※例えば20日間データをキープしたい場合、ここに20と入力します。
        ※保存期間を長くするとバックアップ用の容量を要します。
        世代管理をバックアップ先とは別フォルダに保存する。
        ⇒保存フォルダ:R:\BKFS-Archive\Share1

f:id:treedown:20150902123843p:plain

その他:「コピーエラー(または中断時)バックアップ先ファイルを保護」を有効化します。

f:id:treedown:20150902123911p:plain

※ファイルサーバがVSS(Volume Shadow Copy)が動作しているのであれば「バックアップ元でロックされているファイルをコピー」も有効化すると便利です。WindowsでないNASLinux-sambaなどで構築している場合には無効にします。
----------バックアップ設定その1ここまで----------
同様にバックアップ設定でShare2フォルダも
・バックアップ元フォルダ:\\FILESVR\Share2
・バックアップ先フォルダ:R:\BKFS\Share2
こう読み替えて同様な設定で共有フォルダの数分だけバックアップ設定を作成します。

こうして構成したバックアップ設定をスケジュールに登録します。(登録はBunBackupのメニュー⇒環境設定から実行可能です。)
登録するとジョブ実行がタスクスケジューラに登録されます。
このバックアップを「日ごと」「1日間隔」で夜中(24:00や1:00など)にスケジュールを仕掛けましょう。

f:id:treedown:20150902123937p:plain


次に2つ目のバックアップ設定を設定します。
--------------バックアップ設定その2--------------
バックアップ設定で
・タイトル:Share1フォルダミラー
・バックアップ元フォルダ:\\FILESVR\Share1
・バックアップ先フォルダ:R:\SSFS\Share1
※バックアップ先フォルダを「R:\BKFS」から「R:\SSFS」に変更しています。

f:id:treedown:20150902123959p:plain

詳細設定で以下のように設定します。
バックアップ方法:サブフォルダもバックアップする
        条件指定⇒新しいファイル/異なるサイズ/新しい時刻
        ※ここはバックアップ設定その1と同じです
ミラーリングミラーリングする、を有効化します。
        ※新たな設定としてミラーリング設定をします。

f:id:treedown:20150902124025p:plain


世代管理:フォルダフォーマットデフォルト「'世代' yyyy-mm-dd」を決定し入力します。
        保存期間⇒1日間
        ※データを巻き戻す期間分日数を入力します。
        ※保存期間を長くするとバックアップ用の容量を要します。
        世代管理をバックアップ先とは別フォルダに保存する。
        ⇒保存フォルダ:R:\SSFS-Archive

f:id:treedown:20150902124049p:plain


その他:※以下を有効化する
        高速ファイルチェックをON
        コピーエラー(または中断時)バックアップ先ファイルを保護

f:id:treedown:20150902124105p:plain
※「バックアップ元でロックされているファイルをコピー」の有効化についての判断はバックアップ設定その1と同一です。
----------バックアップ設定その2ここまで----------
内容はバックアップ設定その1とほとんど同じです。
ちょっとだけ変えています。(違いについては後述します。)
バックアップ設定その1同様に、設定内容は読み替えて同様の設定で共有フォルダの数分だけバックアップ設定を作成します。

この構成したバックアップ設定その2をスケジュールに登録します。このバックアップは「時間ごと」「2時間間隔」で始業前時刻(AM7:00や8:00など)にスケジュールを仕掛けましょう。

f:id:treedown:20150902124132p:plain


ここまでで2種類のバックアップが仕掛けられました。

1日1回指定した共有フォルダを丸ごとバックアップする設定と
2時間おきにミラーリング設定でバックアップを取得するタスクです。

ここでは区別するために、1日1回のバックアップを「デイリーバックアップ」と呼び、2時間おきのバックアップを「フォルダミラー」と呼ぶようにします。
この2種類用意する理由は障害が発生する時刻・タイミングによって下記のデータ復旧を狙うためです。

  • デイリーバックアップによってファイルサーバの共有フォルダ全体をフルバックアップしておくことで、ファイルサーバのデータが全部欠損した場合、新しいHDDを用意してファイルサーバ構築後、デイリーバックアップからリストアした共有フォルダデータで復旧するため
  • ユーザが個別ファイルの復旧を依頼する場合、古いデータからのファイル復旧を実施するため、世代を長く設定したバックアップデータを用意する必要があるため
  • (BunBackupの仕様に合わせて)空っぽのフォルダもバックアップ対象として収集する、といった"完全なバックアップ"を定期的(ここでは日ごと)に取得するため
  • フォルダミラーによって当日編集したファイルのリストアに対処するため(例:午前中編集したファイルを、午後に、"誤って削除した"or"ファイルが破損した"...etc...というリストア要件は日中に取得されたバックアップでしか需要が満たせない、ということ。)
  • なるべく最新のデータを収集したいがバックアップの容量は抑えたい、かつデイリーバックアップでは削除したデータがバックアップデータとして残存するが、「いまのフォルダ状態」を保存したい、需要からフォルダミラーを用意し日中に動作させます。


こういったファイル復元の需要を考慮すると…

  • デイリーバックアップ=バックアップ対象のファイル数が多い、その分時間を掛けられる、時間が必要なフルバックアップを実行すべき、(人間が分かりやすい)一日区切りでバックアップデータの世代を保存することで古いデータの参照をしやすくする
  • フォルダミラー=とにかく今の状態を短時間・低負荷で収集する、いまを収集するため、履歴や余分な収集はデイリーバックアップに任せて、今の状態を取得することで、復旧時に掛かるデータ選別時間の短縮をするためのバックアップ

として用意することになります。
図にするとこのような感じになります。

f:id:treedown:20150902124244j:plain


世代管理フォルダの設定も少々変えています。
「世代管理をバックアップ先とは別フォルダに保存する」の設定箇所が、「R:\BKFS-Archive\Share1」の時は世代管理フォルダ構造が以下になります。
この場合、、、
--------------------------------------------------------------------------------------------
R:\BKFS-Archive\
      ├─Share2
      │
      ├─Share3
      │
      └─Share1
         ├─世代 2015-09-02
         │   └─Share1の9月2日の世代(Archive)データ
         ├─世代 2015-09-01
         │   └─Share1の9月1日の世代(Archive)データ
         └─世代 2015-08-31
--------------------------------------------------------------------------------------------
世代データはこのような持ち方になります。
共有フォルダの一覧が1階層目に存在し、選択すると選択したフォルダの世代フォルダが存在する、というデータのもち方です。

「世代管理をバックアップ先とは別フォルダに保存する。」が「R:\SSFS-Archive」のときは以下のような構造になります。
--------------------------------------------------------------------------------------------
R:\BKFS-Archive\
      ├─世代 2015-08-31
      │
      ├─世代 2015-09-01
      │
      └─世代 2015-09-02
              └─SSFS
                 ├─Share1
                 │   └─Share1の9月2日の世代(Archive)データ
                 ├─Share2
                 │   └─Share2の9月2日の世代(Archive)データ
                 └─Share3
--------------------------------------------------------------------------------------------

世代管理フォルダを開いて「日付からデータを探し出す」か「対象となる共有フォルダからデータを探し出すか」によって持ち方が異なります。これは好みで自分の探しやすい方で設定を統一するのもありです。
またEverythingを使う前提条件がありますので、それほどフォルダ構造にこだわらなくてもいいかもしれません。Everythingで検索できるようにさえなっていればフォルダのトップからキーワードで検索し抽出ができるわけですから。
※もう一つのインストールソフトEverythingはバックアップしたファイルをリストアするためにファイルを探し出すための高速検索に使います。(実際に運用してみるとファイルを個別にリストアするケースが圧倒的に多いです。)
このリストア部分については別記事にて。

ここまででファイルサーバの共有フォルダをバックアップするところまではできました。
あとは肝心なバックアップサーバのHDD故障などに備えてOSイメージを取得しておけば、ひとまず安心です。
TrueImageで安定稼働しているバックアップPCのOSイメージを定期的に取得し、バックアップPCの内蔵HDDが故障した時に新しいHDDで素早くシステムを復旧できるように備えます。
こうして、データをすべて2重化しておくことで障害に備えます。

ざっくりですが、TrueImageを起動してディスクとパーティションのバックアップを起動します。
※実際のイメージバックアップはよくマニュアルを読んで理解しておくことをおすすめします。

バックアップでは、ディスクモードに切り替えてシステム(OS起動)ディスクを選択してしまうのが簡単でいいと思います。

f:id:treedown:20150902124501p:plain
保存先に「R:\img-BAKSVR」といった名前を指定しておけばイメージファイルが「R:\img-BAKSVR」フォルダ配下に生成されるようになります。このあたりは自分が分かりやすいパスを用意するのがよいと思われます。

「スケジュール」とあるリンクをクリックするとスケジュール設定画面が表示されます。

f:id:treedown:20150902124546p:plain

スケジュール設定は「週単位」「毎週日曜」「午前10:00」位で設定しておけば他のバックアップとも干渉せずいいのではないかと。
※必要に応じて詳細設定でスリープしないようにしたりスリープ状態であるが故にバックアップが実行されない、ということを避ける設定をいれたりします。

あとは、このスケジュールが正常に実行されていることを確認しておけばOSイメージバックアップもOKです。
できれば、リストア試験として、ブータブルCDを作成して同メーカ同容量の空HDDに交換して外付けHDDに保管したイメージバックアップファイルからOSイメージが復元されることを最初の1回だけは確認しておいたほうがよりよいです。(復旧手順も確認できますし)

ここまでのバックアップ収集によって、以下の対策が打てたことになります。

  1. ファイルサーバのデータが破損したとき=BunBackupで取得したデータから復元可能
  2. BAKSVR内蔵HDDが壊れたとき=内蔵(OS)用HDDを交換してイメージバックアップから復元可能
  3. BAKSVR外付けHDDが壊れたとき=外付けHDDを交換(TrueImageを使うためにHDDベンダー注意)して再度バックアップを取り直し


バックアップはお金が掛かるものですが、ここに記載したバックアップの構造が規模の大小に関わらず基本となる形の1つです。
あとはデータや会社インフラの規模によって、バックアップ用のストレージ容量を増やしたり、多彩なバックアップを取得するために市販製品のバックアップソフトウェアに入れ替えたり、といった増強が考えられます。
また今回の構成や考え方・設定は、SOHO・個人事業主が普段利用しているメインPCのバックアップ(これも意外と備えていない人が多い)にも応用して流用することができます。備えのない方、ぜひ。
どういった構成でもバックアップに必要な時間の計算とリストアに掛かる作業の分、障害発生時の復旧を意識して増強しておけば、ローコストでもそれなりのバックアップは用意できるものですね。