jsugino/backuper
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
[Backuper の使い方] java -jar jarfiile.jar DicFolder [option] [level] [src [dst]] ・DicFolder には、*.db ファイルと "folders.conf.xml" ファイルがあるフォルダを指定する。 ・levelで指定されたすべてタスクのコピー作業を実行する。 ・src が指定された場合、それがオリジナルとなるもののみを実行する。 ・dst が指定された場合、それがコピー先となるもののみを実行する。 option -l : ストレージやタスクを確認する。 -f : 強制実行する。(削除や上書きするファイルが10個以上でも実行する) -s : スキャンのみを行う (MD5の計算も行う) -r : ファイル移動を反映する -n : 準備処理を行わない。(-sn = フルスキャン、-dn = DBを読まない) -d : シミュレートする。(実際のコピーは行わない。) [組み合わせパターン] <通常のバックアップ> : R -> S -> X -> W : すべて実行。(オプション -f) <ちょっと、心配なとき> -d : R -> S -> P -> W : 通常スキャンしてシミュレート -n : R -> X -> W : スキャンせずに実行。(オプション -f) <しばらくバックアップしてなかったとき> -sn : S -> W : フルスキャン -dn : R -> P : スキャンせずにシミュレート -n : R -> X -> W : スキャンせずに実行。(オプション -f) (パラメータの例) タスク実行: daily レベル daily のタスクを実行 daily Common.C ストレージ Common.C をオリジナルとするタスクを実行 daily C ドライブ C をオリジナルとするタスクを実行 daily C D ドライブ C から D へコピーするタスクを実行 Common C D ストレージ Common.C から Common.D へコピーするタスクを実行 -d daily [src [dst]] レベル daily のタスクをシミュレート(コピーしない) -n daily [src [dst]] スキャンををせずにレベル daily のタスクを実行(コピーする) -dn daily [src [dst]] スキャンををせずにレベル daily のタスクをシミュレート(コピーしない) 確認: -l すべてのタスクとストレージを表示 -l C Cドライブのストレージを表示 -l daily [src [dst]] レベル daily のタスクとストレージを表示 (src, dst が指定されていたら、そのドライブなどに限定) ファイル移動: -r Common.C ストレージ Common.C 内でのファイル移動を *.db に反映する。 -r Common C D ストレージ Common.C と同等の配置となるように、Common.D 内で移動。 スキャン: -s|-sn daily [src [dst]] 関連するストレージの通常スキャン or フルスキャン (src, dst が指定されていたら、そのドライブなどに限定) -s|-sn C Cドライブのすべてのストレージを通常スキャン or フルスキャン -s|-sn Common.C ストレージ Common.C の通常スキャン or フルスキャン [Backuper の使い方(旧)] java -jar jarfiile.jar [-dsl] DicFolder [SrcName] [DstName] DicFolder : 辞書ファイルやログファイルの格納場所 SrcName : コピー元「識別名」を指定する。 DstName : コピー先「識別名」を指定する。 -d : デバッグモード。スキャンやコピーは行わず、DBの内容だけでcopy予定を表示する。 -s : スキップスキャン。スキャンを省略する。 -l : 定義ファイルの内容を出力する。 ・DicFolder 以下の "folders.conf" ファイルに設定情報を記載する。 ・DstName が省略されたら、SrcName に対応する辞書の更新のみを行う。 ・シンボリックリンクは手繰らない。 [folders.conf.xml の記載内容] <database> <folderdef id="..."> : よく使うフォルダーパターンに、id で指定した名前をつける。 <folder dir=".../..." name="..." /> : dir(相対パス)にnameという名前をつける。 <folder dir=".../..." name="..." /> </folderdef> <storage dir="/.../..." name="..."> : dir(絶対パス)にnameという名前をつける。 <folder dir=".../..." name="..."> : dir(相対パス)にnameという名前をつける。 <excludes> : 無視する、ファイル or フォルダを指定する。 ... : スラッシュで始まらない・終わらないものは、全てのフォルダ内のファイル名 /... : スラッシュで始まるものは、そのフォルダからの絶対パスファイル /.../ : スラッシュで始まり・終わるものは、そのフォルダからの絶対パスフォルダ </excludes> <folder dir="..." name="..." /> : folder はネストして定義できる。 </folder> </storage> <backup name="..."> : バックアップタスクを定義する。nameにはfolder名を指定する。 <original storage="..." /> : バックアップ元の storage を指定する。 <copy level="..." storage="..." /> : バックアップ先の storage を指定する。levelでそれを呼び出す。 <copy level="..." storage="..." /> : バックアップ先は複数定義できる。 </backup> </database> 読み書きするフォルダの最小単位は Storage になる。 Storage の名前は <storage> で定義したストレージの前に、<folder> で定義したフォルダ名を連結したもの。 [<folder name="..."> の解釈ルール] name の指定がない場合: ・親<folder>がない場合 dir を用いる。 ・親<folder>がある場合は親の name に '.' で dir を連結する。 ・dir の中の '/' は '.' に読み替えられる。 name に通常の名前を指定した場合: ・その名前を用いる。(親<folder>の定義は無視される。) name に "." ではじまる名前を指定した場合: ※※※この仕様はいまいち。<backup> で ref 指定できるようにする。※※※ ・親<folder>の name に連結する。(親がないとエラー) [MD5を計算するタイミング] - : ファイルが存在しない n : ファイルがあるがMD5は計算されていない E : ファイルがありMD5も計算ずみ D : Delete C : Copy O : Copy Override src dst Act タイミング - n D MD5の計算なしで、すぐに削除される - E D MD5の計算なしで、すぐに削除される n - C コピーする。コピー時にMD5を計算し、src, dst に設定される。 E - C コピーする。コピー時にMD5を計算し、src, dst に設定される。 n n O srcとdstのMD5を計算し、違っていたらコピーもする。(srcを二度読む、dstを無駄に読む) n E O srcのMD5を計算し、違っていたらコピーもする。(srcを二度読む) E n O dstのMD5を計算し、MD5の比較後、違っていたらコピーもする。(dstを無駄に読む) E E O 違っていたら、コピーする。 ※ コピー時に計算したMD5ともとのMD5が違っていたらwarnを出す。 [folders.conf の記載内容] <識別名1>=<フォルダ名1> <無視するファイルパターン1> <無視するファイルパターン2> ... <識別名2>=<フォルダ名2> ... <識別名> : 実行時の引数に指定する <フォルダ名> : フォルダをフルパスで指定する <無視するファイルパターン> : コピーしないファイルパターン ・'/' で始まるものは、パスを見てマッチする。 ・'/' で始まらないものは、パスは無視する。 ・'/' で終わるものは、フォルダにマッチする。 ・'/' で終わらないものは、ファイルにマッチする。 ・'**' は0個以上ののフォルダ・ファイルにマッチする。 ・'*' は1つのフォルダ・ファイルにマッチする。 [サンプル定義ファイル] linux.home.src=/home/junsei # 識別名 "linux.home.src" のフォルダ名 /work/*/target/ # 無視するフォルダパス #*# # 無視するファイル名 *~ /.cache/ /.m2/ /.config/ /.emacs.d/semanticdb/ /.bash_history /.local/share/gvfs-metadata/ linux.dst1=/mnt/C/BACKUP/Linux/home/junsei linux.dst2=/mnt/D/Linux/home/junsei [エラー対応方法] "CANNOT COPY" と表示されるのは、コピー先に無視する対象のファイルがあり、上書きコピーできないためである。 内容を確認し、不必要なら手で削除をして、再度バックアップ処理をすること。 [*.db のフォーマット] <fildername> <ignorenum> <MD5string> <datetime> <length> <filename> ... <foldername> フォルダー名 <ignorenum> 無視したファイル・フォルダーの数 <MD5string> MD5の計算値 (後端の '=' は取り除いてある) <datetime> 年月日時分秒ミリ秒 <length> ファイル長 <filename> ファイル名 (例) . 2 dir1 0 dcEk+ueouLiRg9TeGWYTsw 2020/10/10 10:09:49.480 3 file1-1 EfTe6lKqT1IwiZkZWQbqlw 2020/10/10 10:09:49.480 4 file1-2 r0ZBQ2Mlb/HCYsZUPQqZgQ 2020/10/10 10:09:49.480 5 file1-3 dir2 0 NH2v5b4mmi333Z4HjBOpBg 2020/10/10 10:09:49.480 6 file2-1 TuT+zXiKMLRVFBB3gBLbwg 2020/10/10 10:09:49.480 7 file2-2 wFgRwqYBVwn6/lCUAgzkIg 2020/10/10 10:09:49.480 8 file2-3 ====================================================================== クラス定義 DataBase クラスは "*.db" ファイルの読み書きを行う。 (e.g. "Linux.junsei.C") +----------+ [storageName] +---------+ | DataBase |---------------->| Storage | = "*.db" +----------+ +---------+ ^ ^ <<extens>> | | <<extens>> +--------------+ +------------+ | LocalStorage | | FtpStorage | +--------------+ +------------+ Storage クラスに対しする操作で、実際のファイル読み書きができる。 Backup クラスは、バックアップタスクを定義する。 <<List>> +--------+ [level] +------+ +------+ +------+ | Backup |--------> | Task |-| Task |-| Task | +--------+ +------+ +------+ +------+ orig | | copy <<List>> +---------+ +---------+ +---------+ +---------+ | Storage | | Storage |-| Storage |-| Storage | +---------+ +---------+ +---------+ +---------+ | history(※) | history(※) +---------+ +---------+ | Storage | | Storage | +---------+ +---------+ (※) 履歴用の Storage は historyStorages.get(storageName) で取得する。
About
No description, website, or topics provided.
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published