Windowsで高速にファイルをコピーする方法

Windowsで高速にファイルをコピーする方法。

Windows環境でファイルをコピーする場合、ファイル数が少ないならドラッグ&ドロップするなど、GUI画面でコピーすることが大半ですが、ファイル数多い場合はGUI操作よりもrobocopyコマンドを使った方や専用のツールを使った方が高速にコピーできます。

そこでここでは、Windowsのrobocopyコマンドや専用のコピーツールを使って高速にファイルコピーする方法を解説します。

robocopyコマンド使った方法

基本的な使い方

Windowsの標準搭載機能で高速にファイルをコピーしたい場合はrobocopyコマンドを使った方法がおすすめです。robocopyコマンドの基本的な使い方は、コピー元とコピー先とファイルを指定してコマンドを実行します。

> robocopy コピー元 コピー先 [ファイル [ファイル]...] [オプション]

高速化に有効なオプション

robocopyコマンドにはたくさんのオプションが用意されており、ファイルコピーを高速化するにに役立つオプションがいくつかあります。

/Z オプション

「/z」オプションを利用すると、ファイルコピーの途中で意図せず中断された場合、コピーが再開されたときに、コピーの途中から再開することができます。

大容量ファイルを細い回線でコピーするときに有効ですが、パフォーマンスは若干落ちるようです。

/MT: オプション

「/MT」オプションを利用すると、ファイルをコピーするときのスレッド数を増やすことができ、使い方は「/MT:<スレッド数>」と指定します。

デフォルトは「8」スレッドで実行されており、1~128の値を任意で指定することができますが、クライアントPC環境ではスレッド数を変えても、効果はあまりないようです。

クライアントPC環境でコピー速度を上げたい場合は、後述しているrobocopyコマンドを並列実行するほうが効果は高いでしょう。

/IPG: オプション

「/IPG」オプションを利用すると、転送パケットごとに指定した間隔でウェイトを掛けることができ、ファイルコピーに使用されるネットワーク帯域を制限したいときに有効です。

使い方は「/IPG:<ミリ秒>」と指定します。

/COPY: オプション

Windowsの標準ファイルシステムであるNTFS上のファイルには、データ以外にもさまざまな情報が設定されており、それらの情報をコピーするかを「/COPY」オプションで指定でき、不要な情報をコピーしないようにすることで、若干の高速化が期待できます。

コピーするファイルの情報を指定するときは「/COPY」オプションに続けてフラグを指定し、デフォルトでは「データ」「属性」「タイムスタンプ」がコピーされま( /COPY:DAT)、すべての情報をコピーしたい場合は「/COPY:DATSOU」とするか「/COPYALL」を指定します。

フラグ説明
Dデータ
A属性
Tタイムスタンプ
Sセキュリティ(NTFS ACL)
O所有者情報
U監査情報

/DCOPY: オプション

Windowsの標準ファイルシステムであるNTFS上のフォルダーには、データ以外にもさまざまな情報が設定されており、それらの情報をコピーするかを「/DCOPY」オプションで指定でき、、不要な情報をコピーしないようにすることで、若干の高速化が期待できます。

コピーするフォルダーの情報を指定するときは「/DCOPY」オプションに続けてフラグを指定し、デフォルトでは「データ」「属性」がコピーされます。( /DCOPY:DA)

フラグ説明
Dデータ
A属性
Tタイムスタンプ

/COMPRESS オプション

圧縮効果の出やすいテキスト形式ファイルなどをコピーするときに「/COMPRESS」オプションを使用すれば、場合によってはコピー時間を数分の一まで短縮できます。

/FFT

フォルダーを同期するときなどは、robocopyコマンドはファイルの差異を更新時刻やファイルサイズで判断していますが、NASなどの他のファイルシステムとの間でファイルをコピーする場合に、同一ファイルであるにもかかわらず、更新時刻が一致しないという問題が発生する可能性があります。

そんなときは「/FFT」オプションを利用することで、2秒以内の誤差や夏時間の1時間の時差を無視して、時刻情報は一致していると見なすことができます。

Windows以外のNASなどとフォルダーを同期するときに指定しておけば、余計なコピー処理の発生を防ぐことができます。

/R: /W:

robocopyコマンドでは、デフォルトでファイルのコピーに失敗すると再試行してくれ、デフォルトの再試行回数は「1,000,000回」で、再試行と再試行の間の待機時間は「30 秒」となっています。

ですが、再試行でコピーに成功することは稀なので、再試行回数は1回「/R:1」に設定し、待機時間は0秒「/W:0」に設定しておくことで、余計な再試行でコピーに時間がかかってしまうのを防げます。

/J

サイズが大きいファイルをコピーするときは「/J」オプションを利用することで、バッファーなしI/Oモードでコピーができ、高速化が期待できます。

