Windows・MS

Robocopyでネットワークフォルダの差分を取得する方法

Robocopyを使い、ネットワーク上のフォルダ2箇所の差分を取得する方法をまとめました。

今回、ネットワークフォルダの差分を取得したかったわけ

Buffalo LinkStationに共有フォルダを作成して運用しています。

そのLinkStationにUSB DISKを接続して上書きバックアップ(増分バックアップ)を毎日おこなっています。

ちなみに、増分バックアップというのは、バックアップ先(USB DISK)のデータが削除されずに、増え続けていきます。

*一般的に使われる増分バックアップとは意味が異なります。

  • メリットは、バックアップ元(LinkStation)で誤ってデータが削除されてしまっても、必ずバックアップ先(USB DISK)にデータが存在すること。
  • デメリットは、バックアップ先(USB DISK)内のデータは、手動で削除されない限り無限に増え続けていくこと。

つまり、どこかのタイミングでファイルを削除する必要があるのです。

 

バックアップ先のデータを全部消去して、バックアップを取り直してしまえば話は早いのですが

あとになって

おととい間違えてファイルを削除しちゃったんだけど戻せるよね?

なんて言われても後の祭り!戻せなくなってしまうのが恐ろしい

実際にそういう痛い目にあったので。。

 

そこで、バックアップ元(LinkStation)とバックアップ先(USB DISK)の差分情報を取得する。

差分情報を元に、ファイル日付を確認しながらバックアップ先の余分なアイテムを手動で削除する必要がありました。

Robocopy で ネットワークフォルダの差分(余分なフォルダとファイル)情報を取得する方法

手順

1.コマンドプロンプトを管理者として実行します。
2.net useコマンドを使用して共有フォルダに接続します。

構文
net use ¥¥サーバー名¥フォルダ名 /:use:サーバー名¥ユーザー名 パスワード

(サンプル)

サンプルの解説
server01サーバに存在する共有という名前のフォルダに対し、Adminユーザーが01234パスワードで接続します。

3.Robocopyコマンドを実行します。

構文
robocopy コピー元フォルダ名 コピー先フォルダ名 /L /E /XO /Z /R:0 /FFT /TS /LOG:ログファイル名

(サンプル)

 

オプションについて

オプションの意味 説明
/L リストのみ。いずれのファイルにも、コピー-、タイムスタンプの追加、または削除を実施しません。
/E 空のディレクトリを含むサブディレクトリをコピーします。
/XO 古いファイルを除外します。
/Z 再起動可能モードでファイルをコピーします。
/R:0 失敗したコピーに対するリトライを行わない。
/FFT FATファイル時間(2秒の粒度)を仮定します。
/TS 出力にコピー元ファイルのタイムスタンプを含めます。
/LOG ログファイルに状態を出力します(既存のログを上書きします。)

Robocopyサンプルの解説

まず、Lオプションを指定しているため、実際のファイルに対して変更(または削除)は行われません。
仮に実行したらどうなるだろう、といったシュミレーションを行い、結果を表示します。
また、NAS製品を使用しているため、FFTオプションを指定しています。
実行すると、コピー元とコピー先を比較して、コピー先にだけ存在する余分なフォルダとファイルを洗い出すことができます。
ただし、ログ上は他のいろいろな情報も一緒に存在してしまうため、この後に説明する方法でログから必要な情報だけを洗い出す作業が必要です。

実行結果

表示される結果から、以下のキーワードを探します。

Extra Dir → バックアップ先(USB DISK)に存在する余分なディレクトリ

Extra File → バックアップ先(USB DISK)に存在する余分なファイル

 

~おわり~

  • この記事を書いた人
  • 最新記事

だっち

30代 二人の子持ち。 婿はなにかと肩身が狭いので、寺泊で釣りができることが何よりの癒しです。シーバス、アジング、メバリング、ショアジギング、たまにぶっこみ釣りやサビキ釣りも。冬にはスノボを楽しみます。