あいしんくいっとオススメ商品レビュー

robocopyでデータ移行する上で絶対に知っておきたい11つのこと

この記事には広告を含む場合があります。

記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。

本記事対象
robocopyでデータ移行する上でのポイントが知りたい方

ども。あいしんくいっと(@ithinkitnet)です。

ithinkit

robocopyでデータ移行するのに知っておきたいことって何だろう・・・?

Windowsでデータ移行するなら必要不可欠なrobocopy(ロボコピー)。ファイルサーバーのデータ移行でも威力を発揮します。
Windowsのデータ移行、ファイル共有からのrobocopyで楽々解決!

便利なデータコピーツールであるrobocopyを利用する上で知っておきたいことを書いておきたいと思います。

robocopyでデータ移行するなら絶対に知っておきたい11つのこと

コピー元データは極略減らす

コピー元となるデータは極力減らしておきましょう。不要データを事前に削除しておくことでコピー時間の短縮に繋がります。当たり前だけど一番効果が期待出来ます。

ithinkit

移行データの総数を減らすのはすごく大事!
  • データコピー元となるデータは可能な限り減らしましょう!

思考停止で「全部重要だから全てデータコピーして!」って言われることも多々あるので減らすのは簡単ではないでしょうけどw
コピー元データが小さくなればなるほどコピー時間の短縮につながるので、事前に不要データ削除を頑張りましょう!

コピー元のファイル数、容量は控えておく

正常にrobocopy出来たかエビデンスとして残せるよう、コピー対象フォルダのファイル数、容量は事前に控えておきましょう。
(エクスプローラのプロパティ比較が手っ取り早くておすすめ)

robocopy実行後にコピー元とコピー先フォルダで比較することでデータ移行の正常確認の目安に出来ます。更新されるとズレますが、大体の目安にはなります。

robocopyはスペックの良いサーバで実行

robocopyはコピー元、コピー先のどちらでも実行可能ですが、スペックの良いサーバでrobocopyを実行させるとパフォーマンス向上に期待が出来ます。

例えば、旧サーバから新サーバへrobocopyする場合、新サーバのほうがスペックが良いのであれば、新サーバ側でrobocopyを実行させましょう!

ithinkit

robocopyはスペックの良いほうのサーバーで実行を!

2016以降なら「MT」オプションで爆速!?

WindowsServer2016以降なら「MT」オプションが使えます。MTはマルチスレッド対応オプションなので、CPUがマルチコアの場合に有効。

ちなみにデフォルトだとMT:8なので、8コアないと速度アップは期待出来ないです。
CPUコア数に合わせて2コアならMT:2、4コアならMT:4と適切に指定しましょう。

マルチコア環境の場合、マルチスレッドオプションを使うと、コピー速度アップが期待出来るので活用しましょう。

MTオプション実行例
~ robocopyログ抜粋 ~

-------------------------------------------------------------------------------
   ROBOCOPY     ::     Windows の堅牢性の高いファイル コピー                              
-------------------------------------------------------------------------------

  開始: 2020年1月17日 22:58:42
   コピー元 : D:\backup\
     コピー先 : \\192.168.11.100\D$\backup\

    ファイル: *.*
        
  オプション: *.* /S /E /COPYALL /PURGE /MIR /B /MT:2 /R:1 /W:1

------------------------------------------------------------------------------

~ robocopyログ抜粋(終わり) ~
Point

MTオプション自体はWindowsServer2008時代から存在しますが、「WindowServer2016以前でMTオプションを利用するとコピーに失敗する」といったバグがあるようです。利用するのであれば2016以降が無難です。

 Robocopy.exe の /MT (マルチ スレッド) オプションを使用するとコピー処理に失敗する

    シングルコアなら、ロボコピーバッチ自体を細分化することで速度アップが望めます。

robocopy実行ログは必ず出力

robocopyの実行に成功したか否かはログを見れば分かります。なので、「/log」オプションを指定してrobocopyログを出力しましょう。
「コピーに成功したのか?失敗したのか?」と問い詰められないようエビデンスとして出せるように。

robocopyバッチで当日日付のログ出力させるなら下記のような感じ。

rocobopyログ出力例

set date=%date:~0,4%%date:~5,2%%date:~8,2%
robocopy "\\192.168.11.126\f$\src" "E:\bkdata" /MIR /R:0 /NFL /NP /log+:.\robocopy_%date%.log

エラーがあればログに出力されるので個別対応。「エラー」といった検索ワードで確認可能。
ロボコピーエラーログ出力

注意

robocopyログの出力先はしっかりと指定しましょう。ログの吐き先が無いとrobocopy実行エラーになるので注意。

robocopyエラースキップオプションは必須

コピーに時間がかかる場合、晩にrobocopy流して帰ったりするでしょう。

ithinkit

データ量多いし、robocopyを流して帰ろう!

次の日にはコピーが終わってるかと思いきや、エラーでコピーが完了していなかった!

ithinkit

ガーン!robocopy出来てねー・・・。

なんてことがあります。
そんな情けない事態にならないよう、コピーエラーが発生したら、スキップして次のコピーさせるようにしておきましょう。

ithinkit

コピーエラーが発生したら、スキップして個別対応!

