PR

【ワレコのPC】WindowsのRobocopyでデータをバックアップする【マイクロソフト純正ツール】

この記事は約20分で読めます。
スポンサーリンク
ワレ子
ワレ子

皆さん、

パソコンデータのバックアップ取ってますか?

ワテは今まで何度かパソコンのハードディスクが壊れてしまった事があるが、データがパーになった事は未だに一度も無い。

それは何故か?

入念にバックアップを取っているからだ。

ドクターX 大門未知子「ワテは失敗しないんです」

当記事では、自称パソコン十段のワテが行っているパソコンデータバックアップ手法を紹介したい。

特別なツールやソフトも必要なく、マイクロソフト純正の公式ツールだけで実現出来るのだ。

では、本題に入ろう。

注意:当記事で紹介しているプログラムコード(バックアップ用バッチファイル)は、細心の注意を払って作成していますが、何らかのミスが有る可能性もあります。皆さん自身でも十分に意味を理解して、必要に応じて修正や改良をしてご利用下さい。
スポンサーリンク
スポンサーリンク

ワテお勧めのバックアップ手法

パソコンデータのバックアップを取るなら、下図に示すように必ず2台目のハードディスクを準備するべきだ。

図 パソコンデータのバックアップには追加ハードディスクが必須

Windowsは通常は1番目のハードディスク(Cドライブ)にインストールされている。

ハードディスクが故障するとその中のデータを取り出せる確率は極めて少ない。

故障したハードディスクからデータを取り出すなら、データ復旧専門業者さんに依頼する案もあるが、作業料金は最低でも数万円から高ければ数十万円~数百万円の金額になる。

なので、バックアップデータを保管するには、新たに2台目のハードディスクを用意する必要がある。

上図のようにノートパソコンなら外付けUSB接続ハードディスクがお勧めだ。

デスクトップパソコンなら3.5インチ 内蔵 ハードディスクを追加しても良いし、あるいは、外付けUSB接続ハードディスクでも良い。

このようにバックアップ作業に必要なハードディスクを準備出来たとしよう。

次に必要なのは、バックアップソフトだ。

マイクロソフト純正のROBOCOPYがお勧め

さて、世の中には有料のデータバックアップソフトは多数ある。

アマゾンで売れ筋のやつを見付けた。

これらのバックアップ専用ソフトは利用者も多いので、使ってみるのも良いだろう。

価格的にも数千円から1万円程度なので、とりあえず購入して使ってみるのも良い。

これらは有料製品であるから使いやすいユーザーインターフェースが採用されているし、バックアップ機能以外に、ハードディスクのパーティション操作などのディスク管理機能を持っている物もあるのでお勧めだ。

でもまあ、ここでは無料のバックアップツールを紹介したい。

ROBOCOPY

だ。

そんなもん聞いた事が無いと言う人も多いだろう。

しかし、知っている人は知っているマイクロソフト純正の有名ツールなのだ。

ロボコピーと言う。

確か、Windows Vista 以上なら標準でOSに入っている。

自分のパソコンにROBOCOPYがインストールされているかどうかの確認方法は簡単だ。

DOSのウインドウを開いて、下図のようにrobocopyコマンドを実行してみれば良い。

DOSウインドウを開くキー操作は以下の通り。

Windowsキー + Rキーで「ファイル名を指定して実行」を開き、「cmd」と入力してEnterキーを押す

2016-02-13-robocopy

図 Windowsでコマンドプロンプト画面を出してrobocopyを実行する例

上図のように、

C:\> robocopy [ENTER]

と入力してエンターを押してみれば良い。

その結果、上図のようにrobocopyの使い方が表示されればあなたのパソコンには robocopy が入っている。

上図に表示されているようにロボコピーの意味は、以下の通り。

Robust File Copy
堅牢性の高いファイル コピー

まあ要するに、robocopyはWindows NT(1996年)と一緒に公開されて、今も現役で使われているマイクロソフト純正のバックアップソフトなのだ。

そこらへんの怪しいフリーソフトなどとは大違い。

バックアップのフリーソフトはお勧めしない

世の中には多数のフリーソフトがあり、バックアップ系のフリーソフトも多数ある。

あるいは、基本機能は無料で使えるが上位機能を使う為には有料で購入する必要があるものもある。

それらの製品を使うなとは言わないが、バックアップと言うような重要な作業を行うなら、怪しげなものは使わないほうが良い。

