Windows 7では、標準装備するバックアップツールを利用して、ハードディスクの内容をまるごとシステムイメージにすることが可能だ。この方法ではデータもソフトウェアも設定もひとまとめにしてバックアップするため、ある時点でのコンピュータの状態を復元する際は有用だ。しかし裏を返せば、特定のファイルだけを取り出したい場面では不便ということでもある。それに、バックアップ作業に相応の時間がかかる難点もある。
そこで今回は、特定のフォルダだけをフォルダ同期用のコマンドラインツールでバックアップを行う方法を説明しよう。2つの方法を併用することで、さまざまなバックアップのニーズに対応できるようになるはずだ。
フォルダ同期ツールでデータを多重化する
まずバックアップ先だが、これはLANに接続できる環境ならファイルサーバやNAS(Network Attached Storage)が現実的だ。その前提で、フォルダを単位とするバックアップを円滑かつ確実に実施するには、秘訣がいくつかある。
まず、バックアップ対象となるデータを可能な限り集約するほうが良い。基本的に今のWindowsでは「ドキュメント」あるいは「マイドキュメント」フォルダにデータを保存することになっているが、実際には画像・音楽・動画は専用フォルダがあるし、アプリケーションソフトが作成するデータも保存場所が異なっている場合がある。バックアップ対象のフォルダが多いと、作業漏れが発生しないとも限らない。
とはいうものの、すべてのユーザーデータを単一のフォルダツリーの下に集約するのは難しいので、「ユーザーが作成する文書類は『ドキュメント』フォルダ以下に集約する」という前提で、以下のフォルダをバックアップ対象にするのが現実的だろう。
- ドキュメント(%UserProfile%\Documents)
- ピクチャ(%UserProfile%\Pictures)
- ミュージック(%UserProfile%\Music)
- ビデオ(%UserProfile%\Videos)
- お気に入り(%UserProfile%\Favorites)
ただし、Internet Explorer以外のWebブラウザを常用しているなら、「お気に入り」は対象から外してもよい。こうしたファイルがある一方、「%UserProfile%\AppData」も本当はバックアップしたいのだが、コピー時に一部のフォルダでアクセス権に起因するトラブルが発生するため、仕方なく対象から外している。
次の秘訣として、作業の単純化が挙げられる。何ステップもの作業を必要とするのでは煩雑になり、ついサボってしまうからだ。だから、バックアップとして行う作業は簡単なほうがよい。そして、復元も簡単にできるほうがよい。そのため、圧縮やアーカイブといった手段は使わない。
そこで筆者は、マイクロソフトが提供しているコマンドラインツールの「robocopy.exe」を使用するバッチファイルでフォルダ同士を同期するようにして、ダブルクリックだけでバックアップを取れるようにしている。
最後に挙げる秘訣は、同期の方向を限定することだ。たとえ双方向同期が可能なツールであっても、行ったり来たりするのでは混乱の元である。「データの更新は必ずコピー元のコンピュータでのみ行い、そこからバックアップ先に同期する」というルールを守れば、データが先祖帰りして慌てるようなトラブルは避けられる。
robocopy.exeの入手方法とバッチファイルの内容
robocopy.exeは、Windows Vista以降は標準装備のツールになっている。つまり、同機用のツールを配布したりセットアップしたりする手間がかからないというわけで、それだけでもメリットは大きい。なお、Windows XP以前のバージョンではリソースキットツールを入手することで利用可能になる。
robocopy.exeは多様な機能を備えているが、フォルダ同期という話に的を絞ると、基本的なコマンドラインの内容は以下のようになる。
robocopy <コピー元のパス> <コピー先のパス> /mir
ただし「ドキュメント」フォルダを対象とする場合、そこにあるジャンクションがアクセス権に起因するエラーを引き起こすため、フォルダ除外の指定を付加して以下のようにする必要がある。
robocopy <コピー元のパス> <コピー先のパス> /mir /XD "My Pictures" "My Music" "My Videos"
「/XD」に続けてスペースで区切ってフォルダ名を列挙すると、それらのフォルダは対象から外される。上の例では記述していないが、同じ要領で「/XF」に続けてスペースで区切ってファイル名を列挙すると、それらのファイルも対象から外される。
例えば、「ドキュメント」フォルダの内容を共有フォルダ「\hestia\backup」以下に設けたユーザーごとのフォルダ(フォルダ名はユーザーログオン名と同じにする)以下に同期複製するのであれば、以下のような内容になる。
robocopy %UserProfile%\Documents \\hestia\backup\%UserName%\Documents /mir /XD "My Pictures" "My Music" "My Videos"
この例ではコピー元とコピー先の指定に環境変数「%UserProfile%」と「%UserName%」を利用しているから、ユーザー名が何であれ、問題なく対応できる。つまり、同じバッチファイルを異なるユーザーが共用できるという意味になる。また、「Documents」の部分を書き換えれば、ユーザープロファイル以下にある任意のフォルダに対応できる(なお、ファイル/フォルダ名がスペースを含む場合は、上の例にもあるように、引用符で囲まなければならない)。
こうした内容のコマンドラインをバッチファイルにして共有フォルダに置いておけば、ユーザーはバッチファイルを手元にコピーしてこなくても、リモートで実行できる。さらに、バッチファイルのショートカットを各自のデスクトップに置いておけば手間いらずだ。
なお、本稿では話を単純にするために同期機能に的を絞っているが、robocopy.exeが備える各種機能は、コマンドプロンプトで「robocopy /?」と入力してヘルプ画面を表示させることで確認できる。
ノートPCではフラッシュメモリカードにコピーする
オフィスや自宅に固定しているコンピュータであれば、ファイルサーバあるいはNASに共有フォルダを用意して同期をかけるのがよい。その際、他のユーザーのファイルが見えないように、ユーザーごとに本人だけがアクセスできるように共有アクセス権を設定した共有フォルダを作成するのがベストだろう。
ただし、外に持ち出すノートPCの場合、この方法だけでは具合が悪い。バックアップのためにいちいちVPNでLANに接続するのは面倒だし、実用的な速度にならない可能性もある。
では、USBメモリはどうかというと、いちいち脱着する手間がかかるうえに、外したものを紛失する危険性もある。そこで、大抵のノートPCが備えているであろうメモリカードスロットを利用して、そこにフラッシュメモリカードを取り付けておくのがベストだろう。一般的にはSDカードスロットということになる。
ただし、デジタルカメラからデータを吸い上げる機会が多いユーザーにとっては、メモリカードスロットが塞がれてしまうと排他利用になってしまって不便だ。筆者が使用しているVAIO Yのようにデュアルスロット(メモリースティックDuo + SD)になっていると便利だが、それが実現できなければ、デジタルカメラからのデータ吸い出しはUSB接続の外付けカードリーダーにするほうが良いと思う。
ここまで複数回にわたり、データ保全術というテーマで解説してきた。あまり込み入った話をして「面倒くさそう」と思われても困るので、できるだけ話の内容を絞り込んだつもりだ。まずはシンプルな手順でバックアップ体制を構築したうえで、実情に合わせて手直ししたり、体制の強化を図ったりしていただきたい。