システムが掴んでいるデータはコピーに失敗することが多いです。
「○○秒間待機しています」が、延々続くとコピーは終わらないのでスキップさせましょう。

robocopyエラーログ

~ ロボコピーログから抜粋 ~
2020/1/17 22:59:06 エラー 5 (0x00000005) ファイルをコピーしています \\192.168.11.100\D$\backup\BACKUP_20191201-0230.zip
アクセスが拒否されました。
1 秒間待機しています... 再試行しています...
      新しいファイル           3.3 g    BACKUP_20191201-0230.zip  0.0%   0.0%   0.0%   0.0%   0.0%   0.0%   0.0%   0.0%   0.0%   0.0%   0.0%   0.0%  

~ ロボコピーログから抜粋(終わり) ~

robocopyのコピー速度が出ないなら細分化させよう

robocopyは元々シングルタスクでコピーされます。
上に書いた「MT」が使えない場合はrobocopy処理を分割するとコピーが速くなる可能性があります。

「MIR」オプションには気を付けろ

/MIRオプションを指定するとコピー元のフォルダとミラーリングされます。
つまり、コピー元でファイルを削除すると、コピー先のファイルも削除されます。
コピーしたデータは、コピー先にそのまま残したいのであれば、MIRは付けないようにしましょう。

  • 本番切替までは/MIRは付けず差分で同期、本番切替直前で/MIR付けて最終差分同期とすることが多いです。

コピー元、コピー先は向きを間違えない

/MIRオプションをつけてコピー元とコピー先を逆にしてrobocopy実行した場合、えらいことになります。

コピー先が空なら、コピー元も空になります。

システム領域は除外しよう

「System Volume Information」といったシステム領域はアクセス権が無いのでコピーに失敗します。ですので、除外することをおすすめします。ゴミ箱「@Recycle」も除外推奨。

robocopyコピーエラー

2020/03/30 23:22:04 エラー 5 (0x00000005) ファイルをコピーしています \\jfs01\f$\System Volume Information\WPSettings.dat
アクセスが拒否されました。

2020/03/30 23:22:04 エラー 5 (0x00000005) ファイルをコピーしています \\jfs01\f$\System Volume Information\{2abac7b8-66c1-11ea-b5a2-08f1eab03c9d}{3808876b-c176-4e48-b7ae-04046e6cc752}
アクセスが拒否されました。

2020/03/30 23:22:04 エラー 5 (0x00000005) ファイルをコピーしています \\jfs01\f$\System Volume Information\{2abacb97-66c1-11ea-b5a2-08f1eab03c9d}{3808876b-c176-4e48-b7ae-04046e6cc752}
アクセスが拒否されました。

2020/03/30 23:22:04 エラー 5 (0x00000005) ファイルをコピーしています \\jfs01\f$\System Volume Information\{2abad815-66c1-11ea-b5a2-08f1eab03c9d}{3808876b-c176-4e48-b7ae-04046e6cc752}
アクセスが拒否されました。

「/XD」オプションを指定して除外することをおすすめします。

/XDオプション

/XD "System Volume Information"

コピー元をドライブ指定するとデータが見えなくなる

コピー元をドライブ指定した場合、コピー先フォルダにHS属性が付与されて隠しフォルダになります。ですので、robocopyした後、コピー先を確認すると見えなくってしまいます。

ithinkit

コピー先フォルダが無い!どうしよう!?

なんて焦らなくても良いよう、コピー元をドライブにした場合、コピー先が見えなくなるということは認識しておきましょう。
robocopyでコピー先フォルダが見えない!コピー元ドライブ指定が原因かも

robocopyログに日付を付ける

robocopyを数日間流すのであれば、PowerShellで流すようにして、robocopyログに日付をつけておくと勝手にローテーションされるので便利。

PowerShell作成例


$Today = Get-Date -Format "yyyyMMdd"

robocopy $SRCDIR $DESTDIR /MIR /R:0 /E /NP /FFT /XA:SH /XD "trashbox" ".TemporaryItems" "System Volume Information" "`$RECYCLE.BIN" /XJD /XJF /COPY:DAT /DCOPY:DAT /XO /LOG:.\robocopy.log_$Today;

robocopyでデータ移行する上で絶対に知っておきたいことまとめ

最後にrobocopyでデータ移行する上で絶対に知っておきたいをまとめておきます。

robocopyでデータ移行する上で知っておきたいこと
  1. コピー元のデータは極略減らす
  2. コピー元のファイル数、容量は控えておく
  3. obocopyはスペックの良いほうのサーバーで実行
  4. 2016以降なら「MT」で爆速!?
  5. robocopy実行ログは必ず出力
  6. robocopyエラースキップオプションは必須
  7. robocopyのコピー速度が出ないなら細分化させよう
  8. 「MIR」オプションには気を付けろ
  9. コピー元、コピー先は絶対に向きを間違えない
  10.  システム領域は除外しよう
  11.  コピー元をドライブ指定するとコピー先フォルダが見えなくなる
  12. robocopyログに日付を付ける

便利な差分コピーツールであるrobocopy。
Windowsでデータ移行するなら外すことの出来ない優秀なツールなので、今回挙げた内容は把握しておきましょう。

以上、あいしんくいっとでした。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)