カテゴリー別アーカイブ: windows vista

robocopyコメンドでミラーリングバックアップ

windows7でディレクトリを効率よく完全にバックアップするスクリプト

大地震・暴風豪雨・大停電・ミサイル・隕石衝突・テポドン(w)など、あらゆる震災に備え、PCデータはバックアップをとり、物理的に離れた実家などに保管しておくのが私のルールです。

500GBのポータボーハードディスクを2つ購入し(コスパの良いBUFFALO HD-PVRU2を2つ購入)、バックアップファイルの入ったポータボーHDDが必ず1つは150km離れた実家に保管されている状態をとっています。
帰省する度に、最新のバックアップをとったポータボーHDDを実家へ持って行き、実家に保管してあったポータボーHDDを自宅へ持って帰ります。(企業並みの事業継続性!とはいかないけど、怠りません♪)

毎回のバックアップにあまりにも時間がかかるので、これまで効率の悪かったスクリプトを改修しました。(今までは、一度ドライブを空にしてからコピーしていました。そんなことをしていてはバックアップに何時間も費やすことになり、その間にちっさいテポドンが飛んできて家はほぼ無傷なのに運悪くPCのみに直撃して破壊されたら悔みに悔やみきれません。)

robocopy.exeで堅牢性の高いファイルコピー!

robocopy.exeは、Windows Vista/Windows Server 2008/Windows 7/Windows Server 2008 R2で用意されているOS標準コマンドです。安心して使えますね!
robocopyは、リモートのファイル・サーバ同士でフォルダを同期させるために作られたコマンドですから、ミラーリングコピーをしたい場合には打って付けですね。

それではまず、これまで使っていたスクリプトをお披露目します。(恥ずかしすぎて死にそうです)

ECHO OFF
ECHO;
ECHO F:が対象のドライブであるか確認します。
TIMEOUT /T 3 /NOBREAK > NUL
ECHO;
F:
SET filename="これはバックアップ用ドライブです.txt"
ECHO 「F:\%filename%」が存在するか確認します。。。
TIMEOUT /T 3 /NOBREAK > NUL
IF EXIST %filename% GOTO RM
ECHO %filename%が見つかりません!F:が対象ドライブではない可能性があります。
ECHO 「F:\%filename%」を作成してから再実行してください。
pause
EXIT

:RM
ECHO F:が対象のドライブであることを確認しました。
TIMEOUT /T 3 /NOBREAK > NUL
ECHO;
ECHO 10秒後にドライブを空にします。
TIMEOUT /T 10
RMDIR F:\backup /s /q
ECHO ドライブを空にしました。
TIMEOUT /T 3 /NOBREAK > NUL

ECHO 3秒後にバックアップを開始します。
TIMEOUT /T 3 /NOBREAK > NUL

XCOPY "K:\Users\ahoman\AppData\Local\Evernote\Evernote" "F:\backup\Evernote" /e /h /y /i

XCOPY "K:\仕事のファイル" "F:\backup\仕事のファイル" /e /h /y /i

XCOPY "K:\ユーザー\ahoman" "F:\backup\ユーザー\ahoman" /e /h /y /i

スクリプトの解説・・・
まず、ポータボーHDDを空にします。このとき、ドライブレター(「C:」や「D:」など)がいつもと変わっていてローカルのドライブを削除してしまったら大変です!なので、空にする対象のドライブが本当にバックアップ用ポータボーHDDかどうかをアナログな方法で調べています。
その方法が、ポータボーHDDのトップディレクトリに
「これはバックアップ用ドライブです.txt」
という名前の空ファイルを置いておく、という方法です。
ドライブにこのファイルが無ければスクリプトはそこで終了、ファイルが有ればドライブを空にするステップに進みます。
空にするまでに更に10秒間の猶予を与え(どんなけ慎重やねん!)、そして空にし、バックアップを開始します。

さて、こんなバックアップの仕方をしていたら寿命が3倍伸びても収入は3%くらいしか増えません。

そこで今回、robocopyコマンドを使って効率よくバックアップをとるスクリプトに改修したいと思います。

変更点は以下です。
・ドライブを空にするステップを削除する。
・XCOPYコマンドをROBOCOPYコマンドに変更する。

robocopy.exeの便利なオプションの1つに「/MIR」があります。このオプションを使えばミラーリングが可能です。新しいファイルはコピーし、更新されたファイルは上書きし、コピー元に無いファイルはコピー先から削除してくれます。つまり、この最小限の働きで全く同じディレクトリ構造を作るという最大限の結果をもたらしてくれる、まさにリオネル・メッシのようなコマンドなのです!
(私のPCなんてコマンドでmessiと入力するとrobocopyが実行されるようにしているんですから!)

