Synchronize two HDD

 

HDDは必ず寿命があるので、重要なデータは複数のHDDで同期しておくのが基本ですよね。

私は昔、ひとつのHDDに保存すると、手動でもうひとつの同期用のHDDに保存するという二度手間をしていました。

今回は、バッチファイルを作成して、ダブルクリックするだけで2つのHDDを同期させる方法を記載していきます。

バッチファイルの利点

ファイルを同期させるフリーソフトがWeb上に多数公開されています。

それなのに、何故わざわざバッチファイルを使うのか?

 

フリーのファイル同期ソフトの多くが、コピー元のディレクトリと、コピー先のデイレクトリを指定して同期させるという仕組みのソフトです。

これだと例えば、コピー元ディレクトリにある膨大な数のフォルダから、AフォルダとBフォルダとCフォルダだけをコピー先のディレクトリに同期させたい場合、3度ディレクトリ指定して3度実行しなければなりません。

コピー元を複数指定できるソフトは無いですし、同期させる度に手動でディレクトリ設定するのも面倒です。

 

 

バッチファイルの場合、コピー元のAフォルダ用、Bフォルダ用、Cフォルダ用のコマンドを3行書いておけば、いつでもダブルクリック一発で同期させることができます。

バッチファイルを作るのは面倒ですが、面倒なのは最初だけ、一度作ってしまえば同期させる作業が楽になります。

同期させるディレクトリの準備

同期させるフォルダを準備していきます。

まず例として、

 

Dドライブに、Srcフォルダを作成します。(コピー元)

Eドライブに、Dstフォルダを作成します。(コピー先)

 

 

 

Srcフォルダの中にはファイル4個とディレクトリ1個を用意します。

Dstフォルダの中身は空っぽにしておきます。

以下のような配置です。

 

 

 

 

同期前のディレクトリ

 

 

 

これから、

DドライブのSrcフォルダを、EドライブのDstフォルダに同期させていきます。

 

コマンドプロンプトを起動

コマンドプロンプトはWindowsシステムツール配下にあります。

右クリックして、管理者として実行してください。

 

コマンドプロンプトを管理者として実行

 

 

コマンドプロンプトで

以下のコマンドを打ち込んでEnterキーを押すと。(「バックスラッシュ」は「¥マーク」のこと)

 

robocopy D:\Src E:\Dst /MIR /COPYALL

 

コマンドプロンプトでrobocopy

 

 

 

実行結果が表示されて、

 

コマンドの実行結果

 

 

 

ディレクトリの中身がコピーされます。

 

robocopyの実行結果

 

 

 

サブフォルダの”2nd”フォルダ内のファイル”D.txt”もDst側にコピーされています。

 

コピーされないという方は、コマンドプロンプトが管理者として実行されていますか?、コマンドの打ち間違いはありませんか?、再度チェックしてみてください。

コマンドの説明

robocopyはファイルやディレクトリをコピーするコマンドです。

このコマンドは管理者コマンドなので、コマンドプロンプトを管理者として起動しなければ使えません。

 

robocopy <コピー元ディレクトリ> <コピー先ディレクトリ> <オプション>

 

 

 

オプションの意味は、

 

/MIR      サブディレクトリを含めてコピー

/COPYALL    ファイル属性ごとコピー

 

 

 

DドライブのSrcディレクトリを、EドライブのDstディレクトリに同期させる場合は

 

robocopy  D:\Src  E:\Dst  /MIR  /COPY

 

となる訳です。

 

 

コピー元とコピー先で同じファイル名(ディレクトリ名)が存在した場合、

コマンドを実行すると、コピー元のファイル(ディレクトリ)で上書き保存されます。

(更新日時にかかわらず、コピー元のデータで上書き)

 

 

さらに、コピー先にしか存在しないファイルやディレクトリは消去されます。

つまり、「コピー元 → コピー先」で完全同期されます。

バッチファイルの作成

バッチファイルとは、

コマンドプロンプトで行う一連のコマンド操作をファイルに保存したものです。

バッチファイルをダブルクリックするだけで、コマンド操作を実行させることができます。

作成方法

作るのは簡単です。

テキストエディタを開いて、例として先ほどのコマンドを入力します。

 

バッチファイルを作成

 

 

 

ファイル名は何でもいいのですが、拡張子を「.bat」として保存してください。

ここでは例として「copy.bat」という名前でデスクトップに保存してみます。

 

拡張子「.bat」 として保存

 

 

 

普通、これをダブルクリックして実行させるのですが、

バッチファイルに記入した「robocopyコマンド」は管理者コマンドなので、ファイルを右クリックして「管理者として実行」をクリックします。

 

バッチファイルを管理者として実行

 

 

 

これだけで簡単にディレクトリの同期を行うことができます。

 


スポンサーリンク

複数のディレクトリを選んで同期

ひとつのディレクトリを同期させるだけならフリーソフトを使う方が簡単なのですが、

複数のディレクトリを一括で同期させるのはバッチファイルが便利です。

例えば、以下のようにSrcディレクトリの中の「A-Dir」と「C-Dir」だけ、Dstディレクトリに同期させたい場合。

 

同期前の階層構造

 

同期前

 

 

 

バッチファイルには以下のように記入して作成します。

 

SET SRC=D:\Src
SET DST=E:\Dst


CALL :backup \A-Dir
CALL :backup \C-Dir
exit /b

:backup
robocopy "%SRC%%*" "%DST%%*" /MIR /COPYALL
exit /b

 

 

 

実行させると、

バッチファイルで指定した「A-Dir」「C-Dir」だけを選んでDstフォルダに同期します。

 

複数ディレクトリを同期

 

 

 

バッチファイルの説明

SET SRC=D:\Src
SET DST=E:\Dst


CALL :backup \A-Dir
CALL :backup \C-Dir
exit /b

:backup
robocopy "%SRC%%*" "%DST%%*" /MIR /COPYALL
exit /b

 

 

1~2行目で起点となるディレクトリを指定しています。

SRCという変数にコピー元、DSTという変数にコピー先を指定。

 

 

5~6行目でコピー元ディレクトリから、さらに下の階層にある「同期させるディレクトリ」を指定。

 

 

10行目のrobocopyコマンドで同期させています。

最後に

外付けハードディスクに大事なデータを保管している人、結構いると思います。

そのハードディスクいつ壊れるか分かりませんよね。

外付けハードディスク2台に同じデータを同期して安全対策しておくと、1台が壊れてももう1台でデータは守れます。

 

2台のハードディスクをPCと繋いでバッチファイルを実行するだけで、追加したファイルと更新したファイルが2台目に上書きされます。

特にディレクトリが複数ある場合に便利です。

最後まで読んでいただいてありがとうございました。


スポンサーリンク