web-dev-qa-db-ja.com

xcopyとrobocopyの違い

私は、バッチスクリプトを初めて使用します。初心者として、スクリプト作成中に両方とも便利だと思いますxcopyとrobocopyの主な違いは何ですか?

49
naveen marri

Robocopyは、新しいバージョンのWindowsでXCopyを置き換えます

  1. ミラーリングを使用しますが、XCopyは使用しません
  2. / RHオプションがあり、コピーの実行に設定時間を許可します
  3. ファイルの違いをチェックする/ MON:nオプションがあります
  4. XCopyよりも多くのファイル属性をコピーします

はい、Mark Setchellに同意します。どちらもがらくたです。 (マイクロソフトから提供)


UPDATE:

XCopyリターンコード:

0 - Files were copied without error.
1 - No files were found to copy.
2 - The user pressed CTRL+C to terminate xcopy. enough memory or disk space, or you entered an invalid drive name or invalid syntax on the command line.
5 - Disk write error occurred.

Robocopyが返すコード:

0 - No errors occurred, and no copying was done. The source and destination directory trees are completely synchronized.
1 - One or more files were copied successfully (that is, new files have arrived).
2 - Some Extra files or directories were detected. No files were copied Examine the output log for details. 
3 - (2+1) Some files were copied. Additional files were present. No failure was encountered.
4 - Some Mismatched files or directories were detected. Examine the output log. Some Housekeeping may be needed.
5 - (4+1) Some files were copied. Some files were mismatched. No failure was encountered.
6 - (4+2) Additional files and mismatched files exist. No files were copied and no failures were encountered. This means that the files already exist in the destination directory
7 - (4+1+2) Files were copied, a file mismatch was present, and additional files were present.
8 - Some files or directories could not be copied (copy errors occurred and the retry limit was exceeded). Check these errors further.
16 - Serious error. Robocopy did not copy any files. Either a usage error or an error due to insufficient access privileges on the source or destination directories.

Robocopyの戻り値の詳細については、こちらをご覧ください。 http://ss64.com/nt/robocopy-exit.html

62
Nicolas Tyler

最も重要な違いは、robocopyは(通常)エラーが発生すると再試行するのに対し、xcopyは再試行しないことです。ほとんどの場合、これによりrobocopyはスクリプトでの使用により適したものになります。

補遺:完全を期すために、ロボコピーにはエッジケースの既知の問題が1つあります。 名前に無効なUTF-16シーケンスが含まれるファイルまたはディレクトリのコピーに黙って失敗する場合があります。 それが問題になる場合は、サードパーティのツールを調べるか、独自のツールを作成する必要があります。

13
Harry Johnston

私が見ることができる違いは、Robocopyにはもっと多くのオプションがあるということですが、特別なことをしない限り、それらのどれも特に役立つとは思いませんでした。

いくつかのコピールーチンのベンチマークを行ったところ、XCOPYとROBOCOPYが最速であることがわかりましたが、驚いたことに、XCOPYは常にRobocopyを凌edgeしていました。

Robocopyが失敗したコピーを再試行するのは皮肉なことですが、xcopyが実行したことのないベンチマークテストでも失敗しました。

ベンチマークテスト後、ファイル全体を(バイトごとに)ファイル比較しました。

テストでrobocopyで使用したスイッチは次のとおりです。

 **"/E /R:1 /W:1 /NP /NFL /NDL"**.  

誰かがより速い組み合わせを知っているなら(必要な/ Eを削除する以外)、私は聞きたいです。

Robocopyのもう1つの興味深い/残念な点は、コピーが失敗した場合、デフォルトでは、試行ごとに30秒の遅延で1,000,000回再試行することです。長いバッチファイルを無人で実行している場合、数時間後に戻って特定のファイルをコピーしようとしていることに気付くと、非常にがっかりする可能性があります。

/ Rおよび/ Wスイッチを使用すると、この動作を変更できます。

  • / Rを使用すると、再試行の回数を指定できます。
  • / W再試行までの待機時間を指定してみましょう。

ここにファイルを添付する方法があれば、結果を共有できます。

  • 私のテストはすべて同じコンピューターで行われ、
  • ある外部ドライブから別の外部ドライブにファイルをコピーし、
  • uSB 3.0ポートの両方。

また、FastCopyとWindows Copyをテストに含め、各テストを10回実行しました。注意してください、違いはかなり重要でした。 95%の信頼区間には重複がありませんでした。

7
SixSigmaGuy

どんなバージョンであっても、人々が* {COPY}の手で苦しんでいるのを聞くのは苦痛です。私はベテランのバッチおよびBashスクリプトライターであり、rsyncをお勧めします。cygwin(cygwin.org)内でこれを実行するか、いくつかのバイナリを見つけることができます。出力を2>&1にリダイレクトして、後で分析するためにout.logなどのログファイルに保存できます。幸運を祈ります= M。カーン=

2
Haji M. Kaan