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

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

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

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

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

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

・MD5ライブラリを用いたベリファイ（コンペア）機能を搭載しています。


◆ 開発環境 ◆
Ubuntu 13.04 32bit


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

2. Ubuntu以外のディストリビューションの場合はmakeコマンドを実行してコンパイルし
   た後、make installを実行してください。


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


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


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


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

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