2007/08/08 H.Shirouzu (白水啓章)
Index
1. 概要
Windows系最速(?) のファイルコピー&削除ツールです。
NT系OS の場合、UNICODE でしか表現できないファイル名や
MAX_PATH(260文字) を越えた位置のファイルもコピー(&削除)できます。
自動的に、コピー元とコピー先が、同一の物理HDD or 別HDD かを判定
した後、以下の動作を行います。
別HDD間 | マルチスレッドで、読み込みと書き込みを並列に行う |
同一HDD間 | コピー元から(バッファが一杯になるまで)連続
読み込み後、コピー先に連続して書き込む |
Read/Write も、OS のキャッシュを全く使わないため、他のプロセス
(アプリケーション)が重くなりにくくなっています。
可能な限り大きな単位で Read/Write するため、デバイスの限界
に近いパフォーマンスが出ます。
Include/Exclude フィルタ(UNIXワイルドカード形式)が指定可能です。
MFC 等のフレームワークを使わず、Win32API だけで作っています
ので、軽量&コンパクト&軽快に動作します。
全ソースコードは BSD ライセンスで公開していますので、VC++ 等
をお持ちであれば、ご自由にカスタマイズしての利用も可能です。
2. ライセンス&免責
Copyright 2004-2007 SHIROUZU Hiroaki All rights reserved.
ソースコード形式であれバイナリ形式であれ、変更の有無に関わらず、以下の条件を満たす限りにおいて、再配布および使用を許可します:
1. ソースコード形式で再配布する場合、上記著作権表示、本条件書、および下記免責表示を必ず含めてください。
2. バイナリ形式で再配布する場合、上記著作権表示、本条件書、および下記免責表示を、配布物とともに提供される文書及び他の資料に必ず含めてください。
SHIROUZU Hiroaki および貢献者は、本ソフトウェアの使用/利用によるいかなる損失に対しても、責任を負いません。
3. 動作環境
Windows 98/Me/NT/2000/XP/2003/Vista
(MFCXX.dll は必要ありません)
4. インストール・アンインストール
インストール
setup.exe を実行して、任意のディレクトリにインストールしてください。
(インストールディレクトリへのコピーと、ショートカットの作成を行います)
USB メモリ等に格納して使用する場合は、fastcopy.exe, fastcopy.chm のみをコピーしてお使いください。(この場合、シェル拡張は使えません)
アンインストール
インストールディレクトリの setup.exe を使ってアンインストールすることができます。
(ショートカットの削除とシェル拡張の解除を行います)
なお、シェル拡張を行っていた場合、完全な削除は OS再起動後になります。
5. 使用法&画面説明
ウィンドウの最小化で、タスクトレイに格納します。
(さらに、コピー動作中は、アイコンが回転します)
画面説明は、以下の通りです。
Source / DestDir
Source(コピー元) と DestDir(コピー先ディレクトリ) を指定します。
(デフォルトでは、過去10世代分記憶します)
Source を複数指定(ドラッグ&ドロップ可)する場合は、セミコロンで区切ります。
(なお、セミコロンを含むパス名は、""で括って指定します)
Source へのドラッグ&ドロップ時に CTLキーを押している場合、現在の Source 内容に追加する形になります。(押していない場合は、現在の Source 内容はクリアされます)
また、DestDir 入力欄への(ディレクトリの)ドロップも可能です。
DestDir 指定の末尾に '\' があるかどうかによる挙動の違い
DestDir 指定の末尾に '\' がある、または Source 指定が複数の場合
Source ディレクトリ自体を含めて、DestDir 配下にコピーします。
(DestDir\SourceDir\SourceDirの中身)
DestDir 指定の末尾に '\' がない、かつ Source 指定が1つだけの場合
Source ディレクトリ自体はコピーせず、Source ディレクトリ配下の内容を
DestDir 配下にコピーします。
(DestDir\SourceDirの中身)
動作モード
モード | 動作内容 |
---|
差分(上書きなし) |
同じファイル名がある場合、コピーしません。 |
差分(サイズ・日付) |
同じファイル名がある場合、サイズもしくは日付が違う場合のみ、コピーします。(デフォルト) |
差分(最新日付) |
同じファイル名がある場合、日付が新しい場合のみ、コピーします。 |
コピー(全上書き) |
常に上書きコピーします。 |
同期(サイズ・日付) |
同じファイル名がある場合、サイズもしくは日付が違う場合のみ、コピーします。
さらにコピー元に存在しない、コピー先ファイル(&ディレクトリ)をすべて強制削除します。 |
移動(全上書き) |
上書きコピーした上で、コピー元を全削除します。 |
全削除 |
指定されたファイル(&ディレクトリ)を全て強制削除(=読み取り専用属性がついたファイルも属性をクリアした後、削除)します。 |
ボタン&オプション指定
実行 |
コピー動作を実行します。実行中は、中断...ボタンに変化します。 (なお、CTLキーを押しながら、実行を押すと、ソース一覧が表示された確認ダイアログが出てきます) |
リストアップ |
コピー&削除される(予定の)ファイルを、リストアップして表示します。頭に '+' は作成・更新され、'-' は削除されます。 |
Buffer 指定 |
Read/Write に使う、バッファサイズを MB 単位で指定します。 |
速度コントロール |
最大(Full Speed)、自動速度制限(Auto Slow)(*1)、速度指定(90%〜10%)、停止(Suspend) を指定することができます。重いと感じる場合は「自動速度制限」を試すと良いでしょう(マウスや最前面ウィンドウの変化を検知すると、一定時間、遅くします)。また「最大」以外の場合は、プロセス優先度クラスを「低」に落とします。(ジョブ管理での歩像項目対象にはなりません) |
エラー時継続 |
Read/Write/Delete等で、エラーが発生しても、中断せず、可能な限り動作を続けます。
(ただし、エラー表示欄やエラーログには残ります) |
完了時間予測 |
コピー開始前に、コピー元の総ファイル数・総ファイルサイズを調べることで、完了時間を予測します。
(なお、削除モードでの予測はできません。また、移動モードの場合、削除時間は予測に含んでいません) |
Top |
常に最前面に表示します。 |
直ちに開始 |
他の FastCopy が実行中の場合に、その完了を待つことなく、直ちに実行を開始します。(なお、他の FastCopy がコピー・移動中でない場合、このボタンは現れません) |
「?」 |
ヘルプを表示します。 |
(*1)FastCopy がアクティブでない状態でマウス移動を検出すると速度制限します。I/O 動作の合間にウェイトを入れたり、最大I/Oサイズを1MBに低下させることで、動作速度を制限します。なお、動作内容は、将来、変更される可能性があります
ACL属性 |
NTFS のアクセスコントロールリスト(ACL)をコピーします |
副次Stream |
NTFS の副次ストリーム(Alternate Stream)をコピーします |
復元無効化(上書き後に削除) |
削除する前に、対象ファイルをリネームした後、ランダムデータで上書きすることで、削除ファイルの復元を実質的に無効化します。なお、副次ストリームの上書きは行いません。設定で「NSA 方式」を選択していた場合は、2回ランダムなデータで上書きした後、最後に 0 で上書きします。(なお、復元できないという保証はありませんのでご注意) |
Filter |
Include/Exclude フィルタの有効/無効を指定します。なお、移動モードでは、フィルタ指定は無視されます。 |
Include |
指定文字列(UNIXワイルドカード形式可)にマッチするファイルのみをコピー対象にします。複数指定する場合は、セミコロンで区切ります。ディレクトリを指定する場合は、文字列の末尾に '\' を付与します。(例: *.txt; My Folder[0-9]\) ファイルまたはディレクトリに対して、それぞれ明示的な指定がない場合は、* もしくは *\ を指定したものと見なします。 なお、削除モード+ファイルに対する Include指定をした場合、ディレクトリは削除されません。 |
Exclude |
Include の反対で、マッチするファイル・ディレクトリを除外します。 |
Include / Exclude フィルタ指定で使用可能なワイルドカード書式
* | 0文字以上の任意の文字 |
? | 1文字の任意の文字 |
[abc] | abc のどれか 1文字 |
[!abc] | abc のどれか 1文字以外。'!' の代わりに '^' でも可 |
[a-z] | a-z までの任意の1文字 |
\ | エスケープ文字(なお、末尾の \ だけはディレクトリを表します) |
(注意:将来的に、フィルタ指定形式は大幅に変更されるかもしれません)
ジョブ管理 → ジョブ追加・削除
メインウィンドウの記述内容を、ジョブという単位で、保存&呼び出しできるようにします。
追加・更新 |
メインウィンドウ内容(Source/DestDir, コマンドモード, フィルタ指定、バッファ指定、エラー時継続オプション、完了時間予測、自動/同一/別HDDモード)にジョブ名を付けて保存・更新します。 |
削除 |
選択したジョブを削除します。 |
設定 → 一般設定
FastCopy の一般設定(各種デフォルト値、I/Oパラメータ、ログ記録等)を行います。
設定 → シェル拡張設定
Explorer の右クリックメニューに、FastCopy のコピー・削除メニューを登録/解除します。
設定 → 自動/同一/別HDDモード
6. コマンドラインモード
基本的な書式は、以下の通りです。
fastcopy.exe [/オプション類] file1 file2 ... [/to=dest_dir]
(なお、GUI モードと違い、区切り文字は空白文字になります。従い、空白文字を含むパス名は、"" で括って指定してください。)
指定可能なオプションは、以下の通りです。
(なお、'=' の前後には空白を入れないで下さい)
/cmd=(noexist_only|diff|update|sync|force_copy|move|delete) ... 基本動作指定。
(cmd 指定省略時は diff モード。delete 指定時、/to=dest_dir 指定不要)
noexist_only | 差分(上書きなし) |
diff | 差分(サイズ・日付) |
update | 差分(最新日付) |
force_copy | コピー(全上書き) |
sync | 同期(サイズ・日付) |
move | 移動(全上書き) |
delete | 全削除 |
/auto_close ... コピー終了後、自動的に終了します
/force_close ... コピー終了後、エラーが発生していた場合も、強制的に終了します
/open_window ... タスクトレイに格納しません(直ちに実行開始しない場合は指定不要)
/estimate ... コピー完了時間予測を行います
/no_exec ... パラメータをメインウィンドウにセットしますが、実行はしません
/no_confirm_del ... /delete 時に、動作開始の問い合わせをしません
/error_stop ... エラー発生時に動作を中断します(/error_stop=FALSE で抑止)
/bufsize=N(MB) ... バッファサイズを MB 単位で指定します
/log ... ログファイル(fastcopy.log) にログを出力します(/log=FALSE で抑止)
/skip_empty_dir ... フィルタ指定時、空ディレクトリをコピーしません(/skip_empty_dir=FALSE で抑止)
/job=ジョブ名 ... 事前に登録してあるジョブを指定します
/force_start ... 他の FastCopy がコピー実行中の場合も直ちに実行します(/force_start=FALSE で抑止)
/disk_mode=(auto|same|diff) ...
自動/同一/別HDDモードを指定します。(デフォルト: auto)
/speed=(full|autoslow|9-1(90%-10%)|suspend) ... 速度コントロールを行います。
/include="..." ... Include フィルタを指定します(
詳細)
/exclude="..." ... Exclude フィルタを指定します(
詳細)
/acl ... アクセスコントロールリスト(ACL)をコピーします(NTFSのみ有効)(/acl=FALSE で抑止)
/stream ... 副次ストリームをコピーします(NTFSのみ有効)(/stream=FALSE で抑止)
/overwrite_del ... 削除モード時に、ファイルを削除する前に上書き&リネームして、復元を無効にします(/overwrite_del=FALSE で抑止)
(上記のオプション類の一部は、近い将来、仕様変更するかもしれません)
例) C:\test 配下を D:\Backup Folder に差分コピーする場合
fastcopy.exe /cmd=diff C:\test /to="D:\Backup Folder\"
7. 注意(危険なところ)
コピー先ファイルは、動作モードに応じて、問い合わせなしに、強制的に上書きすることがあります。
同期モードでは、状況に応じて、コピー先のファイル&ディレクトリを強制削除します。
削除モードでは、ファイル&ディレクトリを常に強制削除します。
(強制削除=読み取り専用属性がついている場合、それをクリアしてから削除)
万一バグがあれば、悲惨な結果になる可能性があります。
(「
2. ライセンス&免責」を熟読のこと)
8. 最新版&連絡先
9. その他
設定は、fastcopy.ini に保存しています。
他のアプリケーション等への組み込みについて
高速コピーのコア部分(fastcopy.cpp/h)は、GUI 部分から独立させて作ってあります。
BSDライセンスに基づいて、ご自由にお使いください。
万一、異常終了(例外)した場合、fastcopy_exception.log が生成されます。
(作者に送ると、品質向上のための手がかりになります)
10. ToDo
ネットワーク対応(2つのPCに入れた fastcopy 同士で高速転送)
コピー動作ログ
11. 履歴
Version | 説明 |
v1.63 | include/excludeフィルタの上限文字数を62->2048文字に変更。その他、リファイン |
v1.62 | v1.60,v1.61で、コピー先ファイル作成エラーが発生する場合があったのを修正 |
v1.61 | v1.60で、src フィールドの入力が8192文字を超えていた場合に、実行時に 8192文字に切り詰められてしまう問題を修正 |
v1.60 | NTFS アクセスコントロールリスト(ACL)、副次ストリームのサポート。削除時の復元無効化オプション(単純上書き&NSA方式)追加。自動速度制限をスライダコントロールに変更(フルスピードから完全停止まで、12段階のコントロール)。自動速度制限時にプロセス優先度クラスを調整。 |
v1.55 | タスクトレイ実行時の問い合わせダイアログが左上に出ていたのを修正(v1.53以降) |
v1.54 | NT4.0で動作するように修正 |
v1.53 | コマンドラインでタスクトレイ実行する場合は、フォーカスを奪わないように修正。マルチモニタ使用時に、マウスの存在するモニタ側にウィンドウを出すように変更。/error_stopが効いていなかったのを修正(v1.52のみ)。 |
v1.52 | 自動速度制限機能の追加。一部の UDFファイルシステムで、同一タイムスタンプ判定が必要以上に厳しくなっていたのを修正。コマンドラインオプションの抑止指定(=FALSE)が有効に働いていなかったのを修正 |
v1.51 | 完了時間予測機能利用時に、異なる複数のフォルダをsrcに指定すると落ちることがあったのを修正 |
v1.50 | 同期モードでのフィルタ指定を可能に。その他、リファイン |
v1.40 | ジョブ管理機能の追加。処理内容の事前リストアップ機能の追加。多重実行制御オプションの追加。フィルタ指定時に、空フォルダを作成しないオプションを追加。自動/同一/別HDDモード指定の追加。メインウィンドウのリサイズを可能に。APIエラーの説明表示。その他、リファイン |
v1.32 | コマンドライン時に Include/Excludeフィルタが無効になっていたのを修正。その他、リファイン |
v1.31 | Include/Excludeフィルタで、多数の指定をした場合に、実行直後に落ちることがあったのを修正 |
v1.30 | Include/Excludeフィルタ機能追加。同一ディレクトリ内でドラッグ&ドロップした場合、複製を作成可能に。Source選択でファイル選択ダイアログ追加。さらに若干の高速化。シェル経由起動+キャンセルした場合、削除モード以外は自動終了しないように。その他リファイン。 |
v1.21 | 一部環境でシェル拡張メニューが出ない現象(v1.20でエンバグ)を修正 |
v1.20 | コピー完了時間予測機能追加。シェル拡張で、複数ファイル選択+開くが機能しないことがあったのを修正。その他リファイン |
v1.12 | シェル拡張のサブメニュー化オプション追加。シェル経由で大量のファイルを選択した場合に固まることがあったのを修正(v1.10-1.11 のみ)。ネットワークプレースでのシェル拡張の挙動を変更。その他リファイン |
v1.11 | 一部環境で、実行が開始できない問題を修正 |
v1.10 | メインウィンドウのUNICODE化(UNICODEファイル名のドラッグ&ドロップ等に対応)。セミコロンを含むパス名のファイルをドラッグ&ドロップした場合、パス名を""で囲むように変更。シェル起動実行時の確認ダイアログを出さないモード追加。シェル拡張有効時に、スタートメニュー配下のディレクトリが開けなくなることがあったのを修正。その他リファイン。 |
v1.00 | 移動モードのサポート。シェル拡張機能追加。最前面オプション追加。エラーログ詳細化。/force_close オプション追加。メインメニュー&設定ダイアログ追加。英語OS対応。その他リファイン。 |
v0.99 | 同一HDD内の別ドライブレターを別HDDモードと見なすことがあった(v0.90以降でエンバグ)のを修正。DestDir へのドラッグ&ドロップを可能に。表示関係の修正、その他リファイン。 |
v0.98 | 削除中のキャンセルが効かないことがあったのを修正 |
v0.97 | エラーログ表示追加。ログファイルオプション追加。ドラッグ&ドロップ時の挙動を変更 |
v0.96 | 高速削除モード追加。コマンドラインモードでのタスクトレイ格納条件を変更 |
v0.95 | ヘルプが開かないことがあったのを修正 |
v0.94 | 設定保存先をレジストリから ini ファイルに変更。DestDir にルートを指定すると落ちることがあったのを修正 |
v0.93 | デバッグ用ルーチンが残っていたのを削除 |
v0.92 | オプション設定を保存するようにした。コピー先ディレクトリが空の場合に落ちることがあったのを修正 |
v0.91 | 内部リファイン。 |
v0.90 | コピー元の複数指定およびドラッグ&ドロップ指定を可能に。
コマンドライン時、タスクトレイモードをデフォルトに。
まれに余分に更新が発生する場合があったのを修正。 |
v0.88 | コマンドラインモード、タスクトレイ格納、
トレイ内アイコンアクション(?)、手抜きヘルプの追加。 |
v0.87 | 履歴の保存&各種設定保存。 |
v0.86 | 同期モードの追加。 |
v0.85 | ファイル名比較で大文字小文字の区別をしないよう修正。 |
v0.84 | FAT/Sambaでの同一日付判定の修正。その他修正。 |
v0.83 | Update(上書きは、日付が新しいファイルのみ)モード追加。 |
v0.82 | src にワイルドカード指定が使えなくなっていたのを修正。 |
v0.81 | src/dstディレクトリエントリ取得を並列動作(別HDDモード)。 |
v0.80 | 差分コピーモード追加。 |
v0.70 | 同一HDD、別HDD モードの自動判定。 |
v0.66 | 一部バグフィクス。 |
v0.65 | ドライブタイプで動作を変化。エラー処理追加。 |
v0.64 | 稀にデッドロックを起こす可能性を発見したので修正。 |
v0.63 | Cancel ボタンの動作を「R/W Thread を Suspend した上
で確認」に変更。ファイル名表示はワードラップなしに。 |
v0.62 | NT系で物理メモリロックをデフォルトにするのをやめる。 |
v0.61 | ステータス領域を EDIT_BOX に変更(コピー可能に)。 |
v0.60 | 98系で動作するように修正。エラー無視チェック追加。 |
v0.50 | α版ファーストリリース。 (2004/09/27) |