n-Archives.net

Robocopy /CREATEオプションの目的と使い方

目次

/CREATEオプションは何のためにあるの?

Robocopyの /CREATE オプションは、「ディレクトリと、サイズが0のファイルのみを作成する」というオプションです。いったいこれは何のためにあるオプションなのでしょうか。

 

目的を一言でいうと、初回コピーの際に、「ディレクトリがフラグメントを起こさないようにする」ためです。

 

NTFSなどのファイルシステムでは、ディレクトリもファイルの一種として扱われます。ディレクトリの中に存在するファイルの数が多くなればなるほど、ディレクトリの「ファイルサイズ」は大きくなり、ハードディスク上の複数の物理ブロックにまたがるようになります。この複数の物理ブロックが物理的に連続した位置にあれば、高速に読取りを行うことができますが、逆に、ばらばらの物理位置になってしまうと、読み取りがとても非効率になってしまいます。このようにブロックが連続でなくなってしまうことをフラグメントといいます。

 

サイズの大きなファイルが多数存在するディレクトリを別の場所にコピーする場合、以下のような処理が行われます。

 

1. 空のディレクトリを作成する

2. ディレクトリ配下の一つ一つのファイルについて以下を繰り返す

2-1 ディレクトリにファイルのエントリを登録する

2-2 ファイルのデータ本体をコピーする

 

ディレクトリは、最初に空の状態で作成されますが、2-1 を行うことで少しずつ大きくなり、複数の物理ブロックにまたがって大きくなっていきます。一方、2-2 では、大きなサイズのファイルがコピーされることで、こちらも物理ブロックが使われていきます。2-1と 2-2 が交互に行われることで、物理ブロックが交互に割り当てられていくような状態になり、ディレクトリに割り当てられる物理ブロックがとびとびの状態になってしまうのです。

 

そのようなことにならないよう、/CREATE オプションは 2-2 を行わないことにより、ディレクトリだけに物理ブロックが割り当てるようにすることで、ブロックが不連続になることを防止します。ファイルのデータはコピーされていませんので、/CREATE が終わったら、今度は本来のコピーを実行すればコピーは完了です。

 

当然のことながら、/CREATE は「初回コピー」(コピー先が存在しない状態からのコピー)の時に意味のあるオプションです。特に効果が大きいと考えられるのは、コピー先のハードディスクやパーティションを初期化し、空の状態から新たにコピーを行う場合になると思います。

先日ちょうど、バックアップドライブ用に大容量HDDを購入し、まっさらな状態から /CREATEを使ってコピーを行ったのですが、それまではバックアップのたびに湯沸かしポットのような音が鳴っていたのですが、音が聞こえないくらいの静音になりました! (…すみません、これ、実際には、HDDの性能向上によるほうが大きいと思いますので、個人的思い入れも含めた感想です。)

 

/CREATE オプションの使い方の例

使い方は簡単です。まず /CREATE を付けてコピーを実行し、次に、/CREATE を付けずにコピーを実行するだけです。以下に例を示します。

(1) robocopy N:\src Z:\dest /MIR /DCOPY:DAT /CREATE

(2) robocopy N:\src Z:\dest /MIR /DCOPY:DAT

(1) でディレクトリとサイズ0のファイルを作成します。この時、初回コピーでなければなりません。ディレクトリのみが作成されるので、ディレクトリの物理ブロックのフラグメントを防止します。

(2) で、本来のコピーを行います。ファイルのデータ部分がコピーされます。

 

まとめ

フラグメント防止による性能向上は、メカニカルなデバイスであるハードディスクの場合には性能に大きく影響すると思いますが、SSDなどの場合は、それほど効果は感じられないかもしれません。

しかし、/CREATE でコピーをしておくと、その後のファイルアクセスの性能にずっと影響するようですので、HDDのボリューム全体を別のHDDにコピーするときなどには結構有効なテクニックだと思います。チャンスがあれば、試してみてください。

 



【関連記事・関連コンテンツ】

 

コメントをお送りください
お名前:
コメント:
コメントの公開: