この記事では、バッチファイルを使ってUSBメモリへのデータバックアップ(ミラーリング)を自動化する方法について説明します。
具体的には、バッチファイルにおいてrobocopyコマンドを使用してデータをバックアップします。
バッチファイルってなんだか難しそう...
バッチファイルは実はただのテキストファイルなので、誰でも簡単に作れます
プログラミングの知識は全くいりません。
この記事の数行のコードをコピペするだけなので興味のある方は読んでみてください。
いきなりですが、最初にしっかりとお伝えしないといけないことがあります。
ここで紹介するバッチファイルは、使い方を間違うと逆にデータを失う可能性があります
ここで紹介するバッチファイルの使用に起因するいかなる損害/損失も当ブログは負うことはできませんので、バッチファイルの使用は必ず自己責任で行ってください
以上のことをご理解いただける場合にのみ、この記事をお読みいただければと思います。
少し不安にさせるようなことを記載しましたが、しっかりと内容を理解して使用していただければ、ここで紹介するバッチファイルはとても便利なものです。
この記事で紹介するバッチファイルは、これ以後、「バックアップ用バッチファイル」と呼びます。
バックアップ用バッチファイルの実行例
バックアップ用バッチファイルを実行した場合のデータの挙動
まず初めにバックアップ用バッチファイルを実行した場合のデータの挙動について説明します。
今回紹介するバックアップ用バッチファイルを使用すると、バックアップ元として指定したフォルダ内の内容と、バックアップ先に指定したフォルダ(USBメモリなど)内の内容が完全に同じになります(ミラーリング)。
イメージとしては、以下のイラストのようになります。
以下では、バックアップ用バッチファイルを実行した場合のデータの挙動を、さまざまな例を用いて示します。
以下では、さまざまな例を示しますが、バックアップ用バッチファイルを実行した場合の重要ポイントは、以下の2点のみです。
つまり、バックアップ先フォルダの内容がどのように変更されていても関係なく(空っぽであろうと、余分な新しいファイルがあろうと関係ありません)、バックアップ用バッチファイルを実行すれば、バックアップ元フォルダの内容によってバックアップ先フォルダの内容が書き換えられて、最終的に両者の内容は同じになるということです。
くどいですが、基準は、バックアップ元フォルダの内容です。
バックアップ元の内容が基準になるんですね。メモしときます
はい、そのことをを踏まえていれば、以下の実行例の理解はとても簡単です
それでは、実際にバックアップ用バッチファイルを実行した場合のデータの挙動について説明します。
実行例1
・バックアップ元フォルダにファイルを追加した後にバックアップ用バッチファイルを実行した場合
バックアップ元フォルダに新たに追加したファイルがバックアップ先フォルダにコピーされます。
実行例2
・バックアップ元フォルダ内のファイルを更新した後にバックアップ用バッチファイルを実行した場合
バックアップ元フォルダ内の更新ファイルがバックアップ先フォルダ内に上書きコピーされます。
実行例3(注意すべき例)
・バックアップ元フォルダ内のファイルを削除した後にバックアップ用バッチファイルを実行した場合
バックアップ先フォルダ内の対応ファイルが削除されます。
実行例4(注意すべき例)
・バックアップ元フォルダ内のフォルダを削除した後にバックアップ用バッチファイルを実行した場合
バックアップ先フォルダ内の対応フォルダとその中のファイルが削除されます。
実行例5(特に注意すべき例)
・バックアップ先フォルダ内のファイルを更新した後にバックアップ用バッチファイルを実行した場合
バックアップ先フォルダ内の更新ファイルは、バックアップ元フォルダ内の古い対応ファイルによって上書きされてしまいます。
(常にバックアップ元フォルダが基準になります)
バックアップ先のファイルを編集して更新することは避けるべきです。
実行例6
・バックアップ先フォルダ内のファイルを削除した後にバックアップ用バッチファイルを実行した場合
バックアップ元フォルダ内の対応ファイルがバックアップ先フォルダにコピーされます。
実行例7(最も注意すべき例)
・バックアップ元フォルダ内のファイルが破損した後にバックアップ用バッチファイルを実行してしまった場合
バックアップ元フォルダ内のファイルが何らかの原因で破損した場合(例えば、ワードファイルが編集中に壊れて開けなくなった場合)、この状態でバックアップ用バッチファイルを実行してしまうと、破損ファイルがバックアップ先フォルダに上書きコピーされてしまいます。
これは、最も注意すべき例です。
これでは何のためにバックアップをとっていたのか分かりません。
バックアップ元フォルダ内のデータが破損した場合、バックアップ用バッチファイルは絶対に実行せずに、バックアップ先フォルダの破損前の対応ファイルを手動でバックアップ元フォルダにコピーしてくるなどの、状況に応じた適切な対応をしてください。
このような場合に万一バックアップ用バッチファイルを実行してしまっても最悪のケースが避けられるような運用方法案については次の説明をご参照ください。
このブログ内の他の記事の紹介
・安心のパソコンショップはこちら
・おすすめの中古パソコンショップはこちら
・データを自動でUSBメモリにバックアップする方法はこちら
・USBメモリのデータを復旧不可能なように消去する方法はこちら
バックアップ用バッチファイルの運用方法案
バックアップ用バッチファイルの運用方法案を1つ示させていただきます。
例えば、バックアップ元フォルダ内の同じワードファイルを開いて日々編集作業を行っていたとします。
常に同じワードファイルを日々開いて編集しながら、時折バックアップ用バッチファイルを実行するような運用をしていた場合、上記の運用例7のようなことが起こり得ます。
これを避けるためには、1日のうちの数時間おき、または1日に1回、編集中のワードファイルをバックアップ元フォルダ内の別のフォルダ(この例では、「バックアップフォルダ」とします)内にコピーして別ファイルとしておくことが良いと思います。
イラストで示すと以下のような状態です。
上のイラストの例は、編集中ファイルをバックアップフォルダ内に1日に1回コピーする運用の例です。
このような運用をしていれば、編集中のファイルが破損した時にうっかりバックアップ用バッチファイルを実行してバックアップ先フォルダ内の対応ファイルを破損ファイルで上書きしてしまっても、1日前のファイルがありますので、最悪1日前の状態には戻ることができます。
もし、それでも心配な方は、1日に数回、適当な時点でコピーファイルをバックアップフォルダに入れておけばいいと思います。
また、別のリスクパターンとして、そもそもパソコン自体が壊れてしまう場合もありますが、そのような場合でも、バックアップ元のフォルダをパソコン内のフォルダに指定し、バックアップ先のフォルダをUSBメモリ内のフォルダに指定して運用していれば、以下のイラストのようにUSBメモリ内のフォルダからデータを救出できます。
また、1つのUSBメモリだけでは不安だ!という方は、以下の2つの運用パターンでバックアップ先を2つにすることもできます。
運用パターン①:1つのバックアップ用バッチファイルで2つのUSBメモリにバックアップをとる
運用パターン②:2つのバックアップ用バッチファイルで2つのUSBメモリにバックアップをとる
さらに、イラストでは示しませんが、3つ以上のバックアップ先(USBメモリや外付けSSD/HDDなど)を指定することも可能です。
バックアップ用バッチファイルの作成
以下のステップでバックアップ用バッチファイルを簡単に作成することができます(プログラミングの知識はいりません。通常のファイル操作です)。
ステップ① Win + R を押します
以下のイラストのようなダイアログボックスが画面の左下に開きます
ステップ② 半角で「notepad」と入力してから、エンターキーを押します
以下のイラストのようにメモ帳が立ち上がます。
ステップ③ 「ファイル」→「ファイル名を付けて保存」を選択します
ステップ④ 以下の手順でファイルを保存します
1.ファイルの種類を「すべてのファイル (*.*)」にします。
2.ファイル名をバックアップ.batにします (名前は何でもかまいません。末尾は必ず半角で「.bat」としてください)
3.エンコードをANSIにします
以上の1~3を行った後で、「保存」ボタンを押して保存します(この例では、デスクトップに保存しています)。
ここで一旦、タブの×印(以下のイラストの赤で囲った部分)を押してファイルを閉じてしまいましょう。
これで空のバッチファイルを作成することができました。
以下のようなアイコンのファイルができます。
パソコンの設定によっては、「バックアップ.bat」が、単に「バックアップ」というファイル名になっていると思いますが、問題ありません(余談になりますが、「.bat」の部分は、拡張子と呼ばれます)
ここで一端ファイルを保存したのは、バッチファイルを新たに編集する方法もここで知っていただける方が有効だと考えたためです。
以下のステップに進んで、バッチファイルを編集してください。
ステップ⑤ 「バックアップ.bat」の上で右クリックして「メモ帳で編集」を選択します
「メモ帳で編集」が一覧にない場合は、「その他のオプションを確認」を選択し、表示されたメニューから「編集」を選んでください。
メモ帳が開いて以下の状態になります(編集は他のテキスト編集アプリで行ってもかまいません)。
ステップ⑥ ステップ⑤で開いたメモ帳に以下のコードをコピーし、メモ帳を開いたままにしておきます
@ECHO OFF
robocopy <バックアップ元フォルダ> <バックアップ先フォルダ> /MIR /DCOPY:DAT
If "%ERRORLEVEL%" geq "8" (
ECHO.
ECHO.
ECHO **********************************
ECHO *****バックアップに失敗しました*****
ECHO **********************************
ECHO.
ECHO エラーレベル"%ERRORLEVEL%"
ECHO.
PAUSE
) else (
ECHO.
ECHO.
ECHO ****************************************
ECHO *****バックアップが正常に終了しました*****
ECHO ****************************************
ECHO.
ECHO.
)
ステップ⑦ 「バックアップ元フォルダ」に指定したいフォルダを作成します(場所も名前も任意ですが、名前は必ず半角アルファベットにしてください)。
(このフォルダ名を半角アルファベットにする理由は、文字化けによってバッチファイルが動かないリスクを排除するためです。フォルダ内に入れる各自のファイルやサブフォルダは日本語名でもかいません)
フォルダの作成は、好きな場所で右クリックして、「新規作成」→「フォルダー」で行うことができます。
今回の例では、デスクトップに「backupmoto」という名前のフォルダを作成します。
ステップ⑧ 「バックアップ元フォルダ」に指定したいフォルダ(名前は半角アルファベット)をダブルクリックして開いてから、以下のイラストのようにフォルダ名(以下の例では「backupmoto」)の上で右クリックし、「アドレスをテキストとしてコピー」を選択(左クリック)します。
以下の例は、さきほどデスクトップに作成した「backupmoto」という名前のフォルダをバックアップ元に指定する場合のものです。
「アドレスをテキストとしてコピー」を選択すると、「backupmoto」のアドレスがクリップボードにコピーされます。
上のイラストに示したアドレスコピー法の代替として、アドレスの空白部分(下のイラストで赤丸で囲った部分)をクリックしてもかまいません(Windowsのバージョンによってはこちらのやり方しかできないかもしれません。その場合は、これ以後に登場するアドレスコピーステップでは、この方法を行ってください)。
上のイラストのように空白部分(赤丸部分)をクリックすると、以下のイラストのようにアドレスが表示されるので、その上で右クリックすると現れる「コピー」を選択してください。
ステップ⑨ 先ほどメモ帳に張り付けたコードの中の<バックアップ元フォルダ>の部分を選択してから右クリックし、「貼り付け」を選択します
以下のイラストのような状態になります。
(以下の赤線部のアドレスのUsersの右側には、各自のパソコンのユーザー名が入ります)
ステップ⑩ 「バックアップ先フォルダ」に指定したいフォルダを作成します(場所も名前も任意ですが、名前は必ず半角アルファベットにしてください)。
フォルダの作成は、好きな場所で右クリックして、「新規作成」→「フォルダー」で行うことができます。
今回の例では、USBメモリ内に「backupsaki」という名前のフォルダを作成します。
ステップ⑪ 「バックアップ先フォルダ」に指定したいフォルダ(名前は半角アルファベット)をダブルクリックして開いてから、以下のイラストのようにフォルダ名(以下の例では「backupsaki」)の上で右クリックし、「アドレスをテキストとしてコピー」を選択(左クリック)します。
以下の例は、USBメモリ内に作成した「backupsaki」という名前のフォルダをバックアップ先に指定する場合のものです。
「アドレスをテキストとしてコピー」を選択すると、「backupsaki」のアドレスがクリップボードにコピーされます。
ステップ⑫ 先ほどメモ帳に張り付けたコードの中の<バックアップ先フォルダ>の部分を選択してから右クリックし、「貼り付け」を選択します
以下のイラストのような状態になります。
ステップ⑬ バックアップ用バッチファイルを上書き保存します
(「ファイル」→「保存」を選択します)
ステップ⑭ バックアップ用バッチファイルを閉じます
以上でバックアップ用バッチファイルは完成です!
以下は、バックアップ先フォルダを2つ作りたい人のみ行ってください。
前述した運用パターン①(1つのバックアップ用バッチファイルで2つのバックアップ先フォルダにバックアップをとる)を行いたい人
1.上記のステップ⑤の手順で既存のバックアップ用バッチファイルを開き、そこに以下のコードを追加します
robocopy <バックアップ元フォルダ> <バックアップ先フォルダ> /MIR /DCOPY:DAT
以下のイラストのような状態にしてください。
2.新たに追記したコード中の<バックアップ元フォルダ>の部分に、既にコード中で指定されているバックアップ元フォルダのアドレスをコピペします(上の例では、「C:¥Users¥(この部分はユーザーごとに異なります)¥Desktop¥backupmoto」の部分をコピペします)。
つまり、以下のイラストのようにします。
3.上述のステップ⑩~⑭を行って、新しくコピーしたコードの<バックアップ先フォルダ>の部分を編集してください。
その際、追記したコード中の<バックアップ先フォルダ>には、既存コード中のバックアップ先フォルダのアドレスとは別の、お好きなバックアップ先フォルダのアドレス(例えば、別のUSBメモリ内のフォルダのアドレス)にしてください。
以上で完成です。
これで、1つのファイルを実行するだけで、別々の2つのバックアップ先フォルダへと1つのバックアップ元フォルダの内容がバックアップ(ミラーリング)されます。
前述した運用パターン②(2つのバックアップ用バッチファイルで2つのバックアップ先フォルダにバックアップをとる)を行いたい人
再度、上述のステップ①~⑭を行って、もう1つ別のバックアップ用バッチファイルを新たに作成してください。
その際、2つ目のバックアップ用バッチファイルのコード中の<バックアップ元フォルダ>は、最初に作った別ファイルのコード中で指定されているバックアップ元フォルダのアドレスと同じにしてください(上の例では、「C:¥Users¥(この部分はユーザーごとに異なります)¥Desktop¥backupmoto」にします)。
<バックアップ先フォルダ>は、最初に作ったバッチファイルの中のバックアップ先フォルダのアドレスとは別の、お好きなバックアップ先フォルダのアドレス(例えば、別のUSBメモリ内のフォルダのアドレス)にしてください。
お好きなタイミングでそれら2つのバッチファイルを実行してバックアップをとってください。
このブログ内の他の記事の紹介
・安心のパソコンショップはこちら
・おすすめの中古パソコンショップはこちら
・データを自動でUSBメモリにバックアップする方法はこちら
・USBメモリのデータを復旧不可能なように消去する方法はこちら
バックアップ用バッチファイルの動作確認
バックアップ用バッチファイルが作成できたら、実際の大切なデータのバックアップに使用する前に、意図したとおりに動くかどうかを、以下の手順でテストしてみましょう。
1.バックアップ元フォルダに指定したフォルダを開きます
以下の例では、デスクトップの「backupmoto」を開いています。
2.右クリックしてテキストファイルを選択して空のテキストファイルを作ります
単にバックアップのテストをしたいだけなので、テキストファイル以外の種類のファイルでもかいません。
以下の状態になります
3.先ほど作成した「バックアップ.bat」をダブルクリックして実行します。
一瞬、黒いウィンドウが開いて瞬時に閉じると思います(これが正常な動作です)。
- バックアップ用バッチファイルは、どのフォルダに置いてあってもかまいません。
- もちろんショートカットを作って実行してもかまいません
4.バックアップ先フォルダに指定したフォルダを開きます
この例では、「backupsaki」を開いています。
以下のイラストのように、先ほどバックアップ元フォルダ(今回の例では、「backupmoto」)に入れた「新規 テキスト ドキュメント.txt」がバックアップ先フォルダ(今回の例では、「backupsaki」)にコピーされていれば、バックアップ用バッチファイルは正しく作成されています。
もし仮に、バックアップ用バッチファイルの実行後に、「新規 テキスト ドキュメント.txt」がバックアップ先フォルダにコピーされず、代わりにバックアップ元フォルダにあるはずの「新規 テキスト ドキュメント.txt」が消失した場合は、バッチファイル中でバックアップ元フォルダとバックアップ先フォルダとを逆に指定してしまっていますので、再度指定が正しいかを確認してください。そのまま実際に使用すると、最悪の結果を招きます。
以上で、バックアップ用バッチファイルの動作確認は終了です。
今回テストに使用した「新規 テキスト ドキュメント.txt」は不要なファイルですので、バックアップ元のフォルダから消しておいてください。消去後に、バックアップ.batを実行すると、バックアップ先のファイルも自動で消えることを確認してみてもいいと思います。
これで説明はすべて終了です。
あとは、ご自身のデータをバックアップ元フォルダ内に入れて、必要なタイミングでバックアップ.batを実行してください。
これでいつでも自動で簡単にバックアップをとることができます!
本バッチファイルの使用に際しては、前述の実行例1~7などの説明をすべてお読みいただき、本バッチファイルの動きを十分にご理解いただき、ご自身の大切なデータを失うことがないようにしていただければと存じます。
このバックアップ用バッチファイルは、正しくお使いいただく分には非常に有用なものだと思いますので、是非ご愛用いただければと思います。
エラーが起きた場合の対処方法
エラーが起きた場合は、バッチファイルの実行画面(黒い画面)が閉じずにエラーレベルが表示されます。
この画面は内容確認後に閉じていただいてかいません。
エラーが出る場面というのは、多くの場合、以下のような原因が考えられます。
・バックアップ先フォルダをパソコンが認識できない
→例えば、USBメモリがパソコンに接続されていなかったり、USBメモリが壊れかけていて認識が怪しい場合などです。
・バックアップ先フォルダ内のファイルが使用中(開いたまま)でコピーできない
上記のような場合は、USBメモリを接続する、USBメモリを新しいものにする、バックアップ先フォルダ内のファイルと閉じるなどした後に、再度バッチファイルを実行してみてください。
どうしてもエラーが続く場合は、パソコンを再起動後にバッチファイルを再実行してみてください。
バックアップ先に指定したUSBメモリが、認識されたり、認識されなかったりを繰り返す場合は、そのUSBメモリの寿命がせまっている可能性が高いです。そのような場合は、大切なデータを守るためにも、新しいUSBメモリの購入をご検討ください!
このブログ内の他の記事の紹介
・安心のパソコンショップはこちら
・おすすめの中古パソコンショップはこちら
・データを自動でUSBメモリにバックアップする方法はこちら
・USBメモリのデータを復旧不可能なように消去する方法はこちら
注意点
ここまでお読みいただいた時点で、読者の方は十分にご理解されていると思いますが、今回紹介したバッチファイルは、バックアップ元フォルダの内容に基づいてバックアップ先フォルダの内容を変更して、バックアップ先フォルダの内容とバックアップ元フォルダの内容を同じにするものです。
そのため、両フォルダの内容は、バッチファイル実行後は完全に同じになっており、バックアップ元フォルダ内のファイルだと思って編集していたが、実は、バックアップ先フォルダ内のファイルだったということが起こり得ます。その状態でバッチファイルを実行してしまうと、せっかく編集したファイルが、古いファイルに置き換わってしまいますので、くれぐれもバックアップ元フォルダとバックアップ先フォルダを間違えないように注意してください!
バックアップ先フォルダ内のフォルダやファイルを編集することは推奨されません。
バックアップ先フォルダ内のフォルダやファイルはあくまでバックアップ物ですので、非常時にのみお使いください。
USBメモリについて
私は普段からこの記事のバックアップ用バッチファイルを使用してUSBメモリにバックアップをとっています。
一日に数十回はこのバッチファイルを使用します。
そのため、このバッチファイルによってUSBメモリを酷使しまくっています。
私はこれまでに、高価な日本製のUSBメモリを含めて、多くのUSBメモリを購入しましたが、どれも数ヶ月でアクセスできなくなって壊れてしまいました。
そのため、あれでもないこれでもないといろいろ購入したのですが、その中で1つだけ今も壊れずに順調に動いているUSBメモリがあります。
私は、以下のUSBメモリを2つ購入し、日々この記事のバックアップ用ファイルを使用してデータのバックアップをとっています。
これまでに一年半ほど使用していますが、今のところ何の問題も起きていません。
私は、土日も入れてほぼ毎日このバッチファイルを数十回使実行しますので、仮に一日20回実行していると仮定すると、
このUSBメモリは、最低でも、20×365×1.5=10,950回のバッチファイルアクセスに耐えています。
上に紹介したUSBメモリは、コスパもとても優れていますので、バックアップ先として一押しです。
このブログ内の他の記事の紹介
・安心のパソコンショップはこちら
・おすすめの中古パソコンショップはこちら
・データを自動でUSBメモリにバックアップする方法はこちら
・USBメモリのデータを復旧不可能なように消去する方法はこちら
バッチファイル中の記載の意味
以下は、興味のある人だけお読みください。
今回紹介したバックアップ用バッチファイルの記載について簡単に説明をします。
@ECHO OFF
→実行コマンド表示させないためのコマンドです。
ECHO
→メッセージを表示させるためのコマンドです
ECHO.
空行を表示するためコマンドです。
robocopy <バックアップ元フォルダ> <バックアップ先フォルダ> /MIR /DCOPY:DAT
→<バックアップ元フォルダ>の内容を<バックアップ先フォルダ>にミラーリング(同期)するためのコマンドです。
If "%ERRORLEVEL%" geq "8" (...) else (...)
→エラーが起きた際(エラーレベルが8以上の場合)にエラーレベルを表示します。
PAUSE
→一旦停止します
最後まで読んでいただきましてありがとうございました!