長年実績のあるフリーソフトなら安全かもしれないが、例えばバージョンアップして新機能を追加したり、処理方法を改造して高速化するなどの改良が加えられる場合があると思う。

あるいは、Windowsの新しいバージョンが出たのでそれに合わせてソフトもバージョンアップしたなど。

そういうタイミングが実は一番危ない。

多くのフリーソフトは個人で製作している場合が多い。

あらゆる状況を想定して動作テストを繰り返していても、所詮個人でやっているので見落としやウッカリした間違いなどが入り込む可能性がある。

一方、ROBOCOPYは、Windows Server OS にも標準で搭載されているソフトだ。

Windows Server OSは、世の中にある多数の企業のWEBサイトやWEBサービスで利用されている業務用OSだ。

もしそのOSに搭載しているソフトにバグが有るとどうなるか?

世界中が大変なことになるのは容易に想像が付く。

例えば定期的にバックアップを取っていたはずが、robocopyにバグが有って閏年の2月29日には取れていなかったなどでは話にならない。

マイクロソフト純正のツールであり、かつサーバーOSに標準で搭載されていると言う点で、ROBOCOPYは他のバックアップソフトなどと比較にならないくらい遥かに安心・安全で確実なソフトなのだ。

しかも無料だ。

バックアップ取得計画を立てる

多くの皆さんの場合、Windows10やWindows11を使っていると思うが、それらはCドライブにインストールされている。

ユーザーwateさんの個人データ(デスクトップ、ドキュメント、画像、音楽、、、)は標準ではCドライブの中の以下のフォルダに割り当てられている。

C:\Users\wate\Desktop
C:\Users\wate\Documents
C:\Users\wate\Pictures
C:\Users\wate\Videos
C:\Users\wate\Music
C:\Users\wate\Downloads

これらのフォルダの中から、自分が必要なフォルダをバックアップするのが良いだろう。

具体的には下図のように2台目のハードディスク(8TBの例)を用意して、2重にバックアップするのが良い。

図 CドライブをFとGの2つのドライブにバックアップする例

この例では2台目の8TBハードディスクの中に4TBのFドライブと4TBのGドライブを作成している。

もちろん、4TBのハードディスクを2台用意して、それぞれFドライブとGドライブに割り当てても良い。

ここで説明した手法はパソコン使用経験の長いワテのお勧めの手法なので、必要に応じて皆さん自身でもバックアップ取得計画を立てるのが良い。

では、実際にrobocopyを使う方法を解説しよう。

ROBOCOPYの使い方

2つの個人フォルダをrobocopyバックアップするバッチファイル例

以下の2つの個人フォルダを2台目のハードディスクに作成したFドライブとGドライブに2重バックアップする例を解説しよう。

C:\Users\wate\Desktop
C:\Users\wate\Documents

以下のプログラムをコピペして「CドライブをFとGへバックアップする.bat」などのファイル名でWindowsのデスクトップに保存する。拡張子.batはバッチファイルというやつだ。

注意事項としてはWindowsのメモ帳などのエディタでこのバッチファイルを保存する場合には、文字コードをANSI(=Shift_JIS)にする必要がある。

もし他の文字コード(UTF-8, UTF-16など)でファイル保管すると、バッチファイルが正しく実行されないので。

@echo on
setlocal

rem ===============================================================
rem 【robocopy オプション説明】
rem /MIR     : ミラーリング(削除も反映)
rem /E       : サブフォルダもすべてコピー(空でも)
rem /XO      : コピー元が古い場合は除外
rem /R:0     : エラー時のリトライ回数 0(スキップ)
rem /XA:SH   : 隠し・システムファイルを除外
rem /NP      : 進捗非表示
rem /NDL     : フォルダ名をログに出さない
rem ===============================================================

rem set COMMON_OPT=/R:0 /NP /NDL
set COMMON_OPT=/R:0 /NDL
rem set COMMON_OPT=/R:0


rem === ログファイルの保存先 ===
set LOGDIR=C:\Users\wate\Desktop\Logs
if not exist "%LOGDIR%" mkdir "%LOGDIR%"
set LOGFILE=%LOGDIR%\backup_log.txt
del /f /q "%LOGFILE%" >nul 2>&1


echo === Desktop バックアップ中 ===
robocopy "C:\Users\wate\Desktop"     "F:\Mir\Desktop"     /MIR   %COMMON_OPT% /LOG+:"%LOGFILE%"
robocopy "C:\Users\wate\Desktop"     "G:\All\Desktop"     /E /XO %COMMON_OPT% /LOG+:"%LOGFILE%"

