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

◆ 概要 ◆
snowcpはファイルやフォルダーをコピーするソフトです。
次のような特徴があります。

・コピー元とコピー先のドライブが異なる場合、ファイルの読み込みと書き込み
を並行して行います。

・コピー元のファイルシステムがダイレクトI/Oに対応している場合、キャッシ
ュを無視してファイルを読み込みます。

・コピー先のファイルシステムがXFSの場合は、ダイレクトI/Oを使用してファイ
ルを書き込みます。

・コピー先のファイルシステムがext4やXFSの場合、fallocateを使用してファイ
ルの断片化を低減します。

・MD5ライブラリを用いたベリファイ（コンペア）が可能です。


◆ 開発環境 ◆
Ubuntu 12.10 32bit


◆ インストール方法 ◆
1. Ubuntuの場合はdebファイルをダブルクリックしてインストールして下さい。
   ソフトウェアセンターでインストールできない場合は、GDebiを使ってイン
   ストールして下さい。

2. Ubuntu以外のディストリビューションの場合は、makeした後、
   snowcpを /usr/bin や /usr/local/bin にコピーして下さい。


◆ コンパイル方法について ◆
gccでコンパイルすることを想定しています。
GLibを使用しているため、関連ライブラリをインストールしてください。
Ubuntuでmakeする場合、必要なパッケージは以下の二つです。

・build-essential
・libglib2.0-dev

これらをインストールした上でmakeコマンドを実行して下さい。


◆ 使い方 ◆
引数無しでsnowcpコマンドを実行するか、-hオプションを付けて実行すると、
オプションが表示されます。
（例：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


◆ 仕様・既知のバグ ◆
必ずしもcpコマンドより速いとは限りません。

拡張属性／ACL／スパースファイルには未対応です。

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

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

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

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

コピー先がgvfsでマウントしたWindowsの共有フォルダの場合、ベリファイ中に
snowcpが反応しなくなり、Ctrl + Cで終了する事すら出来なくなる場合があるの
で、ベリファイオプションは使用しないか、使用する場合は -r 1 としてコピー
直後にベリファイするようにして下さい。反応しなくなった際にベリファイ中だ
ったファイルは、Windows側でもUbuntu側でも、アンマウントや再起動するまで
削除できないので注意してください。

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

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


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


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


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

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