Robocopyによるファイルのコピー

Published by

on

■robocopyとは

robocopy(Robust File Copy)はWindows環境に標準で付属していて利用できるファイルコピーツールです。コマンドプロンプトやPowerShellから実行でき、単なるファイルコピーに加え、フォルダ構成の完全なミラーリングや大容量データの効率的なコピーなどに特化しているためバックアップ用途などで利用できます。

■copyやxcopyとの違い

ファイルコピーコマンドとして「copy」や「xcopy」も利用できますが「robocopy」の利点はマルチスレッド対応や自動再試行オプションなど、「Robust」=「強健な」という名前の通り様々な用途で使いやすいものになっています。

■基本の実行

基本は「robocopy コピー元 コピー先 [オプション]」という形になります。

robocopy C:\src E:\destination /LOG:C:\robocopy.txt

覚えておくと便利、よく使われると思うものをピックアップしました。実行環境やバージョンによりオプションが異なる場合もあると思われますので詳細は「robocopy /?」にて実行環境のヘルプを確認するようにしてください。

オプション説明
/E空のディレクトリ含み、サブディレクトリをコピーします。
/PURGEコピー元にないファイルをコピー先に反映し削除します。
/MIRミラーリング(同期)させます。/E /PURGEと同等です。
/MT:88個のマルチスレッドでコピーを実施します。(8=既定値)値は1~128が選択可能です。
/COMPRESSファイル転送時に圧縮を要求します。送受信の双方で対応が可能な場合に限ります。
/LOG:ファイルパス既存のファイルを上書きでログを出力します。
/LOG+:ファイルパス既存のファイルにログを追記します。
/Bバックアップモードでコピーします。※別途記載します
/R再試行回数。デフォルトは100万回のため、指定をお勧めします。
/NPコピー完了率を非表示にします。

上記オプションの内、「/B」のバックアップモードについてですが、これは「対象ファイルのアクセス権限(アクセス制御リスト=ACL)の設定如何にかかわらず読み書き権限を付与してバックアップする」というものです。

バックアップモードは「SeBackupPrivilege」と「SeRestorePrivilege」と呼ばれるバックアップ用途で存在している、ファイルのアクセス制御をバイパスする権限です。「Administrators」、「Backup Operators」、「Server Operators」グループであれば既定で割り与えられています。

■サンプル:バックアップバッチ

「C:¥works」を「Z:¥backup\yyyyMMdd」の形で宛先に日別のフォルダを作成してバックアップを行うバッチファイルサンプル(dailybackup.bat)です。

@echo off
rem 日別のフォルダにバックアップする
set src=C:\works
set dest=Z:\backup
set log=C:\batch\log\backup.log
robocopy %src% %dest%\%date:/=% /MIR /MT:8 /B /R:2 /NP /LOG+:%log%

コメントを残す