(BAT)robocopyで外付けHDDにフォルダをバックアップ
前書き
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(公式ドキュメント)