==============================
  snowcp
==============================

◆ 概要 ◆
snowcpはマルチスレッド対応のコピーツールです。次のような特徴があります。

・異なるHDD間では読み書きを並行して実行します。
・コピー先のファイルシステムがext4やXFSの場合、fallocateを使用してファイ
　ルの断片化を低減します。
・コピー先のファイルシステムがXFSの場合は、Direct I/Oを使用して書き込み
　ます。
・MD5ライブラリを用いてのベリファイが可能です。


◆ 開発環境 ◆
Ubuntu 12.04 64bit


◆ 動作条件 ◆
最近のディストリビューションであれば問題なく動作すると思います。
詳しくはソースコードを見て下さい。


◆ インストール方法 ◆
Ubuntuの場合はソフトウェアセンターかGDebiでインストールして下さい。
他のディストリビューションの場合はmakeした後、
snowcpを /usr/bin や /usr/local/bin にコピーして下さい。


◆ 使い方 ◆
引数無しでsnowcpコマンドを実行すると、オプションが表示されます。
（例：snowcp -h）
下記のページも参照してください。

オプション
http://sourceforge.jp/projects/snowcp/wiki/%E3%82%AA%E3%83%97%E3%82%B7%E3%83%A7%E3%83%B3

ReadMe
http://sourceforge.jp/projects/snowcp/wiki/ReadMe

今後の予定
http://sourceforge.jp/projects/snowcp/wiki/%E4%BB%8A%E5%BE%8C%E3%81%AE%E4%BA%88%E5%AE%9A


◆ 注意事項 ◆
このソフトは開発途中です。
一人で開発している上、バグ報告などもほとんど無いので、致命的なバグが多数
残っている可能性があります。万が一の場合を考慮して、極力ベリファイオプシ
ョンを付けて実行するようにして下さい。rsyncと併用するとより安全です。


◆ 仕様・既知のバグ ◆
拡張属性／ACL／スパースファイルには未対応です。

ネットワークを介したコピーは考慮していません。ファイルの読み込みにmmapを
使用しているため、コピー元がネットワーク上にあると速度が出ない可能性があ
ります。コピー先がネットワーク上にある場合は、問題ないはずです。

環境によっては、コピー速度がcpコマンドと大差ありません。

PATH_MAXを超えるファイルはコピーできません。

コピー先のファイルシステムがXFSの場合でも、ファイルサイズが小さい場合は
ダイレクトI/Oを使用しません（その方が速度が出るため）。

ダイレクトI/Oを使用した場合、コピー後に表示される総書き込み量(Write)が、
総読み込み量(Read)よりも多く表示されます。

ベリファイ時、コピー先がダイレクトI/Oに対応していない場合、md5sumコマン
ドを用いてベリファイを行います。この場合、ベリファイ対象のファイルがペー
ジキャッシュに乗っていると、ディスクI/Oが発生しません(つまり正常にベリフ
ァイできません)。NTFSはダイレクトI/Oに対応していません。

Ubuntu 11.10のext4にはバグがあるため、128MBを超えるファイルをコピーする
と必ず断片化します。それ未満のサイズの場合はfallocateの精度向上により、
高確率で断片化を抑えることが出来ます。

Ubuntu 12.04のext4はfallocateの精度が低いため、128MBを超えるファイルをコ
ピーすると、高確率で断片化します。それ以下のサイズの場合は比較的、断片化
を抑える事ができます。

ext4よりもXFSの方が断片化しにくいです。

◆ makeについて ◆
gccでコンパイルすることを想定しています。

GLibを使用しているため、関連ライブラリ(libglib2.0-dev、libgtk2.0-dev等)
をインストールしてからmakeしてください。


◆ 免責事項 ◆
当ソフトを利用した事によるいかなる損害も作者は一切の責任を負いません。

--------------------

◆ 連絡先 ◆
何かありましたらブログのコメント欄に書き込んで下さい。

Sickly Life はてな版
http://d.hatena.ne.jp/itiri/
