robocopy
ファイルサーバ等のファイル/フォルダをアクセス権ごとコピーできる便利コマンド。
指定したパスの配下のファイル/フォルダを全コピーできる。
使い方を間違えると一瞬でデータを消すので注意。
特に最近データ移行作業が立て込んでたのでここぞとばかりに使い込んだ実績あるコマンド。
C:\>robocopy コピー元 コピー先 /MIR /COPYALL /R:0 /W:0 /LOG+:ログファイル出力先 /NP /NDL /TEE /XJD /XJF /XD "除外ディレクトリ" /XF "除外ファイル" /L
解説
/MIR
ミラーリングオプション。コピー元と先のデータ情報を同期させる。
元が消えれば先も消え、元が増えれば先が増える、増減両方の差分コピーが可能。
お察しの通り、元と先を間違えればあっという間にデータ損失。
-
/COPYALL
=/COPY:DATSOU
ファイルのどの情報をコピーするか指定する。
D=データ本体
A=アーカイブ情報
T=タイムスタンプ
S=セキュリティ(NTFSアクセス権)情報
O=ファイルオーナー(所有者)情報
U=監査設定情報
/R:0
コピー失敗時、何回リトライするか。
デフォルトは100万回なので失敗すると一生終わらない。
/W:0
コピー失敗と判断するまでの待ち時間。
デフォルトは30秒
/LOG+:LogfilePath
ログ出力オプション。+をつけることで追記になる。
ログ出力先ディレクトリは事前に作成しておくこと。
ログファイルが作れないよってエラーになる。
/NP
進捗非表示(No Progress)オプション。進捗率があるとログが非常に見づらい。
-
/NDL
もしくは/NFL
コピー成功時にフォルダ名/ファイル名のログを出力しない。失敗時は出力される。
/TEE
結果をログファイルとプロンプトの両方に出力する。
-
/XJD
もしくは/XJF
フォルダ/ファイルの接合ポイントを除外する。(ジャンクションリンクとかでググる...)
両方とも必ずパラメータに含めること!
無限ループに陥る。
-
/XD
もしくは/XF
フォルダ/ファイルを除外する。
/L
テストモードで実行。実際にコピーはされない。
まずはこいつで軽くテストしてから本実行するべき。
元と先を間違えるなんてミスは減るはず。
付録
batのひな形。
コピーエラーは【エラー 5】が出やすかった。フォルダのAdmin権限が抜かれててコピーできないらしい。(そういうところはお客さんに頼んで手動コピーしてもらったり)
/B
オプションでどうにかなった気もするけど検証してない。
それと「コピー元とコピー先の認証情報(ユーザ)が違うから入れないよ」的なエラーを以前見た気がする...(コピー元・先で同じユーザ・パスワードでログインのうえ、実行すると良い?)
@echo off
set /p pushKey="データコピーを実行しますか(y/n)? : %pushKey%"
if "%pushKey%"=="y" (
robocopy \\10.0.0.1\D$\FILE D:\FILE /MIR /COPYALL /R:0 /W:0 /LOG+:D:\robocopy.log /NP /NDL /TEE /XJD /XJF /XD "System Volume Information" /XD "$RECYCLE.BIN" /XD "ごみ箱" /XF "Cavoltrc.dat"
echo ----- データコピー終了 -----
)else (
echo ----- キャンセルしました ----
)
pause
exit