home about terms twitter

(BAT)robocopyで外付けHDDにフォルダをバックアップ

date: 2021-05-13 | mod: 2021-05-13

前書き

Windows 10では、「ファイル履歴を使用してバックアップ」によりファイルのバックアップを自動的に取ることができます。

一方で、自分で構成を把握したうえで

  • 任意のファイルやフォルダを
  • 任意の場所へバックアップ

したい場合があります。

そこで、BATファイルとタスクスケジューラを用いて外付けHDDにバックアップを取る方法について記載します。

方法

BATファイルの作成

robocopy コピー元のパス コピー先のパス(外付けHDD) \mir

コマンド上からコピーを取るために、今回はrobocopy(公式ドキュメント)を使用します。

mirコマンドでコピー元にファイルが存在しない場合にコピー先から削除します。

上記のコードをBATファイルとして保存します。

タスクスケジューラの設定

  • タスクスケジューラを起動します。

  • ウィンドウ右部の「基本タスクの作成」を選択します。

  • 「基本タスクの作成」から「名前」や説明などを入力します。

  • 任意のトリガーを選択します。

    • 日付や時間を選択することができます。
  • 「操作」で「プログラムの開始」を選択します。

  • 「プログラム/スクリプト」から実行したいファイルを選択します。

    • このときに、上で作成したBATファイルのパスを選択します。

以上の設定で、トリガーに設定した時間にrobocopyが起動します。

ここまででバックアップを利用できますが、参考までに結果を以下に示します。

結果

コピー先にファイルがない場合

例として、以下の条件でコピーを取ってみます。

コピー元のフォルダ構成

C:.
│  input_1.txt
│
└─input_2
        input_2_1.txt

コピー先のフォルダ構成

E:.
サブフォルダーは存在しません

この状態で以下のコマンドを実行します。 (path)には任意のパスを指定してください。

robocopy C:(path)/input E:(path)/output  \mir

出力は以下の通りです。

コピー先のフォルダ構成

E:.
│  input_1.txt
│
└─input_2
        input_2_1.txt

コピー先にファイルがある場合

コピー元のフォルダ構成

C:.
│  input_1.txt
│
└─input_2
        input_2_1.txt

コピー先のフォルダ構成

E:.
│  input_1.txt
│
└─input_2
        input_2_2.txt
  • input_1.txtに「test」と入力しておく。
  • input_1.txtはコピー元のほうが更新日が古いとする。
  • input_2_2.txtというコピー元に存在しないファイルがあるとする。

先ほどのコマンドを実行します。

E:.
│  input_1.txt
│
└─input_2
        input_2_1.txt
        input_2_2.txt
  • input_1.txtに「test」がコピーされた。
  • コピー元の方が古くてもコピー先がコピー元に書き換えられた。
  • input_2にinput_2_1.txtがコピーされた。

コピー元からファイルを削除した場合

input

C:.
│  input_1.txt
│
└─input_2
        input_2_2.txt

output

E:.
│  input_1.txt
│
└─input_2
        input_2_1.txt
        input_2_2.txt
  • コピー元からinput_2_1.txtを削除した。

同様のコマンドを実行します。

output

E:.
│  input_1.txt
│
└─input_2
        input_2_2.txt
  • outputからinput_2_1.txtが削除された。

参考文献

  • robocopy(公式ドキュメント)