treedown’s Report

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

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

小規模な共有フォルダ管理⇒リストア

今日は以前のバックアップの記事で予定していたリストア事例をご報告します。
以前のエントリでバックアップを設定しました。

treedown.hatenablog.jp

もう3ヶ月経つんですね…。

いくばくかのバックアップが取得できたところで、リストアのリハーサルをやっておきましょう。

ここで使うソフトウェアは以下の準備済みソフトウェアです。
・Everything
費用は掛けませんが開発者の方への感謝の念を惜しまず、本フリーソフトをありがたく使わせていただきます。
バックアップの設定は前回の小規模な共有フォルダのバックアップなら安価に用意しましょう。 - treedown’s Reportにある設定とします。よって前提条件も前回記事を参照ください。

何故Everythingなのか

Everything使う理由は何?のこころは、Windowsに標準のWindowsサーチという検索が付属しているから、Everythingは何が優位なのか、ということです。
ズバリ言って、インデックス作成が速くてインクリメンタルサーチの速度も速いから、です。
Windowsサーチは全文検索をインデックスしていますので、検索速度は多少遅いです。全文検索が欲しい時は優位ですが、リストアのためのファイルを探し出す場合にはファイル名での検索が主であり全文検索は(ほぼ)必要ありません。それよりもアレコレと検索ワードを変えて(かつ入力のたびに候補が表示される)検索のほうが使い勝手がよい、という点において優れていると言えます。

※ただし、Everything以外にも優秀な検索ソフトウェアはたくさんありますし、サーバが用意できれば「Microsoft Serch Server Express」のような検索サーバもフリーソフトとして利用できます。詰まるところご自身の使いやすい検索ソフトをお使いなすっていいのですが、ここではEverythingベースで解説しています。

リストアの始まり

さて、発端は、といいますと…
「共有フォルダ内にあったはずのフォルダが消えてなくなっています。どこに消えてしまったか探すことは可能でしょうか?」
という問い合わせが来ました。
なるほど。
Q) 消えたフォルダ名は分かりますか?
A) なんだっけ…。(記憶にないようだ)
Q) 消えてしまった日は分かりますか?
A) いつの間にか…。(記憶にないようだ)

て、手掛かりを…ください…。

とりあえず直近のフルバックアップの取得済み一覧表から探してもらいます。

他のユーザにも聞き込みして分かったのは、

  • 気づいたのは(問合せ前日である)昨日(気づいた本人談)
    なので直近のフルバックアップより前のバックアップリストが必要ということが分かりました。(そうか、今朝のフルバックアップではダメということか。)
  • 用途とフォルダ内に保存されていたファイルやフォルダ名のキーワードを三つほどゲットしました。(とりあえず、このキーワードは含まれているんだそうで)
  • どうやら共有フォルダ内にあったフォルダは複数消えているようです。

検索してファイルを探し出してみます

さっそくゲットしたキーワードを携えて、バックアップ取得PCで検索をかけてみることにします。
まずは今回の主役Everythingを起動します。
図:Everything起動した画面

f:id:treedown:20151202013213p:plain

バックアップを取得したフォルダ(ローカルドライブ内)に対してEverythingは自動でインデックスを作成しており、起動して検索窓にキーワードを入力すれば、検索対象の範囲を一気に洗い出して検索結果を表示してくれます。
図:キーワードを入力して検索した画面

f:id:treedown:20151202013330p:plain

ぼかしていますが、検索結果にはキーワードにマッチするフォルダ&ファイル名が一覧表示されています。
検索結果はエクスポートしてテキストファイルに一覧で保存することができます。
図:エクスポート実行

f:id:treedown:20151202013342p:plain

※エクスポートできるのは、フォルダ列に表示されているフォルダ名&ファイル名込みのフルパス表示がテキストファイルになります。

いくつかキーワードをもらいましたので、同様に検索を仕掛けてエクスポートし、テキストファイルを生成していきます。が、さすがに700~800行ぐらいあるので目視で確認するというのは非効率です。
Linuxならgrep使えばいいじゃないか、というところですがWindowsですから出来上がったテキストファイルをExcelに全部貼り付けて、オートフィルタでちょっと絞り込んでみました。

すると…

ややっ?
なんかそれっぽいフルパスのフォルダ名が発見されました。さっそく発見したフルパスのフォルダを開いてみます。
ぱっとみ同じに見えるのですが、ひとまず、コマンドで一覧を比較してみることにしました。
バックアップデータ内とサーバ上の共有フォルダで
「dir /B」
コマンドで対象のフォルダ内を一覧表示し、Excelにコピペして、比較してみます。
図:Excelで比較してみた図

f:id:treedown:20151202013423p:plain

比較列でFALSEとなっている行がバックアップとサーバで相違している部分でして、バックアップ内に存在しているフォルダが2つサーバに存在していないことが突き止められました。


これか。たぶんこれだ。見つからなかった原因は二つ、

  1. 実は削除から1ヶ月ほど経過しているので、フルバックアップの場所にはなくて(分割していた)アーカイブから探さないといけない。
  2. ユーザから聞いていた階層より深い階層に対象のフォルダがあった。中間のフォルダ名は誰も覚えていなかったのでその情報がなかった。

というオチでした。
まさにEverythingで深い階層まで検索した成果によって発見できた好例です。

ユーザへリストア対象データの確認

早速ユーザに確認です。
いちおうバックアップデータ(アーカイブデータ)内の対象フォルダをキャプチャしてユーザに見てもらいました。

これですよね?
「まさしく、これです。この二つを復活させてください。」
おおっ、一発的中だった。
てか、フォルダの一覧を見ればこれだ、と言えるけど、実際に何もない状態だと一字一句間違いなくフォルダ名やファイル名を絞り出す、というのは難しいんですね。人の記憶とはある種便利である種不便なものです。

ちなみに、今回ログが全く有効に使えませんでした。
と、いうのもログは余りに容量が大きいファイルだと読み込み(ファイルを開くのに)時間が掛かって使えるレベルでなくなるため、1週間程度しか有効じゃない状況でした。(明示的にそう設定していたのです。)
で、くだんのデータは削除されてから1ヶ月くらい時間が経過しているのでログデータから名称を拾い出すことができないわけだ、と納得です。どうりで見つからないわけです。

こうして、紛失したデータは、無事アーカイブからリストアし、ユーザはバックアップの恩恵を受けることができましたとさ。
めでたしめでたし。

次回以降の課題:

テキストファイルで記録されているログを日付別か週次でrotateしてファイル単体で肥大化しないようにしつつ、ちょっと昔のバックアップ履歴も取得できるようにして置いたほうがよさそうだなぁ、と思い、別の機会にrotateするバッチファイルを作ろうと思いました。ログを全文検索できれば、バックアップ取得時やアーカイブ化した時のファイル名を全文検索で拾い出すことができる、という目論見です。

まとめ:

このようにフリーソフトEverythingを使うことで、バックアップデータ(正確にはバックアップを保管しているフォルダ)を対象としてリストアしたいデータを簡単に絞り込むことができます。今回はリストア対象がキーワードしかなかったので、キーワードで検索してそれっぽいデータを探し出す必要がありましたので、なおさらの検索インデックス万歳という結果になりました。

このように、リストアしたいデータを予めインデックス化しておくと、リストアしたいデータを探すときに非常に便利になります。取り扱うデータによってはEverythingよりも全文検索用のインデックスを生成するプログラムを使用したほうが有効なこともありますので、このあたりは個人の好みで選択してみてください。