/NP

robocopyコマンドでファイルをコピーすると、通常は画面に進捗が表示されますが「/NP」オプションを利用すると、画面に進捗が表示されなくなり、若干の高速化が期待できます。

コマンドの実行場所

コピー元とコピー先のマシンが異なり、ともにWindowsの場合は、robocopyコマンドはよりスペックの高いマシン上で実行したほうが高速にコピーできます。

また、スペックが同等の場合は、コピー先マシンでrobocopyコマンドを実行したほうが高速にコピーできるといわれています。

コマンドの並列実行

robocopyコマンドで高速コピーしたいときに、個人的に最も効果が高いと感じるのは、robocopyコマンドを並列実行する方法です。

特に、ディスクの読み書きが早いマシンを利用している場合、効果は高いでしょう。

コマンドプロンプトで並列実行する場合は、コマンドプロンプトを複数起動して、それぞれの画面でrobocopyコマンドを実行すれば並列実行できます。

また、バッチファイルでrobocopyコマンドを並列実行するには、それぞれのrobocopyコマンドの前に「start」コマンドを付加することで、robocopyコマンドを別プロセスとして実行でき、並列実行が可能です。

FastCopyを使った方法

FastCopyとは

Windowsで高速にファイルをコピーする方法。

FastCopy

「FastCopy」は、Windows環境向けのファイルのコピーツールとして10年以上の歴史を持つフリーソフト(個人・非営利での利用は無償、職場などで利用する場合は有償)です。

FastCopyの特徴としては、Windowsの標準機能より高速にファイルをコピーでき、軽快に動作する点が挙げられます。

操作方法も簡単で、基本はコピー元とコピー先を指定するだけでファイルのコピーができます。また、コマンドラインモードも搭載しており、日々のバックアップ処理や複数のコピー処理をバッチファイルなどから実行することができます。

基本的な使い方

インストール

以下の公式Webサイトのリンクからインストーラーをダウンロードして実行します。

FastCopy

Windowsで高速にファイルをコピーする方法。

インストーラーを実行すると、以下の画面が表示されるので任意のディレクトリを指定して「開始」ボタンをクリックし、インストールします。

Windowsで高速にファイルをコピーする方法。

インストール作業は、以上で完了です。

基本操作

操作はとてもカンタンで「Source」欄にコピー元ファイルやフォルダーを指定し、「DestDir」欄にコピー先フォルダーを指定して「実行」ボタンをクリックすれば、ファイルのコピーが開始されます。

また、コピー先に同名のファイルが存在した場合の処理をあらかじめ指定できて、上書きを禁止・ファイルの更新日時を基にした差分のみ・フォルダーの同期などが指定できます。

Windowsで高速にファイルをコピーする方法。

基本は、これぐらいの指定で問題ないと思いますが、上の画面をご覧いただくと分かるように、さらに細かい指定(転送スピード、除外設定、ファイル属性のコピーなど)も可能です。

なお、本ツールは、低スペックであってもコピー元マシン上で実行するほうがよさそうです。

コマンドラインモード

FastCopyはGUI画面での操作がわかりやすくて便利ですが、コピー元とコピー先の組み合わせが複数ある場合や、他の処理と組み合わせて実行したい場合では、コマンドラインモードが便利です。

コマンドを記述したバッチファイルなどを作成しておけば、コピー元とコピー先の組み合わせが複数ある場合や、他の処理と組み合わせての実行も簡単に行うことができます。

ここでは、コピー元フォルダーとコピー先フォルダーの内容を同期する場合のコマンド記述例を紹介します。

> fastcopy.exe /bufsize=512 /cmd=sync /speed=full /auto_close /no_confirm_del "D:source_dir" /to="\servernamedest_dir"
  • /bufsize=512 - バッファーサイズを増やすことで、ファイル転送の高速化を望めます。搭載メモリに余裕があれば/bufsize=1024とかでもいいと思われます。単位はMBです。
  • /cmd=sync - 動作モードを指定します。ここでは「同期」を指定しており、コピー元フォルダーと、コピー先フォルダーの内容を同一にします。
  • /speed=full - 転送速度を指定します。ここでは最速で転送したいので「full」を指定しています。
  • /auto_close - コピー終了後、自動的に終了するオプションです。バッチファイルなどで複数のfastcopyコマンドを実行する場合は必須のようです。
  • /no_confirm_del - ファイルの削除処理が発生した際に確認のメッセージを表示しないオプションです。

なお、ここで紹介した以外にもたくさんのオプションがあります。詳しくは以下の公式サイトをご覧ください。

FastCopy | Help

あとがき

大容量のファイルや大量のファイルを可能な限り高速にコピー/移動したいときには、robocopyコマンドを使った方法や、FastCopyなどの専用のコピーツールがおすすめです。ご活用あれ。