Robocopyを使ってHDDの差分を簡単バックアップ

HDD内のフォルダーとファイルをコピーしたい。

しかも差分だけコピーしたい。

そんな場面はないでしょうか?

 

私はNASのHDDに音楽データを保存しているのですが、RAIDを組んでいません。

そのため新しくデータを追加する度に、PCのHDDに差分のファイルをコピーしています。

しかし毎回手動で差分コピーするのは面倒です。

そこで今回ご紹介するのはRobocopyというWindowsのコマンドです。

正式にはRobust(堅牢な) File Copyと呼ばれます。

このコマンドを使えば、自動で差分データをコピーできます。

使いかた

基本的なコマンド形式は以下のとおりです。

robocopy <コピー元> <コピー先> <ファイル名> <オプション>

<コピー元>と<コピー先>の記載位置は逆にしないように気を付けてください。

以下は<オプション>の説明です。

/mir

コピー元とコピー先のデータを同期コピーします。ただしコピー元に存在しないファイルとフォルダーはコピー先で削除されます。ちなみに、代わりに/Eオプションを使うとコピー先で削除されません。

/NP

進捗状況の表示を行いません。

/TEE

/LOG や /UNILOG でログをファイルに出力する場合でも、コンソールへのログ出力を行います。

/R:n

ファイルコピーに失敗した場合に再度コピーを試す回数です。

/W:n

再試行する時の待ち時間(秒)です。

サンプル

学習用に、実際にNASからパソコンのHDDに差分バックアップ(/mirオプションを使用)を行うサンプルを例に説明します。

ここでは例として

NAS(コピー

\\192.168.11.16\Music

HDD(コピー

G:\MusicDrive

としています。

なお本プログラムを運用した結果の影響については、一切責任を負いかねます。十分にご注意ください。特に<コピー元>と<コピー先>は十分に気を付けてください。うっかりコピー元の変数にコピー先のアドレスやディレクトリを入れないようにしてください。その逆も然りです。

また、上述のとおり/mirオプションはコピー元に存在しないファイルとフォルダーはコピー先で削除されます。コピー先でファイルやフォルダーを削除されたくない場合は、代わりに/Eオプションを使うことをおすすめします。

またダミーデータを使って、十分に練習することを推奨します。

@echo off
rem Cドライブ直下に01_BackupLog-Sフォルダを作成する
mkdir C:\01_BackupLog-S

rem ログ保存
set logfile-S="C:\01_BackupLog-S\%date:~0,4%-%date:~5,2%-%date:~8,2%_robocopy-for-NAStoHDD.log"

rem コピー元
set SrcDir-S=\\192.168.11.16\Music

rem コピー先
set TrgDir-S=G:\MusicDrive

rem コピー開始
robocopy "%SrcDir-S%" "%TrgDir-S%" /mir /NP /TEE /R:1 /W:1 /LOG+:"%logfile-S%"

テキストエディターにコマンドを入力した後、拡張子.batで保存します。

コマンドを実行すると、Cドライブ直下に01_BackupLog-Sフォルダが作成されています。この中にyyyy-mm-dd_robocopy-for-NAStoHDDという名前のファイルが生成されるので、ログを参照できます。

起動時に実行

バックアップの実行し忘れ防止のために、起動時にバッチプログラムを実行するやり方は下記のとおりです。

コメント

タイトルとURLをコピーしました