echo === Documents バックアップ中 ===
robocopy "C:\Users\wate\Documents"   "F:\Mir\Documents"   /MIR   %COMMON_OPT% /LOG+:"%LOGFILE%"
robocopy "C:\Users\wate\Documents"   "G:\All\Documents"   /E /XO %COMMON_OPT% /LOG+:"%LOGFILE%"



echo バックアップ完了。
pause
endlocal

コード Cドライブの個人フォルダをF&Gドライブにrobocopyするバッチファイル例(ログ有り)

このbatファイルをダブルクリックすると、Windowsのコマンドプロンプトが開いてバッチファイルの中身が上から順番に1行ずつ実行される。

なお、ファイルの文字コードはANSI(=Shift_JIS)にするように説明したが、本来はWindowsのバッチファイルの文字コードはUTF-8(BOM無し)が推奨されている。

ところが原因不明なのだがワテのWindows11 Pro(x64)の環境で試すと、UTF-8(BOM無し)で保存したバッチファイルを実行すると以下のような文字化けエラーで失敗するのだ。

‘ウ繝斐・・育ゥコ縺ァ繧ゑシ・’ は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
‘す繧ケ繝・Β繝輔ぃ繧、繝ォ繧帝勁螟・’ は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

なので、文字コードANSI(=Shift_JIS)をお勧めしている。

バッチファイルの解説

上記のバッチファイルで、幾つかのコマンドを簡単に解説しておこう。

@echo on

この行があると、今実行しているバッチファイルのコマンドが画面に表示される。

もしそれが煩わしいなら以下のようにoffに書き換えると良い。

@echo off

robocopyコマンドのオプションは多数あるが、現状では以下のオプションを採用している。

set COMMON_OPT=/R:0 /NDL 

ここで /R:0 はrobocopyがファイルをコピーする作業で何らかのエラーが有ったとしても、リトライ(再実行)をゼロにしているので、リトライせずに次のファイルのコピー作業へ進むと言う意味だ。

現実的にはrobocopyがエラーする状況と言うのは滅多に無いので、リトライ0で良いだろう。必要なら /R:5 などとすれば5回までリトライする設定になる。

次に /NDL(フォルダ名をログに出さない) を付けている。もしこのオプションを削除すれば、ログファイルに多数のファイル名がズラズラと出力される。

あとよく使うのは /XA:SH(隠し・システムファイルを除外)と言うオプションだ。今回はこのオプションを省いているので、もし隠しファイルやシステムファイルが有ってもそれらもバックアップする。なので、もしそれが必要ないなら以下のようにすると隠し・システムファイル除外となる。 

set COMMON_OPT=/R:0 /NDL /XA:SH

なお、必要なら /NP(進捗非表示)を追加するもの良い。

そうすれば画面やログファイルにコピーしたファイル名がズラズラと多数記録されずに簡素な表示になる。

なお、/NP を付けなければ進捗表示となるが、第1回目のrobocopy実行ではCドライブの多数のファイルがFドライブやGドライブに新規作成されるので、ズラズラと多数のファイル名が進捗表示される。

しかしながら、第2回目以降のrobocopy実行では、第1回目以降にCドライブに新規作成されたファイル名しか進捗表示されない。なので /NP を付けていなくても第2回目以降ならそんな煩わしくは無いし、逆に、今どんなファイルがバックアップされているのか分かるので安心だ。

なのでワテの場合は /NP を省いてあえて進捗表示にしている。

ログファイルを出力する

次に、ログファイルの出力だ。

ログファイルとはrobocopyの実行作業や実行結果をファイル出力する機能だ。

以下の部分はプログラミング経験があるなら何となく理解出来ると思う。

rem === ログファイルの保存先 ===
set LOGDIR=C:\Users\wate\Desktop\Logs
if not exist "%LOGDIR%" mkdir "%LOGDIR%"
set LOGFILE=%LOGDIR%\backup_log.txt
del /f /q "%LOGFILE%" >nul 2>&1

この5行のコマンドで何をやっているかと言うと、ログファイル(backup_log.txt)を出力するフォルダ名をLOGDIR変数で「C:\Users\wate\Desktop\Logs」と指定している。

ユーザー名はwateなので皆さんの場合は必要に応じてwateの部分を書き換えて下さい。

