読者です 読者をやめる 読者になる 読者になる

れのんのん

日常の事とか思った事をつらつらと

バックアップに便利!ファイルやフォルダのコピーにオススメのrobocopyコマンド

 

f:id:le9240:20160314222613j:plain

 

おはこんばんにちは、れのんです。

今日は少し技術的なお話しをば。

 

ファイルサーバの移行にもよく使われるrobocopyコマンド!

ドラッグ&ドロップでバックアップを行っている人や、データ移行を手早く高速に行いたい人にオススメです♪

 

 

コマンド概要

Windows 7 / 8 / Vista /2008 /2012標準コマンド。
それ以外のOSはMicrosoftよりリソースキットをダウンロードすることにより、使用可能になります。
ちなみにrobocopyの"robo"はロボットではなく、堅牢性の高いコピーという意味。
 
 

特徴

バックアップが早い

更新されたファイルだけをコピーするので、2回目以降のバックアップが速い!

 
同期が可能
ミラーリング機能があるので、バックアップ元でファイルを削除すると、バックアップ先でも同じように削除してくれる。
 
オプションが豊富
再試行回数やログファイルなど細かく実行条件を指定出来る。
  
コピー性能が高い
ファイルやフォルダのアクセス権限もコピーできる
また、ファイルのパスが256文字を超えても大丈夫 !
 
 

基本使用例

robocopy□バックアップ元□バックアップ先□オプションスイッチ
 
起動は、コマンドプロンプトもしくはbatファイル等で起動。
 ※□は空白の意
 
 

 オプションスイッチについてまとめ

 /copy
/COPY:D データ(ファイルデータそのもの)
/COPY:A 属性
/COPY:T タイムスタンプ
/COPY:S セキュリティ NTFS ACL
/COPY:O 所有者情報
/COPY:U 監査情報
 
全て指定する場合/COPYALL もしくは/COPY:DATSOU
 
/b
バックアップモードでファイルコピー
実行ユーザーに権限のないフォルダやファイルでもコピーできる
 
/FFT
FATファイル時間 (2 秒の粒度) を仮定
NTFSからFATにコピーする場合、ファイルシステムの仕様上の問題でファイルのタイムスタンプが正確に同じにならない誤差を許容し、タイムスタンプに2秒の誤差があっても同じファイルと認識する。
 
/R:0
失敗したコピーに対する再試行数。
コピー時間を短縮したい時に使用、既定値は1,000,000なので設定必須。
 
/W:0 
再試行と再試行の間の待機時間。
再試行する時の待ち時間、既定値は30秒だがそんなに待たなくても良いので設定必須。
 
/LOG:"ログファイルのパス"
バックアップ結果を指定したパスにファイル出力する。
既にログファイルがある場合上書き。
 
/NP
バックアップ中の進行状況を表示しない。
表示しない方がバックアップ時の負荷が下がる為、作業時間は早くなる。
 
/NDL
バックアップ結果として、ログファイルにファイルのみが出力されるようになる。
フォルダパスがログに出力されなくなるので、ログがすっきりする。
 
/NFL
コピーしたファイル名を表示しない、作業時間短縮に繋がる。
 
/XJD
このパラメータは、Windows 7 / Vista / 2008 標準のrobocopyコマンドのみ。
ダウンロード版は/XJF。
フォルダの接合ポイントを除外。
ジャンクションと呼ばれる特殊フォルダをコピーしない。
Windows 7 / 8 / Vista / 2008の場合、このパラメータがないと、変な特殊ファイルが大量にコピーされるため必ずパラメータに指定する。
 
/MIR
ディレクトリツリーをミラー化、簡単に言えば同期(/E および /PURGE と同等)
 
/TEE
バックアップの結果をコマンドプロンプトとログファイルの両方に出力。
バックアップ状況がリアルタイムで見えるので、状況が良くわかる。
 
/L
バックアップのテスト。
コピーや削除予定のファイルをログ出力するだけで、バックアップは行われない。
バックアップのシュミレーションに便利。
確認できた後は、このオプションを削除する。
 
/ZB
中断した際、再開できる方法でコピーし、アクセス権のエラーが発生した際には
読み取り権限がなくてもバックアップできるモード(バックアップモード)を使用する。
 
 
 

ファイルサーバ移行で使用する場合のコード例

ファイルのパスさえ間違えなければ特に問題なく動くと思いますので、移行を考えている方は参考にしてみて下さい。

 

set INPUT_PATH="コピー元パス"
set OUTPUT_PATH="コピー先パス"
set TIME2=%time: =0%

 

set LOG_FILEPATH="ログファイルパス"%date:~-10,4%%date:~-5,2%%date:~-2,2%".txt"
 
rem /COPY:DATSO
 
robocopy.exe %INPUT_PATH% %OUTPUT_PATH% /COPYALL /MIR /FFT /ZB /R:0 /W:3 /NP /NDL /NFL /TEE /LOG:"%LOG_FILEPATH%"

 

rem exit /b 0
 

まとめ

難しそうに見えますが、案外使い方は難しくありません。
私用でWindowsPCをお使いの人も、バックアップ目的で使用するには良いと思います。
一度バッチファイルを作っておいてタスクスケジューラ等に登録しておけば、自動で実行する事も可能です。
是非一度試してみて下さい♪
 
では、ばいなら〜☆
 
 
広告を非表示にする