Update: 2011/06/01 USBメモへリのバックアップに「デスクトップ」を追加しました。
あなたは、パソコンを使っていてトラブルに遭遇したことは、ありませんか?
誰でも、長期にわたってパソコンを使っていると必ず何らかのトラブルに遭遇します。
例えば、ハードディスクやメモリー、CPU、マザーボードなど部品の故障やWord、Excel、Windowsなどソフトウェアの不調が代表的なトラブルとしてあげられます。
そして、こうしたトラブルが発生するごとに、データのバックアップやプログラムの入れ替えといった長時間の復旧作業をしなければなりません。
場合によっては、仕事で使う重要書類やデジカメで取った記念写真などのデータが消失するといった被害をこうむることもあるのです。
プログラムやOSは、インストールしなおせばよいのですが、一度失った個人のデータは、二度と元には戻せません。
バックアップの話をしていると、「私のパソコンには重要なデータなんか入っていないから大丈夫。」といったことをよく聞くのですが、メールアドレスの設定(メールサーバーやメールパスワード)や、インターネットでサービスを受けるためのログインID・パスワードなどメモに残していない情報が消失してしまって困ることも多いのです。
そこで、こうしたトラブルに対処するために日ごろから「バックアップ」をとるようにするわけです。
じつは、バックアップ自体は、主に個人が作った書類やデジカメの画像などを中心にバックアップ用のフォルダーやCD−R/DVD−Rなどにコピーするだけの簡単な作業です。
でも現実には、コピーをとるという一手間がなかなかできないことも事実なのです。
よく、日時を決めて作業をすればよいとかいわれるのですが、忘れたり面倒だったりして結局「バックアップをとっていない」ということになりがちです。
今なら、安価な市販のバックアップソフトであってもスケジュール機能がついていたり、ハードディスク全体のドライブイメージを丸ごとコピーして、トラブル時の復旧作業が簡単にできるようになっていたりします。
どのソフトも実績に定評がありますが、それぞれ特徴がありますので必要な機能を確認して選択しましょう。
このように市販ソフトでバックアップをとる方法は、お手軽で大変よい方法なのですが、バックアップのためにわざわざソフトを買うのはいやだという人も居るでしょう。
※例えば私のように...σ(^_^;
で、登場するのが無料でバックアップをとる方法なのですが...
じつは、これにもフリーソフトを使う方法とマザーボードの機能を利用したRAIDあるいは、XCOPY・バックアップなどWindows付属のユーティリティを利用する方法など多くの選択肢があります。
どの方法を使うかは好みで決めてよいと思いますが、
といった長所と欠点があるのです。
またこれらのバックアップ作業については、ソフトウェアRAIDか自動バックアップ機能のついたフリーソフトでない場合、基本的に手動で実行しなければなりません。
そこで、バックアップを自動的に行うために工夫をする必要があります。
ここでは、一番お手軽なXCOPYを使った「ハードディスクの丸ごとバックアップ」と「バックアップの自動化方法」を紹介することにします。
XCOPYは、先ほど紹介した通り、単純にファイルをコピーするDOS用のコマンドです。
使い方は、
XCOPY 送り側 [受け側] [/A | /M] [/D[:日付]] [/P] [/S [/E]] [/V] [/W]
[/C] [/I] [/Q] [/F] [/L] [/H] [/R] [/T] [/U]
[/K] [/N] [/Z]
[/EXCLUDE:ファイル1[+ファイル2][+ファイル3]...]
送り側 コピーするファイル (複数可) を指定します。
受け側 新しいファイルの位置や名前を指定します。
/A アーカイブ属性のファイルのみをコピーし、属性は変更しません。
/M アーカイブ属性のファイルのみをコピーし、アーカイブ属性を解除します。
/D:月-日-年 指定された日付以降に変更されたファイルをコピーします。
日付が指定されなかったときは、送り側の日付が受け側の日付より新しいファイルだけ
をコピーします。
/EXCLUDE:ファイル1[+ファイル2][+ファイル3]...
文字列を含むファイルの一覧を指定します。
文字列がコピーされるファイルの絶対パスの一部と一致した場合、
そのファイルはコピーから除外されます。
/P 受け側のファイルを作成する前に確認のメッセージを表示します。
/S 空の場合を除いて、サブディレクトリをコピーします。
/E サブディレクトリが空であってもコピーします。
/S /E と同じ意味です。/T と同時に指定できます。
/V 書き込んだ各ファイルを検証します。
/W キー入力があるまでコピー開始を待ちます。
/C エラーが発生してもコピーを続けます。
/I 受け側がなく複数のファイルをコピーする場合、受け側をディレクトリとしてコピーします。
/Q コピー中ファイル名を表示しません。
/F コピー中送り側と受け側の全ファイル名を表示します。
/L コピーされるファイル名を表示します。
/H 隠しファイルやシステム ファイルもコピーします。
/R 読み取り専用ファイルを上書きします。
/T ファイルはコピーせずにディレクトリのみを作成します。
ディレクトリまたはサブディレクトリが空の場合は除きます。
/E と使用すればディレクトリやサブディレクトリが空でも作成されます。
/U 受け側に既に存在するファイルだけをコピーします。
/K 属性をコピーします。通常の XCOPY は読み取り専用属性を変更します。
/N 生成された短い名前を使用してコピーします。
/O ファイルの所有権と ACL 情報をコピーします。
/X ファイル監査設定をコピーします ( /O を含む)。
/Y 受け側の既存のファイルを上書きする前に確認のメッセージを表示しません。
/-Y 受け側の既存のファイルを上書きする前に確認のメッセージを表示します。
/Z 再起動可能モードでネットワーク ファイルをコピーします。
となっています。
OS付属のコピーコマンドにしてはかなり高機能な仕様です。
単純なデータのコピーだけならUSBメモリとXCOPYだけで用は
足りてしまうでしょう。
それではここで、バックアップのための条件を考えておくことにしましょう。
バックアップのための条件)
基本的にバックアップすべき最低限の情報は、業務ソフトを使っている場合「業務ソフトのデータ」、次に「メール」、「メールアドレスと設定情報」、「マイドキュメント」フォルダー内のデータ、ということになります。
そのほか、インターネットの設定情報や「お気に入り」に登録してあるホームページのアドレス(URL)およびログインID・ログインパスワードとなります。
そして、これら業務・個人データ以外のプログラムやOSの設定などは、復旧作業で時間をかければ元の状態に近づけることができます。
しかし、障害からの復旧やバックアップをとるたびに複雑で面倒な作業が発生するのは嫌なので、ハードディスクを2台用意し、1台を通常使用するハードディスク、もう1台をバックアップ用に使うことにします。
システム障害時には、バックアップディスクを起動ドライブとして、切り替え運転ができるようにします。
(HD革命/Clone Diskと同等の運用を考えるわけですね。)
この場合、マザーボードに付属のRAIDでも同等のことが可能で、はじめから全自動バックアップになるわけですが、原則的にハードディスクは同機種、同容量でなければ動作は保証されません。
(というか、バックアップ用のディスクは元のディスクと同等以上の容量があればいいのですが、元のディスク容量以上は使われない状態になるのです。)
したがって障害時には、個別にハードディスクを交換することが困難となり、セットでの交換を考えざるおえません。
その点、ハードディスクの容量について自由度が高い「HD革命/Clone Disk」やXCOPYでのハードディスクコピーは扱いやすいといえるでしょう。
当然ですが、ハードディスクの丸ごとコピーを行うわけですから、まったく同じファイルが2台のハードディスクに書き込まれることになり、記憶容量の利用効率は悪くなります。
まあ、これは記憶領域の利用効率よりもデータのバックアップとシステム運用の利便性を優先しているわけですからあきらめるより仕方ありません。
※ハードディスクの寿命は、通常2年程度と考えられますが、運が悪いと半年も持たずに壊れる場合があります。
できれば、1年ごとに新しいハードディスクに交換することをおすすめします。
さて、この条件を満たすためにはどうすればいいかを考えます。
XCOPYコマンドでは、起動ドライブのシステムファイルを完全にコピーすることができません。
※起動ドライブ以外のハードディスク(HDD)でも、Windowsが使用中であるシステムファイル(System Volume Informationなど)は正常にコピーできないようです。
そこで、システムファイルを少しでも完全に近い形でコピーするために、1台目(通常使用)のハードディスク(HDD)と2台目(バックアップ)のハードディスク(HDD)ともに、最低2つのパーティション(区画)に分けておきます。
まず、1台目のハードディスクをパソコンにつなぎ、1番目のパーティション(ドライブC)を平常使用するものとしてWindowsをインストールします。
当然、ワードやエクセルなどのアプリケーションもドライブCにインストールして使うことになります。
1台目ハードディスクの2番目のパーティション(ドライブD)は、バックアップのときあるいは緊急起動時のみ使うパーティションとしてWindowsをインストールします。
ドライブDは、バックアップ専用なので、領域は10GB(ギガバイト)もあれば十分でインストールするソフトもテキストエディターがあれば便利かな(?)という程度です。
つぎに、1台目のハードディスクを外して2台目のハードディスクをつなぎます。
2台目のハードディスクでは、1台目のクローン(コピー)とするために、パーティション(区画)を作っておきます。
2台目ハードディスクの1番目のパーティション(ドライブE)は、1台目の1番目のパーティションをコピーするための領域としてWindowsをインストールしておきます。
このインストールは、Windowsの起動システムがXCOPYではコピーされないため必ず行わなければなりません。
2台目ハードディスクの2番目のパーティション(ドライブF)は、1台目、2番目のパーティション(ドライブD)をコピーする領域になります。
こちらも、さきのドライブEと同様、Windowsのインストールが必要です。
結果として、ハードディスクの構成は、
1台目:ドライブC(通常使用する領域)、ドライブD(Cドライブのバックアップ作業を実行するための領域)
2台目:ドライブE(ドライブCのコピー領域)、ドライブF(ドライブDのコピー領域)
となります。
(注意)
Windowsのシステムをインストールするときは、ハードディスクを1台づつ接続してそれぞれのC、D領域にWindowsをインストールしてください。
2台のハードディスクを同時にパソコンにつないで、C、D、E、Fの領域でWindowsをインストールすると、障害復旧時のシステム起動に失敗することがあります。
障害復旧時に交換したハードディスクからのシステム起動に失敗した場合は、Windowsの修復インストールを行ってみてください。
ハードディスクのコピーをとるXCOPYコマンドは、自動実行するため、バッチファイルで使います。
それでは準備として、バックアップで使うバッチファイルを保管しておくフォルダー(ディレクトリー)を作っておきましょう。
このフォルダー(ディレクトリー)は、「マイ ドキュメント」フォルダーよりもドライブDのルート(直下)に作っておいたほうが都合が良いのでスタートメニューまたは、デスクトップの「マイ コンピューター」をクリックし、さらにドライブ(D)をクリックします。
ドライブDの表示が出たらメニューバーの「ファイル」から「新規作成」→「フォルダ」で新規フォルダーを作成します。
新規フォルダーの名前は半角英数字であれば自由に設定してもらってかまいませんが、ここでは、説明の都合上「back」という名前を使うことにします。
XCOPYの記述は、こんな感じです。
XCOPY C:\*.* E:\ /C /E /R /H /K < all.txt
C:\*.* :ドライブCのすべてのフォルダとファイルをコピー元に指定します。
E:\ : ドライブEのルート(直下)をコピー先に指定します。
/C:エラーが発生しても中断せず最後までコピーを続けます。
/E:フォルダー(ディレクトリー)ごとコピーをとります。
/R:読み取り専用ファイルもコピーします。
/H:隠しファイルやシステムファイルもコピーします。
/K:ファイルの属性もコピーします。
< all.txt :半角文字「A」のみ記入したファイル「all.txt」をつくり、
XCOPYの上書きのメッセージに自動応答させます。
Windows2000の場合 [boot loader] timeout=30 default=multi(0)disk(0)rdisk(0)partition(1)\WINNT [operating system] multi(0)disk(0)rdisk(0)partition(1)\WINNT="Microsoft Windows 2000 Professional" /fastdetect multi(0)disk(0)rdisk(0)partition(2)\WINNT="Microsoft Windows 2000 Professional" /fastdetect |
WindowsXPの場合 [boot loader] timeout=30 default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS [operating system] multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect /NoExecute=OptIn multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Microsoft Windows XP Professional" /fastdetect /NoExecute=OptIn |
のように設定されていると思います。
[boot loader]では、
timeout=30・・・起動OSの選択待ち時間です。
default=multi(0)disk(0)rdisk(0)partition(1)\WINNT
または
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
で起動待ちの間にOSの選択が無かった場合の既定の起動OSを設定しています。
[operating system]の項目では、
multi(0)disk(0)rdisk(0)partition(1)\WINNT="Microsoft Windows 2000 Professional" /fastdetect
multi(0)disk(0)rdisk(0)partition(2)\WINNT="Microsoft Windows 2000 Professional" /fastdetect
あるいは、
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect /NoExecute=OptIn
multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Microsoft Windows XP Professional" /fastdetect /NoExecute=OptIn
では、multi(0)→SCSI以外のINT15でアクセスできるハードディスクの0番目ということらしいです。
disk(0) → ハードディスクの0番目というとこのようです。
rdisk(0) → RAIDを使っている場合のドライブ0らしいです。
partition(1) → パーティション(区画)番号1のようです。
\WINNT → システムフォルダの指定です。
="Microsoft Windows 2000 Professional" → OS選択画面で表示されるOSの名前です。
/fastdetect → よく分かりませんが、検出されたOSという意味のようです。
/NoExecute=OptIn → 意味が分かりません。
このboot.iniファイルでポイントとなるのは
[boot loader]の項にある
default=multi(0)disk(0)rdisk(0)partition(1)\WINNT
または
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
を
default=multi(0)disk(0)rdisk(0)partition(2)\WINNT
または
default=multi(0)disk(0)rdisk(0)partition(2)\WINDOWS
に変更することで起動ドライブを変更(ドライブCからドライブDに)できることです。
また、Windows2000/XPの再起動は、VBscriptを使うことで自動化できます。
では、このboot.iniファイルを変更してパソコンを再起動する手順を示します。
1.先ほどドライブDに作った「back」フォルダーを開きます。
次に、別ウィンドーでドライブCのルート(直下)フォルダーを表示します。
ここから、ドライブCの「boot.ini」をドライブDのbackフォルダーにコピーします。
もし「boot.ini」ファイルが表示されていない場合、
ウィンドウのメニューバーにある「ツール」 → 「フォルダーオプション」から「表示」タブを選択し、
詳細設定を表示します。
次に「ファイルとフォルダの表示」で「すべてのファイルとフォルダを表示する」にチェックを
入れます。
さらに、「保護されたオペレーティング システム ファイルを表示しない(推奨)」のチェックを
はずします。
これで、boot.iniファイルが(薄く)表示されるようになりましたから、ドライブDのbackフォルダー
にコピーしてください。
もし、ドライブCのboot.iniファイルの拡張子が表示されず「boot」のみの表示であった場合には、
ウィンドウのメニューバーにある「ツール」 → 「フォルダーオプション」から「表示」タブを選択し、
詳細設定を表示します。
次に、詳細表示の「登録されているファイルの拡張子は表示しない」のチェックをはずしてください。
※以下のバッチファイルやVBscriptファイルを作成するには、
「back」フォルダーのメニューバーから「ファイル」 → 「新規作成」 → 「テキストドキュメント」
の順にメニューをたどり、backフォルダーに「新規テキスト ドキュメント.txt」を作ります。
このファイルをメモ帳などのテキストエディターで開いて、バッチファイルやVBscriptの内容を
コピー&ペーストで複写します。
この後、メモ帳のメニューバーから「ファイル」 → 「名前を付けて保存」を選択し、ファイル名の
欄にそれぞれの名前を記入して保存を行います。
保存が終わったら、再び「back」フォルダーを見て、ファイル名が正しく付けられていることを
確認してください。
正しく名前がついていない場合は、対象のファイルを右クリックして、「名前の変更」を選択し
ファイル名を付け替えます。
2.ドライブDから起動するboot用ファイルを「back」フォルダーに作ります。
ファイル名:boot_d.txt
【WindowsXPの場合】
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(2)\WINDOWS
[operating system]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional (1)" /fastdetect /NoExecute=OptIn
multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Microsoft Windows XP Professional (2)" /fastdetect /NoExecute=OptIn
【Windows2000の場合】
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(2)\WINNT
[operating system]
multi(0)disk(0)rdisk(0)partition(1)\WINNT="Microsoft Windows 2000 Professional (1)" /fastdetect
multi(0)disk(0)rdisk(0)partition(2)\WINNT="Microsoft Windows 2000 Professional (2)" /fastdetect
3.起動ドライブをドライブCに戻すためのbootファイルを「back」フォルダーに作ります。
ファイル名:boot_c.txt
【WindowsXPの場合】
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating system]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect /NoExecute=OptIn
multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Microsoft Windows XP Professional" /fastdetect /NoExecute=OptIn
【Windows2000の場合】
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINNT
[operating system]
multi(0)disk(0)rdisk(0)partition(1)\WINNT="Microsoft Windows 2000 Professional" /fastdetect
multi(0)disk(0)rdisk(0)partition(2)\WINNT="Microsoft Windows 2000 Professional" /fastdetect
4.起動ドライブをCからDに変更して再起動させるためのバッチファイルを「back」フォルダーに作ります。
ファイル名:boot_d.bat
ATTRIB c:\boot.ini -s -h -r
DEL c:\boot.ini
COPY d:\back\boot_d.txt c:\boot.ini
ATTRIB c:\boot.ini +s +h +r
START reboot.bat
5.パソコンを再起動をさせるためのバッチファイルを「back」フォルダーに作ります。
バッチファイル名:reboot.bat
cscript reboot.vbs
6.パソコンを再起動をさせるためのVBscriptファイルを「back」フォルダーに作ります。
VBscriptファイル名:reboot.vbs
'Win32_OperatingSystem object の Win32ShutDown method を使ってWindowsの終了、ログオフ、再起動、電源オフを行います。
'
'システムの実行特権を与えるための数値
' wbemPrivilegeLocal = 18
' wbemPrivilegeRemote = 23
'動作と値の対応
' ログオフ : Log Off = 0
' Windowsの終了 : Shutdown = 1
' 再起動 : Reboot = 2
' 電源オフ : Power Off = 8
' 強制ログオフ : Forced Log Off = 0 + 4 = 4
' Windowsの強制終了 : Forced Shutdown = 1 + 4 = 5
' 強制終了と再起動 : Forced Reboot = 2 + 4 = 6
' 強制終了と電源オフ : Forced Power Off = 8 + 4 = 12
Const wbemPrivilegeLocal = 18
Const wbemPrivilegeRemote = 23
Const LogOff = 0
Const Shutdown = 1
Const Reboot = 2
Const PowerOff = 8
Const ForcedLogOff = 4
Const ForcedShutdown = 5
Const ForcedReboot = 6
Const ForcedPowerOff = 12
Dim Connection, WQL, SystemClass, System, toDo
'ここで終了動作を選択できます。
'toDo = LogOff
'toDo = ForcedLogOff
'toDo = Shutdown
'toDo = ForcedShutdown
toDo = Reboot
'toDo = ForcedReboot
'toDo = PowerOff
'toDo = ForcedPowerOff
'自マシン上の 「wmi」 に接続
Set Connection = GetObject("winmgmts:root\cimv2")
'自マシン上でシステムの実行特権を許可する
Set Security = Connection.Security_
Security.Privileges.Add wbemPrivilegeLocal
'Get Win32_OperatingSystem objects - このコレクションは1つのオブジェクトのみ
WQL = "Select Name From Win32_OperatingSystem"
Set SystemClass = Connection.ExecQuery(WQL, , 0)
'システムオブジェクトを取り出してシャットダウン処理を実行
For Each System In SystemClass
System.Win32ShutDown (toDo)
Next
7.起動ドライブをDからCに変更して再起動させるためのバッチファイルを「back」フォルダーに作ります。
ファイル名:boot_c.bat
ATTRIB c:\boot.ini -s -h -r
DEL c:\boot.ini
COPY d:\back\boot_c.txt c:\boot.ini
ATTRIB c:\boot.ini +s +h +r
START reboot.bat
8.これで起動ドライブを変更して再起動ができるようになりました。
ドライブDの「back」フォルダーから「boot_c2d.bat」や「boot_d2c.bat」を起動して、
ブートドライブ変更後に、再起動できるか確認してください。
ここまでで、やっと起動ドライブの選択が行えるようになりました。
ちょっと一息入れましょう。
ハードディスク故障の原因 |
それでは、いよいよ本番のディスクコピーです。
ディスクコピー用のバッチファイルは、
ファイル名:copy_c2e.bat
IF NOT EXIST c:\windows GOTO NT
IF NOT EXIST e:\windows MKDIR e:\windows
XCOPY c:\*.* e:\ /C /E /H /R /K <all.txt
GOTO REBOOT
:NT
IF NOT EXIST c:\winnt GOTO REBOOT
IF NOT EXIST e:\winnt MKDIR e:\winnt
XCOPY c:\*.* e:\ /C /E /H /R /K <all.txt
:REBOOT
START boot_c.bat
XCOPYの上書き問い合わせのメッセージに自動応答するためのファイルは、
ファイル名:all.txt
a
とします。
※ XCOPYのオプションスイッチ /Y を指定しておけば必要ありません。
ドライブDをドライブFにコピーするバッチファイルは、
ファイル名:copy_d2f.bat
IF NOT EXIST d:\windows GOTO NT
IF NOT EXIST f:\windows MKDIR f:\windows
XCOPY d:\*.* f:\ /C /E /H /R /K <all.txt
GOTO EXIT
:NT
IF NOT EXIST d:\winnt GOTO EXIT
IF NOT EXIST f:\winnt MKDIR f:\winnt
XCOPY d:\*.* f:\ /C /E /H /R /K <all.txt
:EXIT
となります。
※こちらは、コピー終了後の再起動は必要ないので「start boot_c.bat」の行が入っていません。
さて、これでコピーはできるのですが、バックアップを自動的に実行させるためには、WindowsをドライブDから起動してスタートメニューの「スタートアップ」に、このバッチファイルを登録しなければなりません。
【スタートアップへの登録手順】
(0.動作確認をかねて、「boot_d.bat」をダブルクリックし、ドライブDから起動させます。)
1.ドライブDから起動後、ドライブDのルート(直下)にあるフォルダー「back」を開きます。
2.バッチファイル「copy_c2e.bat」を右クリックして、ドロップダウンメニューを表示します。
3.ドロップダウンメニューにある「送る」 → 「デスクトップ(ショートカットを作成)」でデスクトップに
ショートカットを作っておきます。
4.スタートメニューをクリックして、「すべてのプログラム」または「プログラム」から「スタートアップ」
を選択します。
5.「スタートアップ」にマウスアイコンをあわせて、右クリックでドロップダウンメニューを表示します。
6.メニューの中段付近にある「エクスプローラー All Users(X)」を選択します。
7.「スターアップ」フォルダーが表示されたら、デスクトップにある「copy_c2e.bat」へのショートカットを
スタートアップフォルダーに移動(ドラッグアンドドロップ)します。
8.作業が終了したら、「boot_c.bat」をダブルクリックし、ドライブCから再起動することを確認しま
しょう。
ここまでで、ドライブDから起動すると自動的にドライブCをドライブEにコピーできるようになりました。
ドライブCからの起動が終わったら、もう一度「boot_d.bat」をダブルクリックします。
1.再起動がかかって、ドライブDから起動します。
2.起動後、ドライブCのフォルダー/ファイルをドライブEにコピーします。
3.今度はドライブCから再起動します。
ここまでは、うまく動作したでしょうか?
バッチファイルの作業が途中で止まった場合は、入力のミスがありますから慎重に入力した文字をチェックしてください。
※バッチファイルでは、コマンドはすべて半角文字を使うようになっています。全角文字が入ってないか確認してください。
これで、ドライブCをシステムごとドライブDにコピーができるようになって、幸せな気分に浸っているのですが、
このままではドライブDから起動するたびに、ドライブCをコピーして再びドライブCから再起動してしまいます。
これは、正しい動作ですが、純粋にドライブDから起動して作業したい場合には困ります。
※バッチファイルを強制終了させてもよいのですが、システムファイルのコピー中に
「強制終了」をかけるのは、ちょっと気持ちが悪いものです。
そこで、起動ドライブの変更用バッチファイル「boot_d.bat」とシステムコピー用バッチファイル「copy_c2e.bat」に工夫をして、「boot_d.bat」を実行したときだけディスクのコピーを行うようにコマンドを追加します。
「boot_d.bat」変更分
ファイル名:boot_d.bat
ATTRIB c:\boot.ini -s -h -r
DEL c:\boot.ini
COPY d:\back\boot_d.txt c:\boot.ini
ATTRIB c:\boot.ini +s +h +r
REM バックアップを開始するように「backup_start.txt」を作成する。 ← この行は無くても動作します。
COPY d:\back\all.txt d:\back\backup_start.txt
START reboot.bat
「copy_c2e.bat」変更分
ファイル名:copy_c2e.bat
REM 「backup_start.txt」がなければバックアップを中止 します。← この行は無くても動作します。
IF NOT EXIST d:\back\backup_start.txt GOTO EXIT
DEL d:\back\backup_start.txt
IF NOT EXIST c:\windows GOTO NT
IF NOT EXIST e:\windows MKDIR e:\windows
XCOPY c:\*.* e:\ /C /E /H /R /K <all.txt
GOTO REBOOT
:NT
IF NOT EXIST c:\winnt GOTO REBOOT
IF NOT EXIST e:\winnt MKDIR e:\winnt
XCOPY c:\*.* e:\ /C /E /H /R /K <all.txt
:REBOOT
START boot_c.bat
:EXIT
さあこれで、「ディスク丸ごとバックアップ」の仕掛けができました。
あとは、「タスク」に登録して、自動実行させるだけです。
タスクへの登録は、
スタートメニューから「コントロールパネル」を表示して、「パフォーマンスとメンテナンス」→「タスク」
または、
スタートメニューから「設定」→「コントロールパネル」→「タスク」
で「タスク」のウィンドーを表示します。
「スケジュールされたタスクの追加」をダブルクリックします。
タスクウィザードが起動するので、「参照」ボタンを使ってドライブDの「D:\back\boot_d.bat」を選択します。
バックアップをとりたい日付・時刻を入力します。
プログラム(バッチファイル)を誰の権限で実行するか指定するために、ユーザー名/パスワードを入力します。
タスクへの登録が完了したら、動作確認のために、タスクを右クリックして「タスクの実行」を選択します。
うまくバッチファイルが起動できないときは、ユーザー名/パスワードが間違っているか、ユーザーがパスワードを設定していない、あるいは、設定したユーザー名にシステムファイルのコピーなどを行う権限がないなどの理由が考えられます。
ユーザーのパスワードを設定・変更するには、netコマンドを使うと便利です。
ネットコマンドの操作)
スタートメニューからコマンドプロンプト(コマンドボックス)を表示します。
net user ユーザー名 パスワード[enter]
とします。([enter]は、enterキーの入力を表します。)
ここでは、ユーザー名を administrator
パスワードを pass
として設定してみます。
net user administrator pass[enter]
ユーザー:administrator は、Windowsが標準で用意するユーザー名でシステム管理者の権限を持っています。
通常のWindows利用ではほとんどこのユーザー名を気にする必要はないのですが、Windowsのシステムにかかわる操作をするときに、お世話になる場合もあるので覚えておくと良いでしょう。
うまくタスクが起動しない場合は、netコマンドで administrator にパスワードを設定したあと、タスクのユーザー/パスワードを administrator に変更して実行してみてください。
同様にドライブDをドライブFにコピーするバッチファイル「copy_d2f.bat」も月1回程度実行するようにタスクへ登録しておきましょう。
これで、めでたく「ディスク丸ごとバックアップ」を自動的に行えるようになりました。
完成したプログラムの実行順序は、以下のようになります。
1.タスクに登録されている「d:\back\boot_d.bat」が起動されます。
2.ブートドライブをDドライブに変更して、再起動をかけます。
「boot_d.txt」でboot.iniを置き換え
「d:\back\backup_start.txt」ファイルを作成
reboot.bat→reboot.vbsで再起動をかける。
3.DドライブからWindowsが起動し、スタートアップに登録されている「copy_c2e.bat」が起動されます。
「d:\back\backup_start.txt」ファイルがあればコピー処理を開始。(ファイルがなければ、5.再起動へ)
「d:\back\backup_start.txt」ファイルを削除する。
4.CドライブのファイルをEドライブにコピー(バックアップ)します。
「c:\windows」フォルダーがあれば、「c:\windows」とCドライブのファイルをコピー
「c:\winnt」フォルダーがあれば、「c:\winnt」とCドライブのファイルをコピー
5.ドライブのコピー終了後「d:\back\boot_c.bat」を起動し、ブートドライブをCドライブに変更して再起動をかけます。
「boot_c.txt」でboot.iniを置き換え
reboot.bat→reboot.vbsで再起動をかける。
6.CドライブからWindowsが起動し、処理が終了します。
※ファイルリスト
boot_d.bat・・・ドライブDからWindowsを起動するバッチファイル
boot_d.txt・・・ドライブDからWindowsを起動させるためのboot.iniのデータ(XP)
reboot.bat・・・再起動用のバッチファイル
reboot.vbs・・・再起動用のVBSファイル(reboot.batから呼び出される)
copy_c2e.bat・・CドライブのファイルをEドライブにコピーするためのバッチファイル
copy_d2f.bat・・DドライブのファイルをFドライブにコピーするためのバッチファイル(単独で使います。)
all.txt・・・・すべてのファイルをコピーするためのXCOPYコマンドへの応答ファイル
boot_c.bat・・・ドライブCからWindowsを起動するバッチファイル
boot_c.txt・・・ドライブCからWindowsを起動させるためのboot.iniのデータ(XP)
drv_cpy.zip・・・バックアッププログラムを1つにまとめたダウンロード用ZIPファイル。(XP用)
drv_cpy_2k.zip・・・バックアッププログラムを1つにまとめたダウンロード用ZIPファイル。(2000用)
動作確認環境
・パソコン機種名:自作DOS/Vマシン
・CPU:AMD K6−450MHz
・MEM:384MB
・VGA:S3 Sarvage 2MB
・M/B:Aopen AX59Pro
・HDD:Hitachi DeskStar 82.3GB×2台(E-IDE)
HDDラック2基装着にてプライマリーマスター+セカンダリーマスターにて運用
・CD/DVD:Mitsumi CD−ROM FX240S 24倍速
・筐体:ミドルタワータイプ(5インチベイ×3+3.5インチベイ×2)
・電源:450W(Pentium4対応)
・OS:WindowsXP SP2
・セキュリティソフト:KingSoft 無料版Internet Security
・使用目的:ファイルサーバー及びバックアップサーバー
ここまででバックアップの自動化はOKなのですが、実際にハードディスク(HDD)が故障したときの対応を考えておきましょう。
バックアップはあるが、いざ故障というときにはあせってしまって「なかなか復旧がはかどらない。」ということもよくあります。
事前に、復旧作業を手順化して紙に書いておけば、比較的短時間に作業を終えることができます。
標準的な復旧方法は、次の通りです。
1)パソコンの動作異常や故障を確認します。
2)実行中の処理を終了し電源を切断(シャットダウン)します。
3)故障していると思われるハードディスク(通常は1番目のドライブ)を外します。
4)正常なハードディスク(通常は2番目のドライブ)の(SATA:シリアルATA)ケーブルを1番目のものと差し替えます。
(パラレル)ATA(IDE)接続の場合、ハードディスクにあるマスター/スレーブのジャンパースイッチを(MASTER側に)
変更してケーブルをつなぎます。
5)正常なハードディスク(通常は2番目)をパソコンに戻します。
6)パソコンの電源を投入し、正常にOSが起動できればOK。
7)適当な時期にハードディスクを購入し、再度バックアップ体制を整えましょう。
(注意)
障害復旧時に交換したハードディスクからのシステム起動に失敗した場合は、Windowsの修復インストールを試してみてください。
また、Windowsのシステムをインストールするときは、ハードディスクを1台づつ接続してそれぞれのC、D領域にWindowsをインストールしてください。
2台のハードディスクを同時にパソコンにつないで、C、D、E、Fの領域でWindowsをインストールすると、障害復旧時のシステム起動に失敗することがあります。
【使い勝手】
タスクを利用することで、バックアップ作業を忘れたり手間を感じることもなくなりました。
また、レジストリーを変更しないフリーソフトや一部の市販ソフトはバックアップドライブからの起動でもそのまま使えるようになります。
しかし、さすがに元のドライブとまったく同一とはならず、例えば、Microsoft Officeなどは、正常に起動させることはできませんでしたし、WindowsUPDATEもバックアップでは反映されませんでした。
とはいえ、無料でできるバックアップとしては、そこそこの機能を持っていると思いますし、システムダウン後の復旧作業も比較的らくだと思います。
それに、なんといってもデータ消失の危険が回避できる安心感は重要なポイントでしょう。
【問題点】
このバックアップ方法での1番の問題点は、バックアップドライブから起動できない場合があることです。
この現象は、ディスクフォーマットがNTFSで、OSがWindows2000または、Windows2000からXpへアップグレードした場合に発生する問題のようです。
Microsoftのサポート
(http://support.microsoft.com/kb/249321/ja)を参照
対応策は、こちら→http://support.microsoft.com/kb/223188/
操作は結構面倒なのですが、落ち着いてやればそれほど難しくはありません。
2番目には、やはりXCOPYのバックアップは完全なコピーではないという点でしょう。
これは、XCOPY を使ってバックアップを取っていることが原因ですので、他のファイルコピープログラムに差し替えることで回避できる可能性が高いと思います。
技術的には、WindowsAPIなどを使わない、BIOS直アクセスでのファイルコピープログラムに変更すればよさそうに感じます。
ただこの場合、フォルダー単位やドライブ全体を一括でコピーできるようにするためには、それなりの手間がかかりそうです。
3番目の問題点としては、たとえ無料であったとしても、これだけの手間をかけることが経済的に妥当かどうかです。
つまり、この手間と時間、動作の保証などを金額に換算したときに市販ソフトの方が安いと感じるなら「市販ソフトを購入すべき」ということです。
そして、コンピューターを専門としない多くの方は、市販ソフトを買ったほうが経済的だと思います。
※私にとって、この程度の手間は3000円以下(市販ソフトを購入するより安価)と考えているわけです。
(余計な一言)
ちなみに、高額な業務用バックアップソフトであっても、通常は完全なデータの保障がなされているわけではありません。
使用条件や許諾書などを確認すると、たいてい「このソフトウェアを使用することによって発生する責任や損害は、ソフトウェアの利用者がその一切を負担する」といった条項が書いてあります。
さらに、補償条件としては、「当該ソフトウェアを原因とする損害・損失については、その購入額を上限として補償を行うものとする。」などと書かれていたりします。
これは、プログラムの開発・販売会社が無条件・無制限に損害の責任を負わされることを回避する目的なのですが、宣伝文句やセールスマンの説明との差はどう解釈するんでしょうね。
とりあえず、「実用上差し支えのない安全性をもって比較的お手軽にデータのバックアップがとれる」という認識でいいんでしょうね。
Windows2000/XPでの電源オフ Windows95/98/MEなどは、比較的簡単なコマンドで電源オフを呼び出せたのですが、Windows2000/XPなどのNT系OSではちょっと面倒です。 ここでは、VBscriptを使った電源オフの方法を紹介します。 とはいっても、reboot.vbsを手直しするだけなのでとても簡単です。 パソコンの電源を切るVBscriptファイル VBscriptファイル名:shutdown.vbs 'Win32_OperatingSystem object の Win32ShutDown method を使ってWindowsの終了、ログオフ、再起動、電源オフを行います。 ' 'システムの実行特権を与えるための数値 ' wbemPrivilegeLocal = 18 ' wbemPrivilegeRemote = 23 '動作と値の対応 ' ログオフ : Log Off = 0 ' Windowsの終了 : Shutdown = 1 ' 再起動 : Reboot = 2 ' 電源オフ : Power Off = 8 ' 強制ログオフ : Forced Log Off = 0 + 4 = 4 ' Windowsの強制終了 : Forced Shutdown = 1 + 4 = 5 ' 強制終了と再起動 : Forced Reboot = 2 + 4 = 6 ' 強制終了と電源オフ : Forced Power Off = 8 + 4 = 12 Const wbemPrivilegeLocal = 18 Const wbemPrivilegeRemote = 23 Const LogOff = 0 Const Shutdown = 1 Const Reboot = 2 Const PowerOff = 8 Const ForcedLogOff = 4 Const ForcedShutdown = 5 Const ForcedReboot = 6 Const ForcedPowerOff = 12 Dim Connection, WQL, SystemClass, System, toDo 'ここで終了動作を選択できます。 'toDo = LogOff 'toDo = ForcedLogOff 'toDo = Shutdown 'toDo = ForcedShutdown 'toDo = Reboot 'toDo = ForcedReboot toDo = PowerOff 'toDo = ForcedPowerOff '自マシン上の 「wmi」 に接続 Set Connection = GetObject("winmgmts:root\cimv2") '自マシン上でシステムの実行特権を許可する Set Security = Connection.Security_ Security.Privileges.Add wbemPrivilegeLocal 'Get Win32_OperatingSystem objects - このコレクションは1つのオブジェクトのみ WQL = "Select Name From Win32_OperatingSystem" Set SystemClass = Connection.ExecQuery(WQL, , 0) 'システムオブジェクトを取り出してシャットダウン処理を実行 For Each System In SystemClass System.Win32ShutDown (toDo) Next 変更点は、プログラムの赤文字2行で toDo = Reboot → 'toDo = Reboot 'toDo = PowerOff → toDo = PowerOff これだけです。 余りにも簡単ですが、きちんと動作することを確認してみてください。 終了動作を選択する部分を変更することで、望みの動作に変えられます。 タスクに登録すれば、指定の時刻に自動でパソコンを終了することができます。 |
Windows2000/XPでのサスペンド(休止) 調子に乗ってもう1つ VBscriptを使ってパソコンの休止(サスペンド)方法を紹介します。 これは、reboot.vbsとは別のスクリプトを書かなければなりませんが、たった3行の短いスクリプトですので、ぜひお試しください。 パソコンを休止(サスペンド)するVBscriptファイル VBscriptファイル名:suspend.vbs Dim WShell Set WShell = WScript.CreateObject("WScript.Shell") WShell.Run("rundll32.exe powrprof.dll,SetSuspendState") これだけです。 簡単ですが、きちんと動作することを確認してみてください。 もちろん、「タスク」に登録して実行できます。 |
------------------------------------------------------------------- | |
別ページ「コマンドプロンプトの覚え書き」、「バッチで使うVBscript」のスクリプトを修正して、ドキュメントフォルダーの内容をUSBメモリーにバックアップコピーするバッチファイルとVBscriptを作成したので公開します。 USBメモリにこのバッチ(「backup.bat」)とVBS(「msgbox.vbs」「read_reg.vbs」)を入れておいて、バックアップ時にUSBメモリーから起動すれば簡単にドキュメントのバックアップが出来ると思います。 このスクリプトでは、Windows2000/xpを対象(vista/7での動作は未確認です。)にドキュメントフォルダーの内容だけをバックアップします。 (2011/05/25 バックアップ対象に「デスクトップ」を追加しました。) インターネットの接続情報や電子メール、電子メールのアカウント情報、ホームページのアドレス(お気に入り)などはバックアップされませんので注意してください。 なお、バックアップしたファイルは、「restore.bat」で復元できます。 | |
| |
| |
| |
| |
| |
|
広告エリア
連絡先:お問い合わせフォーム