カテゴリー別アーカイブ: windows2000

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)

Windows2000、サポート終了(2010/7/13)

2010/7/13に10年間のサポート期間が終了した「Windows2000」が、自治体や国内企業のコンピューター15万台 以上で使われているらしい。

これは・・・すごく危険な匂いがぷーんぷんする。

・Win2000のコンピューターがやられる可能性がある
・中継に使われ、大規模なサーバー攻撃の反乱の可能性

私自身も2000には大変お世話になりました。
2000以降、様々なOSが出ても何度か2000にもどったりしましたもん。
軽いし、エラーも少ないし安定している。
WindowsMeの入ったノートPCを買ったときは、不良品かと思って返品交換したかった思い出が・・・w
もちろんすぐにWindows2000を入れ直しました。

思いで話になっちゃいましたが
日本はもっとUNIX系OS化していくべきだと思う。

予算が無くて買い替えできない自治体だらけだなーんてことだと思う。
個人情報満載だし、まぁまぁ基幹になってくるプログラムも2000の上に載せて運用している自治体なんて
きっとゴロゴロあるんですよね?

新興国はお金の問題もあってUNIX系OSの利用率が高いと聞いたこともありますが、
正解だと思います。

お世話になっているのでWindowsを批判するつもりはありませんが、
一企業のシステムに依存するのは危ない面があると今回再認識。

よし、UNIX系OXを広める会を加速させようと思うw

ちなみに、
「セキュリティソフトを入れていれば、サポート終了のウインドウズ2000を使い続けても大丈夫」

で は あ り ま せ ん ! !

この誤解、あー怖!