では、改修後のスクリプトを見てみます。

ECHO OFF
ECHO;
ECHO F:が対象のドライブであるか確認します。
TIMEOUT /T 3 /NOBREAK > NUL
ECHO;
F:
SET filename="これはバックアップ用ドライブです.txt"
ECHO 「F:\%filename%」が存在するか確認します。。。
TIMEOUT /T 3 /NOBREAK > NUL
IF EXIST %filename% GOTO RM
ECHO %filename%が見つかりません!F:が対象ドライブではない可能性があります。
ECHO 「F:\%filename%」を作成してから再実行してください。
pause
EXIT

:RM
ECHO F:が対象のドライブであることを確認しました。
TIMEOUT /T 3 /NOBREAK > NUL
ECHO;
ECHO 10秒後にミラーリングを開始します。
TIMEOUT /T 10

ROBOCOPY "K:\Users\ahoman\AppData\Local\Evernote\Evernote" "F:\backup\Evernote" /MIR

ROBOCOPY "K:\仕事のファイル" "F:\backup\仕事のファイル" /MIR

ROBOCOPY "K:\ユーザー\ahoman" "F:\backup\ユーザー\ahoman" /MIR

一部のみの改修ですが、バックアップ時間がかなり短縮しました。
これまでは「あ、実家に帰ろ!」と突発的に思っても、バックアップに半日かかるので、結局バックアップをせず、故に事業継続性に不安がある状態が続いており、つまりテポドンの危機に少しだけ直面していたのですが、これからは帰省の支度をしている間にバックアップが完了するということになります。(普段から頻繁にミラーリングバックアップをしておけば、帰省直前のバックアップにかかる時間は更に短縮されますね!ま、面倒なのでしませんけど!w)

デュアルブートのUbuntuを削除してしまい「grub rescue>」からのWindows Vistaを起動!

今日はヒヤヒヤしっぱなしの一日でした。

Windows Vistaがインストールしてあるノートパソコンに、後からUbuntuをインストールしてデュアルブートで使っていました。
Ubuntuを入れた時に、ブートローダはGRUB2になりました。

パソコンを起動するとGRUB2が起動してOSを選択して使っていました。

GRUB2の動きは、だいたいこんな感じです↓
パソコンを起動させると、MBR(マスターブートレコード)のGRUB2が読み込まれますが、そこでOSの選択ができるわけではありません。
MBRは容量が小さいため、GRUB2はUbuntuがインストールされているパーティションに書き込まれている第1.5ステージに処理を渡します。その後、第2ステージへと処理が引き継がれていきます。

さて今回、私はMBRがGRUB2のまま、Ubuntuを削除してしまったのです!
(※Ubuntuを削除する前にMBRを修復しておくべきだったのです。)

実際に行った内容は、Windows Vistaの再セットアップディスクでパソコン購入時の状態に戻したということです。

再セットアップが終わったーと思ってパソコンが再起動して立ち上がってくるのを待っていると、

grub rescue>

のコンソール画面が。
ネットで調べると、コマンドでUbuntuのパーティションを指定するように設定すれば大丈夫!なんて記事ばかりで。でも無いんです、Ubuntuのパーティションが!
困ったなぁ。と半日ハマって色々調べていると、Windowsのインストールディスから回復コンソールを開いて、MBRの修復ができるらしいと。

どこだー!とインストールディスクを探しますがありません。最近のパソコンってインストールディスクなんて付いてないことが多いんですよね。

どうしようかと思っていると、いい情報を見つけました。
現在、Windowsが提供しているWindows 8 Enterpriseの評価版isoファイルをダウンロードしてDVDに焼く。そのディスクで起動すると回復コンソールが使えて、なんとかMBRが修復できるかもしれないと!

早速やってみました。

ダウンロードして、

焼いて、

ディスクを挿入して起動。

インストールに進まず、回復コンソールを開きます。

image

トラブルシューティングをCLICK。

image

コマンドプロントをクリック。

image

コマンドプロントが開く。
bootrec
とタイプしてエンターキー。

image

コマンドのオプションが表示される。

image

bootrec /FixMbr
とタイプしてエンターキー。
一瞬で処理が終わる。

これでディスクを抜いて再起動すると、無事に再セットアップ中のWindows Vistaが上がってきました。

今回焼いたディスクは、このノートパソコンを使い続ける限り永久保存版ですね。