0. はじめに
FastCopy for Linux. 通称RapidCopyのマニュアルページです。以下の点に注意して読んでください。
移植元となったFastCopyV2.11のマニュアルをベースに作成されています。
1. 概要
Windows系最速(?) のファイルコピー&削除ツールのLinux移植版です。
Mac移植版であるRapidCopyProをベースとしています。
自動的に、コピー元とコピー先が、同一の物理HDD or 別HDD かを判定した後、以下の動作を行います。
別HDD間 | マルチスレッドで、読み込みと書き込みを並列に行う |
同一HDD間 | コピー元から(バッファが一杯になるまで)連続
読み込み後、コピー先に連続して書き込む |
Read/Write も、OS のキャッシュを使わないようにしているため、他のプロセス (アプリケーション)が重くなりにくくなっています。
Include/Exclude フィルタ(UNIXワイルドカード形式)が指定可能です。
Win32APIの置き換えに可能な限りシステムコールを使用している他、GUIに Qtフレームワークを使用しています。
CPU負荷を低減するxxHashベリファイやコピー結果のE-Mail送信機能等、オリジナル版に幾つかの機能を追加しています。
Fastcopyから追加、改善した機能の一覧については FastCopy v2.11からの仕様変更・追加機能一覧を参照してください。
ソースコードはBSDライセンスで公開しています。
2. ライセンス&免責
Copyright 2004-2012, SHIROUZU Hiroaki All rights reserved.
Copyright 2014-2018, Kengo Sawatsu All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY SHIROUZU Hiroaki and Kengo Sawatsu ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SHIROUZU Hiroaki OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
xxHash Library
Copyright (c) 2012-2014, Yann Collet
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or
other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Copyright (c) 2013 Raivis Strogonovs
Simple Smtp for Qt5 source repository : https://github.com/xcoder123/SimpleSmtp_SSL_QT5
http://morf.lv
Permission is hereby granted, free of charge,
to any person obtaining a copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense,and/or sell copies of the Software,
and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies
or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY,WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
QBlowfish is licensed under the MIT License
Copyright © 2012 Roopesh Chander
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject
to the following conditions: //時刻違いをエラーにしてた時代があるが、よく考えたら時刻違いですぐエラーにするのは
//色々まずいのでやめとく。
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
3. 動作環境
CentOS 7(x64)でコンパイル、動作確認を行っています。
コンパイルには以下のライブラリ、フレームワークのインストールが必要です。
Qt 5.4.2 以降
libacl-devel(ACL処理のため)
libbsd-devel
4. インストール・アンインストール
頑張ってコンパイルしてください:)
5. 使用方法&画面説明
画面説明は、以下の通りです。
コピー元 / コピー先
コピー元 / コピー先(フォルダのみ)をD&Dまたはファイルダイアログで指定します。
コピー元へのドラッグ&ドロップ時にCtrlキーを押したままドロップ操作をすると、 現在のコピー元パスにドラッグしてきたパスを追加します。(押していない場合は、現在のコピー元はクリアされます)
コピー先へのフォルダドロップも可能です。
なお、srcまたはdstにシンボリックリンクを直接指定することはできません。
(シンボリックリンクの扱いについてはシンボリックリンクを参照してください。
コピー先指定の末尾に'/'があるかどうかによる挙動の違い
コピー元指定が1フォルダのみで、コピー先指定の末尾に'/'がない場合
コピー元フォルダ自体をコピーせず、コピー元フォルダ配下の内容をコピー先フォルダ直下にコピーします。
(コピー先フォルダ/コピー元フォルダの中身)
それ以外の場合
コピー元フォルダ自体を作成後、作成したフォルダ直下にコピー元フォルダの中身をコピーします。
(コピー先フォルダ/コピー元フォルダ/コピー元フォルダの中身)
動作モード
モード | 動作内容 |
---|
差分(上書きなし) |
同じファイル名がある場合、コピーしません。 |
差分(サイズ・日付) |
同じファイル名がある場合、サイズもしくは日付が違う場合のみ、コピーします。(デフォルト) |
差分(サイズ) |
同じファイル名がある場合、サイズが異なる場合のみ、コピーします。
LTFSモード時のみ選択できます。 |
差分(最新日付) |
同じファイル名がある場合、日付が新しい場合のみ、コピーします。 |
コピー(全上書き) |
常に上書きコピーします。 |
同期(サイズ・日付) |
同じファイル名がある場合、サイズもしくは日付が違う場合のみ、コピーします。
さらにコピー元に存在しない、コピー先ファイル(&ディレクトリ)をすべて強制削除します。 |
ベリファイ(サイズ) |
コピーを実行せず、ベリファイのみ実行します。
ベリファイ(サイズ)では以下の差異をエラーとして処理します。
ファイルサイズが異なる
コピー元に存在するがコピー先には存在しないファイルまたはディレクトリ
ファイルのベリファイ結果が不正
表示結果についてはログ機能を参照してください。
なお、シンボリックリンクに対するベリファイは設定に関係なく「シンボリックリンクが指すファイル実体」について比較します。
|
移動(全上書き) |
上書きコピーした上で、コピー元を全削除します。(一般設定にて、移動(サイズ・日付)に変更することができます)
|
全削除 |
指定されたファイル(&フォルダ)を全て削除します。 |
ボタン&オプション指定
実行 |
コピー動作を実行します。実行中は、中断...ボタンに変化します。
|
リストアップ |
コピー&削除される(予定の)ファイルを、リストアップして表示します。表示結果についてはログ機能を参考にしてください。 なお、Ctrlキーを押しながらリストアップを押す(ボタン名「リストアップ」→「リストアップ+V」)と、スキップ対象(ただしフィルタ除外は除く)のファイルペアについて、読み込み&ハッシュ値比較を行います)(*2) |
Buffer指定 |
Read/Write に使う、バッファサイズを MB 単位で指定します。 |
速度コントロール |
最大(Full Speed)、自動速度制限(Auto Slow)(*1)、速度指定(level9~level1)、停止(Suspend) を指定することができます。重いと感じる場合は「自動速度制限」を試すと良いでしょう(マウスや最前面ウィンドウの変化を検知すると、一定時間、遅くします)。また「最大」以外の場合は、プロセス優先度クラスを「アイドル」に落とします。(ジョブ管理での保存項目対象にはなりません) |
エラー時継続 |
Read/Write/Delete等で、エラーが発生しても、中断せず、可能な限り動作を続けます。
(ただし、エラー表示欄やエラーログには残ります) |
ベリファイ |
ハッシュ生成と突き合わせによる書き込みデータのベリファイを行います。
デフォルトではMD5でベリファイします。設定->一般設定->I/O設定で任意のハッシュアルゴリズムを選択可能です。
なお、具体的には、次のような比較を行います。
Read(コピー元) -> MD5(コピー元) -> Write(コピー先) -> Read(コピー先) -> MD5(コピー先) -> MD5比較(コピー元/コピー先)
(各ステージが、複数のファイルを跨ったパイプラインのように並列して処理されます)
|
完了時間予測 |
コピー開始前に、コピー元の総ファイル数・総ファイルサイズを調べることで、完了時間を予測します。
(なお、削除モードでの予測はできません。また、移動モードの場合、削除時間は予測に含んでいません) |
Top |
常に最前面に表示します。 |
直ちに開始 |
他のRapidCopyが実行中の場合に、その完了を待つことなく、直ちに実行を開始します。 (なお、他のRapidCopyがコピー・移動中でない場合、このボタンは現れません) |
「?」 |
ヘルプを表示します。 |
(*1)RapidCopyがアクティブでない状態でマウス移動を検出すると速度制限します。具体的には、I/O 動作の合間にウェイトを入れる、プロセス優先度を下げる、最大I/Oサイズを1MBに低下させる、等により動作速度を制限します。なお、動作内容は、将来、変更される可能性があります
(*2)リストアップ+VモードはWindows版FastCopyユーザ向けの後方互換機能です。RapidCopyではベリファイモードの利用を推奨します。
ACL |
アクセスコントロールリスト(ACL)をコピーします。 |
EA |
extended attribute(EA)をコピーします。
LinuxではACL情報はEAとして保存されるため、対象ファイルにACLが含まれる場合はACLもコピーします。 |
LTFS |
LTFSでマウントしたフォルダにアクセスする場合に指定します。
LTFSモードではEA,ACL属性,速度コントロールは強制無効となります。
LTFSモードではLTFS側の仕様により、差分判定に日付を利用するコピーモードは選択できません。
LTFSモードではLTFS禁則文字を検知した場合は自動的に'_'にファイル名を置換してコピーします。
その他、LTFSのサポート情報についてはRapidCopyサポート掲示板を参考にしてください。
|
復元無効化(上書き後に削除) |
削除する前に、対象ファイルをリネームした後、ランダムデータで上書きすることで、削除ファイルの復元を実質的に無効化します。なお、EAの上書きは行いません。設定で「NSA 方式」を選択していた場合は、2回ランダムなデータで上書きした後、最後に 0 で上書きします。(復元不可能かどうかの保証はできません)
| S_IRWXU
シンボリックリンク(ln -s)
モード | 動作内容 |
---|
差分・コピー |
デフォルトではシンボリックリンク自体をコピーします。
| 移動 |
常に、エイリアス・シンボリックリンク自体を移動します。 |
削除 |
常に、エイリアス・シンボリックリンク自体を削除します。 |
(*1):後述の /recreateオプション相当の動作が常に有効となります。
ハードリンク
設定ファイルにlinkdest=1を設定することでハードリンクを再現する事が可能です。
(実行時の TotalFiles: 表示が、"ファイル数(ディレクトリ数)" から "ファイル数/ハードリンク数(ディレクトリ数)" に変化します)
ハードリンク実体1万ファイルあたり、最大で10MB程度メモリを消費するので注意してください。(パス長に依存)。
なお、linkdest=1を設定した場合、 --recreate オプション相当の動作が常に有効になります。
ファイル →新しいウインドウを開く
別のRapidCopyプロセスを起動します。
内部処理の都合により、コピー動作中は実行できません
ファイル →バグ報告用レポートを生成
作者へのバグ報告用レポートを生成します。
ファイル生成先は$HOME/Desktop/YYYYMMDD-HHMMSS.zipです。
ジョブ管理 → シングルジョブ管理
メインウィンドウの記述内容を、ジョブという単位で、保存&呼び出しできるようにします。
追加・更新 |
メインウィンドウ内容(Source/DestDir, コマンドモード, フィルタ指定、バッファ指定、エラー時継続オプション、完了時間予測、自動/同一/別HDDモード)にジョブ名を付けて保存・更新します。 |
削除 |
選択したジョブを削除します。 |
ジョブ管理 -> ジョブリストモード
ジョブの集合をジョブリストとして保存、呼び出し、実行することができます。
ジョブリスト内のジョブの実行順は任意の順序に変更することができます。
ジョブリスト管理
ジョブリストの呼び出し、保存、削除ができます。
ジョブリスト作成/保存 |
現在のジョブリストの内容を作成/保存します。 |
ジョブリスト削除 |
現在のジョブリストを削除します。
削除時、ジョブリスト内のジョブは全て削除されます。
(削除対象ジョブリスト外に同一名称のジョブが存在する場合は削除しません) |
強制起動 |
ジョブリスト中のジョブでパス不正またはメモリ確保失敗などの致命的なエラーが発生した場合、ジョブリストを続行するかどうかを指定します。
(チェックを外した場合、致命的なエラーが発生するとジョブリスト実行をキャンセルします。)
ジョブリスト中のジョブの順序依存性を考慮して設定してください。 |
ジョブリスト編集
ジョブリスト内へのジョブの追加、削除、順序変更、実行などを行います。
ジョブ追加 |
現在のメインウインドウの内容をYYYYMMDD_HHMMSSZZZの名称で新規ジョブとしてジョブリストに追加します。実行とリストアップはそれぞれ別に登録可能です。 |
ジョブリスト実行 |
現在のジョブリストを実行します。実行ボタンを押すとジョブリストキャンセルボタンになります。 |
ジョブリストキャンセル |
現在実行中のジョブと以降のジョブ実行全てをキャンセルします。
実行済みのジョブのキャンセル(巻き戻し)はできません。 |
ジョブをダブルクリック |
選択したジョブ名を任意の名称に変更します。 |
ジョブをクリック->Altキーを押しながらUpキー |
選択しているジョブの実行順序を上げます。 |
ジョブをクリック->Altキーを押しながらDownキー |
選択しているジョブの実行順序を下げます。 |
ジョブをクリック->任意位置へのドラッグ&ドロップ |
選択しているジョブの実行順序を入れ替えます。 |
ジョブを削除 |
選択しているジョブをジョブリストから削除します。 |
全てのジョブを削除 |
ジョブリストに表示されている全てのジョブをジョブリストから削除します。 |
ジョブリストモード実行時の注意点
ジョブリストモードでのバッチ実行時は既存機能の動作が以下のように変更されます。
直ちに開始 |
設定に関係なく、他のRapidCopyの実行終了を待たずに強制実行します。
|
キャンセル... |
現在実行しているジョブをキャンセルします。(次のジョブがある場合、次のジョブが起動します)
|
終了時処理 |
メール送信、コマンド実行、サウンド再生はジョブリストの実行終了時に実行します。 |
ログ機能 |
詳細ファイルログはジョブリスト単位でYYYYMMDD-HHMMSS-ジョブリスト名.log(csv)ファイルを生成します。
一つの詳細ファイルログにジョブリスト中の全てのジョブの実行結果を格納します。
各ジョブでsrc/dstパス不正のような致命的なエラーが発生した場合、エラー内容は標準ログに出力されます。 |
CLIモード |
--auto_close:ジョブリスト中のジョブで一つでもエラーが発生している場合は自動終了しません。
--force_close:ジョブリスト中の全てのジョブ終了後に強制的に終了します。 |
実行前確認ダイアログ |
その他オプションで設定できる実行前確認ダイアログは設定に関わらず表示しません。 |
一般設定
RapidCopyの一般設定(各種デフォルト値、I/Oパラメータ、ログ記録等)を行います。
I/O設定->I/O設定
I/O用の基本パラメータ設定を行います。
I/O単位(MB) |
1回にOSにリクエストするread/writeのサイズを指定します。
「I/O単位 * 非同期I/O発行数」が、OS内で同時に実行される「最大I/Oサイズ」になります。
10G Ethernet等の高速なネットワーク環境の場合は大きい値を指定すると高速化する事があります。
むやみに大きい値を設定するとI/Oエラーが発生しやすくなります。充分検証の上設定してください。
|
非同期I/O発行数 |
read/writeシステムコールの代わりにLinuxAIOカーネルインタフェースを使用して(特にネットワーク越しの)I/O速度を向上させます。
なお、この数を1にすると従来通りのread/writeシステムコールを使用します。
発行数の多いRapidCopyを複数同時に実行するとカーネルリソース不足でエラーになるので注意してください。
aio関連カーネルパラメータについてはディストリビューションごとのチューニングガイドを参考にしてください。
最大値は16です。16以上の値を設定しても強制的に16として処理します。
|
I/O設定->ベリファイ方式
ベリファイ時のハッシュアルゴリズムを選択します。デフォルトはMD5です。
CPUリソースを節約したい場合はxxHashを使用することでCPU使用率を下げることができます。
ベリファイモード | ハッシュ長 |
---|
SHA-1 | 160bit |
MD5 | 128bit |
xxHash | 64bit |
SHA-2(256bit) | 256bit |
SHA-2(512bit) | 512bit |
SHA-3(256bit) | 256bit |
SHA-3(512bit) | 512bit |
ログ設定
RapidCopyの各種ログ設定を行います。
デフォルトでは標準ログのみ有効となっています。
log出力は全てUTF-8で出力されます。
Source/DestDirの履歴数 | 再起動後に有効になります |
標準ログに記録を行う(RapidCopy.log) | 実行結果およびエラーのみを標準ログに記録します |
EA(xattr)関連エラーをログに記録する | EA(xattr)関連エラーを各種ログに記録します |
ACL関連エラーをログに記録する | ACL関連エラーを各種ログに記録します |
詳細ファイルログを記録する(Log/DATE.log) | コピー毎にLog/日付.logファイルを作成します。 |
詳細ファイルCSVデータを記録する(Log/DATE.csv) | コピー毎にLog/日付.csvファイルを作成します。
csvファイルはBOM無しのUTF-8で出力します。
なお、1ジョブ単位のログデータは"//////////"で区切っています。
|
リストアップや詳細ログ内の出力記号についての説明は以下の通りです。
+ | ファイルコピー対象(上書きを含む) |
- | ファイル削除対象 |
パス末尾に"/" | 対象がディレクトリ |
パス末尾に"=>" | 対象がハードリンクファイル |
パス末尾に"->" | 対象がシンボリックリンクファイル |
設定 → 自動/同一/別HDDモード
設定 → コピー元とコピー先を交換
相互に同期したい場合などのために、コピー元とコピー先の内容を交換します。その際、 末尾の '/' の有無による挙動の違いなどを踏まえて、パス内容を必要に応じて加工します。 (例えば、コピー元: /Volumes/TEST/AAA/BBB、コピー先: /Volumes/TEST/AAA/BBBの場合、コピー元: /Volumes/CCC/BBB、コピー先: /Volumes/TEST/AAA/ となります)
なお、コピー元が複数指定されている場合は利用できません。
Ctrl+Shift+S でも実行可能です。
設定 → 終了時処理
終了時処理を選択します。
さらにサウンド設定やコマンド実行、メール送信などの実行後アクションを設定することができます。
プリセットとして新しい終了時処理を追加することも可能です。
なお、サウンドはコマンド実行後に再生します。(windows版とは実行順が逆です)
設定 → 終了時処理 →コマンド実行
指定した文字列を/usr/bin/shに引き渡してバックグラウンドでコマンド実行します。
セミコロンでコマンドを分ける事で複数コマンドを実行できます。
設定 → 終了時処理 →サウンド再生
終了時に任意のサウンドを再生します。
使用できるファイル形式はwavのみです。
設定 → 終了時処理 →メール設定
コピー結果をメール送信します。
送信プロトコルはSMTPSのみ対応しています。
gmailアカウントで機能確認をしています。設定例は以下を参照してください。
設定 → フィルタ表示
各種フィルタの有効/無効を指定します。
なお、移動モードではフィルタ指定は無視されます。
Include |
指定文字列(UNIXワイルドカード形式可)にマッチするファイルのみをコピー対象にします。複数指定する場合は、セミコロンで区切ります。フォルダを指定する場合は、文字列の末尾に '\'を付与します。(例: *.txt; My Folder[0-9]\) ファイルまたはフォルダに対して、それぞれ明示的な指定がない場合は、*を指定したものと見なします。
注意:Include/excludeフィルタにフォルダを指定した場合、最初にマッチしたフォルダだけがコピー対象となります。 (複数のマッチフォルダがあっても最初にマッチしたフォルダのみがコピーされます)
削除モード+ファイルに対してInclude指定をした場合、フォルダは削除されません。
|
Exclude |
Include の反対で、マッチするファイル・フォルダを除外します。 |
FromDate |
指定日時(書式)以降の更新タイムスタンプを持つファイルを対象とします。
書式は絶対日付指定("20090101")以外に、相対日付も可能です(10日前: '-10D') |
ToDate |
指定日時以前の更新タイムスタンプを持つファイルを対象とします。 |
MinSize |
指定サイズ以上のファイルを対象とします。末尾に K/M/G/T を付与することで、サイズの略記表記可能です。 |
MaxSize |
指定サイズ以下のファイルを対象とします。 |
Include / Exclude フィルタ指定で使用可能なワイルドカード書式
* | 0文字以上の任意の文字 |
? | 1文字の任意の文字 |
[abc] | abc のどれか 1文字 |
[^abc] | abc のどれか 1文字以外。 |
[a-z] | a-z までの任意の1文字 |
[0-9] | 0-9までの任意の1文字 |
\ | エスケープ文字(なお、末尾の '\'だけはディレクトリを表します) |
(注意:上記以外のワイルドカード仕様についてはQRegExp::WildcardUnixの仕様に準じます)
FromDate/ToDate フィルタ指定の書式
絶対日時指定 | 日時を YYYYMMDD で指定 |
相対日時指定 | -10D(10日前)などのように、"+|- 数字 W|D|h|m|s" の書式で指定します。 W|D|h|m|s はそれぞれ、週、日、時、分、秒を表します。 (大文字小文字を区別します) |
6. コマンドラインモード
基本的な書式は、以下の通りです。
RapidCopy [--オプション類] [--to コピー先パス] コピー元パス1 コピー元パス2 …
1. GUI モードと違い、区切り文字は空白文字になります。空白文字を含むパス名は、'\'でエスケープしてください
2. ターミナルから起動した場合、デフォルトではGUI操作による終了までターミナル側は待ち状態になります。
シェルスクリプト等に組み込む場合は、必要に応じてバックグラウンド実行や--auto_closeや--force_close指定による
自動終了オプションを利用してください。
指定可能なオプションは、以下の通りです。
-h,--help … コマンドヘルプを表示します。
--cmd (noe|dif|siz|upd|for|syn|ves|mov|del) …動作モード指定。
(cmd 指定省略時は difモード。del指定時は、--to コピー先パス は使いません)
動作モード | GUIの場合の表記 |
---|
noe | 差分(上書きなし) |
dif | 差分(サイズ・日付) |
siz | 差分(サイズ)(*1) |
upd | 差分(最新日付) |
for | コピー(全上書き) |
syn | 同期(サイズ・日付) |
ves | ベリファイ(サイズ) |
mov | 移動(全上書き) |
del | 全削除 |
(*1)--ltfs trueと同時に指定した場合のみ指定できます。
--auto_close ... コピー終了後、自動的に終了します。ただし、エラーが一つ以上発生している場合は自動終了しません。
--force_close ... コピー終了後、エラーが発生していた場合も、強制的に終了します
--open_window ... タスクトレイに格納しません(直ちに実行開始しない場合は指定不要)
--estimate ... コピー完了時間予測を行います
--no_exec ... パラメータをメインウィンドウにセットしますが、実行はしません
--no_confirm_del ... --delete 時に、動作開始の問い合わせをしません
--no_confirm_stop ... 継続不能エラー発生時にも、エラーを出しません
--error_stop (true|false) ... エラー発生時にダイアログを出し、続行するかを問い合わせます
--bufsize N(MB) ... バッファサイズを MB 単位で指定します
--log (true|false) … 標準ログ(RapidCopy.log) にログを出力します (/log=FALSE で抑止)
--logfile 標準ログファイル名 ... 標準ログファイル名を指定します
--filelog (true|false|任意のファイル名) ... 詳細ファイルログを記録します。RapidCopy/Log ディレクトリ配下に、YYYYMMDD-hhmmss-n.logとして保存します。ベリファイ時はハッシュ値も記録されます。 (--filelog filename で指定ファイルに保存可能。ただし、同じファイルを指定して同時に複数の RapidCopyを実行した場合、ログ出力が混じる可能性があります)
--filecsv (true|false) ... 詳細ファイルログをcsv形式で記録します。保存先及びファイル名については--filelogと同一です。
--filecsvを指定する場合は--filelogを有効にする必要があります。
--skip_empty_dir (true|false) ... フィルタ指定時、空ディレクトリをコピーしません
--job ジョブ名 ... 事前に登録してあるジョブを指定します
--joblist ジョブリスト名 ... 事前に登録してあるジョブリストを指定します
--force_start (true|false) ... 他のRapidCopyがコピー実行中の場合でも直ちに実行します
--disk_mode (auto|same|diff) ... 自動/同一/別HDDモードを指定します。(デフォルト: auto)
--speed (full|autoslow|9-1|suspend) ... 速度コントロールを行います。
--srcfile 任意のファイル名 ... コピー元に指定するパス一覧をファイルで指定します。1行に1パスを記述してください。 (大量のパスを指定すると、コピー元パスの表示/再描画に非常に時間が掛かる事があります)
--include "..." ... Include フィルタを指定します( 詳細)
--exclude "..." ... Exclude フィルタを指定します( 詳細)
--from_date "..." ... 更新日付フィルタ(最古)を指定します( 詳細)
--to_date "..." ... 更新日付フィルタ(最新)を指定します( 詳細)
--min_size "..." ... サイズフィルタ(最小)を指定します( 詳細)
--max_size "..." ... サイズフィルタ(最大)を指定します( 詳細)
--wipe_del (true|false) ... 削除モード時に、ファイルを削除する前に上書き&リネームして、復元を無効にします
--acl (true|false) ... アクセスコントロールリスト(ACL)をコピーします
--ea (true|false) ... EA(Extended Attribute)をコピーします
--reparse (true|false) ... シンボリックリンクを(配下ではなく)それ自体をコピーします( 詳細)
--verify (md5|sh1|xxh|s22|s25|s32|s35|fal) ... データのベリファイを行います
ベリファイモード | GUI表記 |
---|
md5 | MD5 |
sh1 | SHA-1 |
xxh | xxHash |
s22 | SHA-2(256bit) |
s25 | SHA-2(512bit) |
s32 | SHA-3(256bit) |
s35 | SHA-3(512bit) |
fal | ベリファイ抑止 |
--linkdest (true|false) ... ハードリンクを可能な限り再現します。詳細は こちらを参照 ください。
--recreate (true|false) ... ファイル更新の挙動を、既存ファイルの上書きから、既存ファイル削除&再生成に変更します。
(--linkdest 指定時には、--recreate指定の有無に関わらず、この動作を行います)常時、この動作を有効にしたい場合、RapidCopy.ini [main] recreate=1 とします。
--postproc (終了時処理名|false) ... 事前に登録してある終了時処理名を指定します。
--ltfs (true|false) ... LTFSモードを有効にします
--nodot (true|false) ... "."から始まる隠しファイルやフォルダを無視します
--xpos (xpos) ... RapidCopy起動時のウインドウ位置のx座標を指定します。--yposと同時に指定してください。
--ypos (ypos) ... RapidCopy起動時のウインドウ位置のy座標を指定します。--xposと同時に指定してください。
例)
/Volumes/srchdd配下を/Volumes/dsthddに差分コピーする場合
RapidCopy --cmd dif --to /Volumes/dsthdd/ /Volumes/srchdd
リターンコード仕様
--auto_closeまたは--force_closeまたはコマンド引数不正時、親プロセスにリタンコードを返却します。
各リターンコードの意味は次の通りです。
リターンコード値 | 意味 |
---|
0(EX_OK) | 正常終了(エラーファイル数0かつエラーディレクトリ数0) |
64(EX_USAGE) | コマンドライン引数不正 |
79 | 異常終了(エラーファイル数1以上またはエラーディレクトリ数1以上 |
7. FastCopy v2.11からの追加機能、仕様変更、削除した機能の一覧
Windows版FastCopy v2.11から変更、追加、削除した主な仕様一覧は以下の通りです。
機能追加
コピー進行確認用のプログレスバーの追加、コピー元パスの複数行表示などでGUIの操作性を改善しました。
詳細ファイルLogに書き込み完了時刻(ベリファイ有効時はベリファイ完了時刻)を追加で記録するようにしました。
ベリファイモードに低CPU負荷(MD5比約50%)のxxHashや、SHA-2,SHA-3を追加しました。
他コピーツールでのコピー後チェックでの需要を想定して、コピーモードにベリファイ専用のモードを追加しました。
長時間コピー時、離れていても実行結果を確認可能とするE-Mail送信機能を「設定->終了時処理」に追加しました。
「設定->一般設定->I/O設定」でベリファイモードをGUIから任意で選べるようにしました。
LTFSのLTOに書き込みを行える「LTFS」モードを追加しました。
コピーバッチをGUIで組むことができるジョブリスト機能を追加しました
仕様変更
ファイル破損検出のエビデンス利用を想定して、リストアップでも詳細ファイルLogを記録するよう仕様を変更しました。
フィルタ機能の表示を一体化、統合すると同時に標準でフィルタが表示されないように仕様変更しました。
機能削除または未実装
小さいファイル読み込み時にosキャッシュを使用する機能を削除しました。
終了時処理のスタンバイ、休止、シャットダウン等の電源関連処理は未実装です。
その他、Windowsとの差異の問題でコピー挙動がwindows版と異なる箇所があります。
8. 注意(危険なところ)
コピー先ファイルは、動作モードに応じて、問い合わせなしに、強制的に上書きすることがあります。
同期モードでは、状況に応じて、コピー先のファイル&ディレクトリを強制削除します。
削除モードでは、ファイル&ディレクトリを強制削除します。
ベリファイを有効にしたコピーの実行中にエラー中断またはキャンセルが発生した場合、コピー完了済ファイルのベリファイをスキップします。
この場合、既にコピー完了したファイルの整合性は保証しません。(*1)
上記のようなケースでコピー済ファイルの整合性を保証したい場合はキャンセル実行後にベリファイを実行してください。
バグがあれば、悲惨な結果になる可能性があります。
(「 2. ライセンス&免責」を熟読のこと)
9. その他
ファイルの出力先について
設定ファイル( RapidCopy.ini)および各種ログファイルの出力先は以下の通りです。
| RapidCopy |
設定ファイル | $HOME/ドキュメントフォルダ/RapidCopy.ini |
標準ログ | $HOME/ドキュメントフォルダ/RapidCopy.log |
詳細ファイルログ及びcsv | $HOME/ドキュメントフォルダ/Log/YYYYMMMM-hhmmss-N.log |
ディスク残容量に関係なく無条件にファイルを出力します。残ディスク容量に注意してください。
設定ファイルはwindows版と互換性がありません。
10. 既知の問題点
11.ToDo
ソースコードリファクタリング
Ctrl+V及びベリファイモード時のベリファイ速度改善
ベリファイ中断時の仕様改善
御本家FastCopy v3.0に実装された各種新機能の移植
GNOME,KDE等の各種デスクトップ環境対応
12. 履歴
Version | 説明 |
1.3.0 | (2018/06/27)
非同期I/O(Linux AIO)機能サポート
O_DIRECTフラグサポート(デフォルト有効)
コピー実行時または終了時、無言クラッシュする問題を修正(したはず)
read()発行時のO_NOATIME追加、posix_fadvise()追加などread/writeを全般に最適化
RapidCopy for mac v1.3.0から以下をporting
パス入力時、末尾フォルダ/ファイル名が確認できるように表示末尾に自動スクロール
I/Oサイズの設定値が常に無視されており、強制的に1MB(下限値)となる問題を修正
dst側でwrite()エラーが発生した場合にコピーが無限ループで進行不能になる(キャンセルは可能)
|
1.2.7 | (2018/03/07)
ベリファイ有効時、対象ファイル単位でベリファイが動作していた問題を修正
RapidCopy for mac v1.2.6 から以下の修正をportingした
コピー進捗表示のデータ単位表示をMBからGiBに変更
LTFSモード時、禁則文字自動変換の結果に矛盾が発生する場合はコピー前に強制停止する機能を追加
LTFSモードの禁則文字自動置換機能実行時、ファイル/フォルダ名置換後の名称が同一になる場合、置換前ファイルの片方が保存されない。
LTFSモードの禁則文字自動置換機能実行時、差分コピー(上書きなし),差分(サイズ),ベリファイ(サイズ)およびリストアップ機能が置換後のファイルに対して動作しない
|
1.1.0 | 初版(2016/3/2) |
|
|