この例ではユーザーwateさんのDesktopフォルダにサブフォルダLogsを作成している。

もしこのLogsフォルダが存在しない場合にはif not exist の部分の処理で新規にフォルダが作成される(mkdir)。

最後に delの処理で、既存のログファイル(backup_log.txt)が存在していればそれを削除している。

ログファイルが必要無い場合のバッチファイル例

ちなみに、もしログファイルが必要無い場合には、以下のようにバッチファイルは簡素になる。

@echo on
setlocal

rem ===============================================================
rem 【robocopy オプション説明】
rem /MIR     : ミラーリング(削除も反映)
rem /E       : サブフォルダもすべてコピー(空でも)
rem /XO      : コピー元が古い場合は除外
rem /R:0     : エラー時のリトライ回数 0(スキップ)
rem /XA:SH   : 隠し・システムファイルを除外
rem /NP      : 進捗非表示
rem /NDL     : フォルダ名をログに出さない
rem ===============================================================

set COMMON_OPT=/R:0

echo === Desktop バックアップ中 ===
robocopy "C:\Users\wate\Desktop"     "F:\Mir\Desktop"     /MIR   %COMMON_OPT%
robocopy "C:\Users\wate\Desktop"     "G:\All\Desktop"     /E /XO %COMMON_OPT%

echo === Documents バックアップ中 ===
robocopy "C:\Users\wate\Documents"   "F:\Mir\Documents"   /MIR   %COMMON_OPT%
robocopy "C:\Users\wate\Documents"   "G:\All\Documents"   /E /XO %COMMON_OPT%



echo バックアップ完了。
pause
endlocal

コード Cドライブの個人フォルダをF&Gドライブにrobocopyするバッチファイル例(ログ無し)

このbatファイルをダブルクリックすればバックアップが開始するが、その前に以下でさらに重要なオプション設定を解説しておこう。

ミラーリングと追加書き込みの2重バックアップ作戦

以下のコードではCドライブのDesktopフォルダをFドライブとGドライブにrobocopyしている。

echo === Desktop バックアップ中 === 
robocopy "C:\Users\wate\Desktop" "F:\Mir\Desktop" /MIR   %COMMON_OPT% 
robocopy "C:\Users\wate\Desktop" "G:\All\Desktop" /E /XO %COMMON_OPT%

ここで、FドライブとGドライブとでオプション設定が異なる。

%COMMON_OPT% は set COMMON_OPT で指定している共通のオプション設定に置き換わる。

それに加えて、Fドライブでは /MIR(ミラーリング)オプションを付けているので、CドライブのDesktopフォルダと全く同一のフォルダが F:\Mir\Desktop に作られる。

一方、Gドライブでは /E(サブフォルダもすべてコピー) /XO (コピー元が古い場合は除外)の2つを付けている。

この場合にはミラーリングでは無くて、CドライブにあるファイルがドンドンGドライブに上書きされて行く。ただし同じファイルの場合には /XO があるのでコピー元(Cドライブ)のファイルの日付が古い場合には、Gドライブのそのファイルは上書きしない。

という事でGドライブにはCドライブからドンドンとファイルが追加書き込みされて行く。

ミラーとオールの2重バックアップを取っておくメリット

このように2重にバックアップを取っておくメリットは以下の通り。

もしCドライブのハードディスクが故障してWindowsを再インストールする場合でも、Fドライブには故障直前までのCドライブの個人データの完全なバックアップが取得出来ている。

なので、故障したCドライブハードディスクを交換して新たにWindowsをインストールしてパソコンが使えるようになれば、逆にFドライブの内容をCドライブにコピーすれば、故障前のCドライブと全く同じ状態に復元出来るのだ。

一方、Gドライブに関してはミラーリング設定をしていないので、過去にCドライブに有ったファイルが残っている可能性が高い。

例えば、Cドライブで何らかのファイル名を変更した場合なら、Gドライブはミラーリング設定していないので、robocopyを実行してもその古いファイルをGドライブに残したまま新たにGドライブに新ファイル名でコピーが作成される。

その後、もしCドライブでそのファイルをうっかり削除してしまってrobocopyを実行するとFドライブからもそのファイルが消えてしまう。

ところがGドライブには名前変更前のファイルが残っているので、そのファイルを開けば重要データを取り出せる可能性が残っているのだ。

 

もしバッチファイルでフォルダ名 Mir や All の部分を書き換えて Mir1 とか All1 とすれば、そのフォルダの中にバックアップが取れる。

