どちらが速いか問題

robocopy及びFastCopyはデータ移行のデファクトスタンダードになっており、どちらが速いかについて検証した結果を公開したサイトが多く見られます。

データ移行にあたっては、多くの場合大量のデータを移行することになるため、その速度が問題になることが多く、「どちらが速いか」と言った議論になることが多いと思われます。

詳細な検証内容については、上記のサイトに譲るとして、結論だけ述べると、FastCopyは速いです。ただし、弊社での検証の結果、FastCopyには1点だけ弱点があり、また、robocopyはあるオプションを利用することで、その速度が大幅に改善されることが分かりました。

FastCopyの弱点

FastCopyを「同期」モードで動かす場合、下記の条件に該当するファイルはコピー対象とならないため、注意が必要です。

※調査しましたが、上記の回避方法を見つけることができませんでした。

ファイルサイズやタイムスタンプに変更がなく、ファイルのアクセス権限のみ変更した場合

また、ログについては、robocopyの方が詳細な情報を得ることができます。FastCopyについては、基本的にはエラーが発生した時のみログに記述されます。robocopyのログもずいぶん見づらいですが。。。

robocopyのテクニック

1. 高速化

弊社で検証した限り、/MTオプションが唯一有効でした。この値を適切に設定することで大幅に速度が向上します(かなり改善します)。適切な値については環境によって異なりますので、その環境に適切な値を見出す必要があります。ここのチューニング次第でFastCopy並の速度が期待できます。

2. アクセス権限のみコピー

下記のオプションで可能です。

robocopy source destination /COPY:SO /IS /E /B /LOG:robocopy.log

じゃあ、FastCopyの良いところ

GUIなので視覚的に使いやすいですね。

また、弊社ではパワーシェルのスクリプトを使用して、ログにエラーが吐かれた際に、メールでアラート通知するように仕込んで使っています。

小難しいことを考えず、「とりあえずデータ移行したい!」という場合は、断然FastCopyなのではないでしょうか。