« BunBackup 英語版 Ver.3.21b1 公開 | トップページ | 高速ファイルコピーベンチマーク »

2009/03/16

高速ファイルコピー

次のバージョンを検討していますが、アンケートで「FastCopyのような高速ファイルコピー」とう要望がありましたので、これについてユーザーさんのご意見を聞いてみようかと思い、ここに書いてみます。

ファイルコピーを高速化する方法はいくつかあると思いますが、一般的な方法としては以下の二つがあります。
  • 大容量バッファを使用し、一度に読み書きする容量を増やす(大容量バッファコピー)
  • ファイルを読むスレッドと書くスレッドを別々にして効率よくコピーする(マルチスレッドコピー)
実は何年か前にBunBackupにこれらの機能を実装したことがあります。(この機能は公開していません)
高速ファイルコピーは確かにコピーにかかる時間を短縮できます。
ただ、環境によってはそれほど速くならないのです。

大容量バッファコピーは、同じドライブ内のコピーであれば効果的なのですが、異なるドライブへのコピーはそれほど速くなりません。
マルチスレッドコピーは、コピー元とコピー先のアクセス速度が同じで、それぞれが完全に独立して動作することができれば、理論的には半分の時間でコピーできるはずです。しかし、実際には完全に独立して動作することはできませんので、時間が半分になる訳ではありません。
以前行った測定では、異なるドライブ間では1~3割ほどの時間を短縮できることがわかりました。

環境によりますが、差分バックアップの場合、初回のバックアップを除くとコピー時間の占める割合はそれほど多くはありません。
差分バックアップは以下の処理をします。
  1. バックアップ元にあるファイルの情報を取得する
  2. バックアップ先にあるファイルの情報を取得する
  3. バックアップ元と先のファイルを比較し、コピーするファイルを抽出する
  4. ファイルをコピーする

このように、コピーだけでなく1~3の処理にも時間がかかります。つまりコピー時間だけを短縮しても全体的にはそれほど短縮できない可能性があります。

それでも、時間が短縮できるのならその機能が欲しいという方もいらっしゃるかもしれません。
しかしこれにはデメリットもあります。

一つは、環境によっては高速ファイルコピーの方が遅くなるということです。
OSが用意しているファイルコピーはそれほど効率が悪くありません。そのため条件によっては高速ファイルコピーの方が遅くなるのです。たとえば小さなファイルが大量にある場合は通常のコピーの方が速い場合があります。

もう一つは、コピーの処理が複雑になるということです。
実はマルチスレッドコピー自体は複雑ではありません。問題は何らかの理由によりコピーできない場合、そのエラー処理が複雑になるということです。処理が複雑になるということは不具合が発生する確率が高くなるということを意味します。

このようにメリットとデメリットを考え、結果的に高速ファイルコピー機能の公開は見送りました。

ただ、最近少し思うところがありました。
最近ユーザーさんの環境をお聞きしていると、一度に扱うファイルの容量が増えているように感じます。
ユーザーが意識せずに大きなファイルを扱っている場合もあるようです。たとえば、メーラーのファイルは人によっては数GBになっています。

このようなことから、ユーザーさんのご意見を聞いて、高速ファイルコピー機能を再考してみることにしました。
まず高速ファイルコピーすることで、どの程度時間が短縮できるかを把握するために、改めてベンチマークを取ってみました。
ついでに、他の高速ファイルコピーソフト、FastCopy、Fire File Copy、TeraCopyと比較してみました

次のブログに続きます。

|

« BunBackup 英語版 Ver.3.21b1 公開 | トップページ | 高速ファイルコピーベンチマーク »

トラックバック


この記事へのトラックバック一覧です: 高速ファイルコピー:

« BunBackup 英語版 Ver.3.21b1 公開 | トップページ | 高速ファイルコピーベンチマーク »