一週間とか一ヶ月毎に Mir2 や All2 などと数字を増やしてバッチファイルを実行すれば、過去何世代にも渡るバックアップを残すことも出来る。

不要になればフォルダごと削除すれば良いし。

Robocopyの注意事項

最後に最も重要な注意をしておこう。

それはミラーリングオプション /MIR を使う上での注意事項だ。

robocopy "C:\Users\wate\Desktop" "F:\Mir\Desktop" /MIR   %COMMON_OPT% 

この例ではCドライブのDesktopフォルダと全く同じ物を FドライブのDesktop に作成する。それがミラーリングだ。

ところが、もしうっかり間違えて以下のようにドライブ名を逆にしてしまったとする。

robocopy "F:\Users\wate\Desktop" "C:\Mir\Desktop" /MIR   %COMMON_OPT% 

そしてそのバッチファイルを初めて実行するとする。

という事は、FドライブにはDesktopフォルダなんて存在していない空の状態だ。その空のDesktopと同じものをCドライブに作成しろ!と言う無茶なバッチファイルになるので、その結果、CドライブのDesktopが完全削除されると言う悲惨な結果となる可能性がある。

上の例ではコピー先が “C:\Mir\Desktop” となっているので、何の被害も出ないと思うが。

もし以下のようにコピー先が “C:\Users\wate\Desktop” となっていれば、大事故だろう。

robocopy "F:\Users\wate\Desktop" "C:\Users\wate\Desktop" /MIR   %COMMON_OPT% 

これを初めて実行してしまうと、まだ存在しない空っぽの “F:\Users\wate\Desktop”  と同じものを “C:\Users\wate\Desktop” に作ってしまう。つまりCドライブのDesktopフォルダの中身が空になってしまうからだ。

本当か?などと疑って、実際に試したりしないようにお願いします。

ミラーリングオプションは便利な反面、ちょっとした失敗が取り返しが付かない大事故を引き起こすので要注意だ。

なお、ワテがMirフォルダだけでなくAllフォルダにもバックアップを取っている理由は、ミラーリング設定をしないAllフォルダならこのような大事故が避けられるからでもある。

つまり、仮に上記のような /MIR オプション利用時に設定ミスが有ったとしてMirフォルダが被害を被った場合でも、Allフォルダには単純に追加書き込みをするだけなので一瞬にして大量のファイルが消え去る事が無いのだ。

超心配性のワテである。

まとめ

ワレ子
ワレ子

Robocopyは便利ですよ。

当記事では、Windowsユーザーの為にデータバックアップ手法に付いて解説した。

自称パソコン達人、バックアップ十段のワテのお勧めは、マイクロソフト純正のROBOCOPYを使ってバックアップを行うのが良い。

もちろん市販のバックアップソフトも悪くはないが、とりあえず無料のROBOCOPYを試す価値は十分にある。

記事中でも解説したが、ワテのお勧めはミラーリング設定したFドライブとミラーリング設定無しでドンドンと追加書き込みするGドライブの2箇所のドライブにバックアップを取得するのがお勧めだ。

なお、市販有料バックアップソフトなら、過去何世代かに渡って複数のバックアップを取得するなども可能だろう。

なので、重要データをうっかり削除してしまったが、一ヶ月前のバックアップを取得出来ていればそこからデータを復元する事も可能だ。

ROBOCOPYも使いこなせばそのような過去何世代に渡るようなバックアップ取得は可能ではあるが、バッチファイルで実行するので初心者には難しい。

そう言う点では、高性能な市販バックアップソフトがお勧めかとは思うが。

これらの市販バックアップソフトを使うとしても、バックアップファイルの保管先は2台目や3台目のハードディスクを用意するべきである。

もしCドライブのバックアップを同じCドライブの中に取ったとしても、そのハードディスクが壊れてしまえばバックアップデータ自体を取り出せないので。

アマゾンで外付けUSBハードディスクを見る>>>

あるいは最近では、SSD 外付け USBなんてのもある。小型なのに1TBや2TBもの容量があるのだ。

技術革新ってのは凄いな。

(続く)

 

スポンサーリンク
コメント募集

この記事に関して何か質問とか補足など有りましたら、このページ下部にあるコメント欄からお知らせ下さい。

BackupWindows
スポンサーリンク
シェアする
warekoをフォローする
スポンサーリンク

コメント