コマンドプロンプトとrobocopyで快適に自動バックアップ
数年前から何個か外付けHDDを運用するようになった。定期的にバックアップのため、色んなフォルダをドラッグ&ドロップしてコピー。全部上書きするため、時間もかかり本当に面倒くさい・・・なんとかならないかと思ってたら、コマンドプロンプトとrobocopyというコマンドを用いてバッチファイルを作り、自動化できることがわかった。プログラミングには疎いのだが、そんなに難しくなかったので試してみたところ、とても快適になった。図解すると以下のようになる。
Robocopyとは
二つのフォルダ名(A,Bとする)を指定し、フォルダAからフォルダBへと内容をコピーしてくれるというコマンド。
この時、同時に /mir というクラスを設定してやると、BがAと完全に同じになるようにB内の余分なファイルを削除してくれる。(言い換えると、BにあってAにないファイルたちを、Bから削除する) つまり、マスターとするフォルダ達さえ注意して編集していればbatファイル一個で勝手にバックアップ&いらないファイルを消去して整理してくれるわけです。詳しい内容は以下を参考されたし。
Tech TIPS:Windowsのrobocopyコマンドでフォルダーをバックアップ/同期させる - @IT
Windows TIPS:robocopyコマンドでコピーするファイルの種類を選択/変更する - @IT
Robocopyでフォルダをコピー
パソコンのファイルをrobocopyで手堅くバックアップする方法 - パソコンのバックアップ方法まとめ [amaoto-log(あまおとろぐ)]
行った手順
- ドライブと保存したいフォルダたちのマッピングをexcelにて作成し、エクセルでコマンド一覧を作成。(数式の&と” ”(空白)で文字結合・空白調整) 私の場合外付けHDDが5個ほどあり、バックアップ管理したいフォルダが5種類。excelにてマッピングすることにより、将来的に構成が変わってもわかりやすいようにした。
- メモ帳に貼り付け、.batファイルで保存し完成。
クラス設定の解説:
/mir: | ミラーリングコピー(前述) |
/fft: | タイムスタンプ2秒とする(更新日時が2秒以内のズレなら無視) |
/xo: | 古いファイルを除外 |
/r:0: | リトライ回数0 |
/XJD: | フォルダへの接合を除く |
/XJF | システム属性を除く |
/LOG: | ログファイルを出力する |
attrib -H -S: | 隠しファイル化の解除 |
スケジューラに入れれば毎日自動バックアップ、ということも可能なようだ。NASやサーバ運用にも有効と思われる。プログラムが走っている様子↓