Macで大量ファイルコピー
Macで大量ファイルコピーはヤバい
MacのFinderで大きなファイルを大量にコピーや移動を行っていると、処理に大変時間がかかったり、途中で処理が失敗していて全部のファイルがちゃんとコピーされなかったりということはありませんか?
Finderでは例えば10個のファイルを選択してコピーや移動を行うと、一斉に処理が始まります。今時のオペレーティングシステムですから処理自体はマルチスレッドで行われますし、実際CPUも2コアだったり4コアだったりするので並行処理自体は普通のことですが、問題は同時にいくつものファイル処理が行われる事で、過剰なディスクシークが発生することです。これによりディスク処理が遅くなり、更にディク処理が並行している各処理のボトルネックとなり全体の処理時間がシーケンシャルに実行したときより長くなることになります。また遅くなったそれぞれの処理タスクを管理する、OSのリソースも食っていく事になります。Windowsでも状況は似たようなもんでしょう。
このような状況に対処する方法は簡単です。 処理をキューに溜め込んで並列ではなくシーケンスに実行することで過剰なディスクシークを防ぐ事が出来ます。また、処理を一本化することで処理の要するリソースも集約できるので、メモリーをファイルを読み込むバッファに思い切って割り当てる事が出来ます。これによって更に処理時間を短縮する事が可能となります。
こういった処理をやってくれるアプリケーションはわたしの手元には3つあります。UltraCopier、CopyQueue、PathFinderです。
UltraCopier
UltraCopierはマルチプラットフォームのアプリで、 WindowsやLinux版もあります。システムのデフォルトのコピーや移動と置き換えることができるようですが、わたしの環境ではうまく行きませんでした。この場合タスクバーの常駐するアイコンからメニューで処理を選択して起動する事になります。デフォルトではファイルが選択できずフォルダが選択対象なのでちょっと戸惑いますが、オプションで変更することができます。
コピーの最中でリストから順番を変えたり、不要なファイルを削除したりと言った処理ができるのがうれしいです。たまに権限エラーなどで処理が止まる事がありますが、UltraCopierのよいところはエラーに対する「無視する」と設定しておけば処理を継続してくれる点です。
難点はマルチプラットフォームなので、UIがMacらしくないという点です。また、ファイル選択時など Command-A(全選択)などMacのショートカットが効かないのもツラいです。
CopyQueue
CopyQueueはMac専用のアプリで、AppStoreから購入可能です。
こちらはMacネイティブなので、Macらしいインターフェイスでドラッグ&ドロップも可能です。処理ロジックや帯域の制限をかけれる点は他のアプリと同様ですが、タイマー起動をかけたりコピー処理を行ったファイルリストを保管できる点が独自な点です。
個人的には、コピー処理などよくやることなので通常アプリでなくUltraCopierのように常駐してアクセスしやすくするような工夫は欲しかったです。またインターフェイスがMacライクで美しいとはいえ、特に工夫がある訳ではないので基本的なインターフェイスのコンセプトはUltraCopierと変わりません。もう少し使いやすい工夫が欲しかったです。
わたしが気に入らないのは、処理リストの保管先を毎回終了時に聞いてくる事です。わたしの場合ほとんどの処理はワンタイムでその場限りです。保管したい処理なんてほとんどないのにも関わらず毎回聞かれるのにはうんざりします。
PathFinder
PathFinderは、言わずと知れた昔からあるFinderのより良い代用品です。高機能すぎてすべてを紹介しきれませんが、実は PathFinderにも同様の機能が組み込まれています。
PathFinderのツールバーをカスタマイズすると、「進行状況」の表示ボタンを追加することができます。ファイルのコピーや移動処理をした際、このボタンを押すと進行状況が表示されます。デフォルトの状態ではFinderと同様並行処理を行ってるのがわかります。ここで、進行状況のダイアログにある「ファイル操作を待ち行列に入れる」をチェックすると、以降の処理はシーケンシャルの行われるようになります。 この選択は保存されるので、次回以降も同じ処理方法が選択されます。
PathFinderが良いところは、元々優れたファイラーなので処理対象ファイルの選択やコピー先の選択が非常に簡単に出来ることです。特に2ペインにして一方をコピー元、一方をコピー先にして、処理したいファイルをドラッグすると非常に簡単で直感です。このように、特別意識する事なく「待ち行列」の恩恵を受ける事が出来るのが最大のポイントです。
ベンチマーク
9個のファイル、総バイト数23.5GBのエロ動画を含む動画ファイルをMacBook Airの内蔵SSDからUSBで接続した外付けのHDDにコピーしてみました。
- 446秒 UltraCopier
- 458秒 PathFinder
- 460秒 Finder
- 461秒 CopyQueue
CopyQueueにとってはなんとも不名誉な結果ですが、まぁ、一方がSSDだったりすると対して変わらんてことですな。