普段はバックアップ用ソフトを使ってバックアップを取っているのですが遅すぎるのでrobocopyを試してみました。案の定こちらでも遅かったのですが、一応の記録としてバッチファイルを残しておきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
@ECHO OFF REM バックアップ元とバックアップ先の指定 SET DIR_SRC=D:\share SET DIR_DST=\\nas1\backup REM ログファイル名用 SET YMD=%DATE:~-10,4%%DATE:~-5,2%%DATE:~-2,2% SET HMS=%TIME: =0% SET HMS=%HMS:~0,2%%HMS:~3,2%%HMS:~6,2% REM ログファイル名セット SET LOG_FILE="%~DPN0_%YMD%%HMS%.log" REM フルバックアップの場合 robocopy %DIR_SRC% %DIR_DST% /E /B /COPYALL /NP /XA:SH /R:3 /W:0 /LOG:%LOG_FILE% REM 差分バックアップの場合 robocopy %DIR_SRC% %DIR_DST% /MIR /B /M /NP /XA:SH /R:3 /W:0 /LOG:%LOG_FILE% |
/E:空のディレクトリをコピーする、/S:空のディレクトリをコピーしない
空のディレクトリをコピーする・しないの指定。今回はコピーするように/Eを指定しておいた。
/B:バックアップモードでファイルコピーする
robocopyを実行するユーザーがファイルにアクセス権が無くてもコピーできるようにするオプション。AdministratorsかBackup Operatorsのどちらかのグループに所属している場合、権限が無くてもコピーできるようになる。大抵は必須のオプション。
参考 robocopyのバックアップモードとは?管理者権限はいらないの? | MacRubyMacRuby/COPYALL:属性を全部コピーする
データ、属性、更新日時、アクセス権情報、所有者情報、監査情報もコピーする。無指定だとアクセス権情報、所有者情報、監査情報はコピーされない。必要ない気もするけど一応設定した。
/LOG:ログファイルの指定
ログファイルを作成するオプション。サンプルの様に実行日時ごとに分けるといいと思う。(例:backup_20210627010101.log)
/MIR:バックアップ元とバックアップ先で同じ状態にする
バックアップ元でファイルが削除されていたら、バックアップ先のファイルも削除するようになる。あと/Eオプションと同様に空のディレクトリもコピーするようになる。
/M:アーカイブ属性のあるファイルのみコピーし、リセットする
変更のあったファイルのみコピーし、変更があったという”フラグ”を削除する。/MIRオプションだけで十分なのかもしれないけど取り合えず付けてみた。
”フラグ”については以下の記事を参照のこと。
”ファイルをアーカイブ可能にする”とは/NP:進捗率を表示しない
これを設定しないとログに大量の進捗率が表示され見づらいので設定する。
/XA:SH:システムファイルと隠しファイルを除外する
thumbs.dbやExcelの一時ファイルなど、バックアップする必要のないファイルは隠し属性やシステム属性が付いているのでこのオプションで除外させる。これをしないとロックがかかっていて取れない事が頻発する。
/R:3:エラーの場合指定した回数リトライ
リトライ回数がデフォルトだと100万回らしいので減らしておく。
/W:0:リトライ時に待つ秒数
エラーが起きた時、待たずにリトライさせる。
/Z:再起動可能モードでコピーする
ネットワーク越しにファイルのコピーをする場合に、失敗して再開する時は途中から再開するようになる。処理が重くなるのでよっぽと劣悪な回線でコピーするとき以外は使わない方がいいらしい。今回は使ってない。
参考 Robocopy /Zオプションの再起動可能モードとはRobocopy /Zオプションの再起動可能モードとは
[…] robocopyコマンドでバックアップを取る […]