15/05/18_13:32:53: files: — old; +++ now
“except” : “($|^#|^
\$|\.[lL][nN][kK]$)”,
- “local” : ” /d/gnupack_devel-11.00/home/lib/emacs/lisp”,
- “local” : “/d/gnupack_devel-11.00/home/lib/emacs/lisp”, “remote” : “//ueda-pc2.g01.fujitsu.local/home/lib/emacs/lisp”,
15/05/18_13:33:44: — 15/05/18_13:33:44: LOCAL: /d/gnupack_devel-11.00/home/lib/emacs/lisp 15/05/18_13:33:44: toptimestring: 150518_133344_lisp 15/05/18_13:33:48: CONFLICT found: ueda-misc.el (LOCAL 15/05/15 20:28:27 REMOTE 14/10/03 15:56:59 LAST [NO TIME INFO] ) 15/05/18_13:33:48: rename conflict file: ueda-misc.el -> /d/gnupack_devel-11.00/home/lib/emacs/lisp/ueda-misc.conflict150518_133344.el (dryrun) 15/05/18_13:33:48: copy_file (dryrun) LOCAL <- REMOTE ueda-misc.el 15/05/18_13:33:48: CONFLICT found: real-auto-save.el (LOCAL 15/05/15 20:26:05 REMOTE 15/05/15 18:36:15 LAST [NO TIME INFO] ) 15/05/18_13:33:48: rename conflict file: real-auto-save.el -> /d/gnupack_devel-11.00/home/lib/emacs/lisp/real-auto-save.conflict150518_133344.el (dry run) 15/05/18_13:33:48: copy_file (dryrun) LOCAL <- REMOTE real-auto-save.el 15/05/18_13:33:48: CONFLICT found: dot_emacs_gnupack.el (LOCAL 15/05/15 20:14:27 REMOTE 15/05/08 11:29:10 LAST [NO TIME INFO] ) 15/05/18_13:33:48: rename conflict file: dot_emacs_gnupack.el -> /d/gnupack_devel-11.00/home/lib/emacs/lisp/dot_emacs_gnupack.conflict150518_133344.e l (dryrun) 15/05/18_13:33:48: copy_file (dryrun) LOCAL <- REMOTE dot_emacs_gnupack.el 15/05/18_13:33:48: copy_tree LOCAL -> REMOTE wikipedia-mode.el 15/05/18_13:33:48: copy_tree LOCAL -> REMOTE dot_emacs_gnupack_2013-12-25.el 15/05/18_13:33:48: copy_tree LOCAL <- REMOTE real-auto-save 15/05/18_13:33:48: copy_tree LOCAL -> REMOTE real-auto-save-master 15/05/18_13:33:48: copy_tree LOCAL -> REMOTE ensime 15/05/18_13:33:48: copy_tree LOCAL -> REMOTE scala-mode2 15/05/18_13:33:48: copy_tree LOCAL -> REMOTE helm-master 15/05/18_13:45:21: files: — old; +++ now {
- “Name” : “lisp”,
- “dryrun” : true,
- “except” : “(
$|^#|^
\$|\.[lL][nN][kK]$)”, - “local” : “/d/gnupack_devel-11.00/home/lib/emacs/lisp”,
- “remote” : “//ueda-pc2.g01.fujitsu.local/home/lib/emacs/lisp”,
- “~time” : “15/05/18 13:34:04”
- },
- { “Name” : “0-所内”,
@@ -53,10 +61,2 @@ },
- {
- “Name” : “lisp”,
- “dryrun” : true,
- “except” : “(
$|^#|^
\$|\.[lL][nN][kK]$)”, - “local” : “/d/gnupack_devel-11.00/home/lib/emacs/lisp”,
- “remote” : “//ueda-pc2.g01.fujitsu.local/home/lib/emacs/lisp”,
- “~time” : “15/05/08 11:19:22”
- }, {
15/05/18_13:45:21: — 15/05/18_13:45:21: LOCAL: /d/gnupack_devel-11.00/home/lib/emacs/lisp 15/05/18_13:45:21: toptimestring: 150518_134521_lisp 15/05/18_13:45:23: copy_file (dryrun) LOCAL -> REMOTE ueda-misc.el 15/05/18_13:45:23: copy_file (dryrun) LOCAL -> REMOTE real-auto-save.el 15/05/18_13:45:23: copy_file (dryrun) LOCAL -> REMOTE dot_emacs_gnupack.el 15/05/18_13:45:23: delete_tree LOCAL wikipedia-mode.el 15/05/18_13:45:23: delete_tree LOCAL dot_emacs_gnupack_2013-12-25.el 15/05/18_13:45:30: delete_tree REMOTE real-auto-save 15/05/18_13:45:30: delete_tree LOCAL real-auto-save-master 15/05/18_13:45:30: delete_tree LOCAL ensime 15/05/18_13:45:30: delete_tree LOCAL scala-mode2 15/05/18_13:45:30: delete_tree LOCAL helm-master 15/05/18_13:49:34: LOCAL: /d/09-takeout/03-作業用/ビジョン来年度
LAST時刻を取ってから cp -p で LOCAL->REMOTE するまでの間に更新がかかると、conflictに見えてしまう。その後auto-saveできない。⇒ コピーした後のREMOTEの日付をLASTにすべき。
問題。sharepoint WebDAV はファイルを更新しても時刻が見えない。ここは、対象外にするか、readonlyにした方がよい。あるいは、更新はlocalだけにする。remoteでは消して作る。
watchrecentだけを見るモードを作り、そちらのデフォルトスリープを300、通常のサービスのデフォルトスリープを3600にしたいが、オプションの後方互換性が気になる。reloadの時はどちらもやる。
もしかしたら、_originalをsync.plで作るのはやめて、mappingファイルを元に外部でやった方がよいかもしれない。例えばtakeoutlog.shの中。そうすれば shortcut.exeとの依存性を外せる。
サービスモードでは、最近1日以内にアップデートのかかったファイルを直接持つフォルダ(深いところ)は、記録しておいて、最優先でsyncする。その後で通常のをやる。最優先モードだけやるモードを作り、そちらのデフォルトスリープを300、通常のサービスのデフォルトスリープを3600にしたいが、オプションの後方互換性が気になる。reloadの時はどちらもやる。
copy_file, copy_treeどteeでログを出力しているところは、 exit status が tee のものになるので、cpに失敗してもdieできない。“で文字列とってLOG出力後にdieかな?
最終更新日(syncに成功した日時?)を記録しておいて、それより新しいかどうかでファイルの削除などを確認したい。片方にしかなくても、最終更新日より後に作成されたものならそれは親の新旧に関わらずコピーしたい
day_limitは、ファイル単位ではなく、ディレクトリ単位で効くようにして、最近のディレクトリが見つかった時だけ、その下をsyncする。古いディレクトリは、その下のディレクトリだけ再帰しに行って、直下のファイルは無視する
configにフォルダ名というのが、フォルダからサブフォルダに行く時もできて欲しい。最初から全て読まなくても良い。そのサブフォルダのconfigを読んでtopと同じ動作をする、として欲しい。これはちょっと難易度が高い。トップレベルがサブフォルダ関係になっている。⇒ conf_in_conf とか {.CONF} がほぼ同じ動作をしている。.CONFはconfigの継承をする。filesのpushもしている。confのチェーンが一本鎖なのを、逆向きの木にすればよいだけ。optsの書き換えの方向は.CONFとは逆なのに注意。
sync_dirのstatの最中にコネクションが切れると、sync_file で remote is updated with old fileに入って、ファイルをバックアップでdustに入れてしまうが、remoteからはコピーできないので、一見なくなってしまう。
(to dustbox)/bin/mv: cannot move `…’ to `…’: Directory not empty
_sync_conf.txtを読む時に、_originalも作ってあげる。symlinkではだめでWin32APIを使わないとだめ? mklink /d _original $dest でいけるかも。⇒結局 Shorcut.CMDを使うことにした。同梱する。
やらない:conf/filesに構造でなくディレクトリ名が書いてあったら、その下の _original と _sync_conf.txtを見て動作する ldustbox は ../..などと書ける[exiftoolでは、ネットワークフォルダ/sharepointへのLnkが読めない。OLEベースはコンパイルがうまくいかない…」
元のディレクトリ構造の_originalだけ集めたらホームの方も使いやすくなりそう。できれば Explorerのショートカット (.LNKファイル)を作って、それをコピーするのが良い。これは、sync.plの外かも ⇒ working/takeoutlog.shを作った
元のディレクトリ一覧 (ls -lra) をどこかに定期的に保存したい。これはsync.plの外かも。Windowsのタスクからcygwin-shを呼び出してリダイレクト。⇒ working/takeoutlog.shを作った
verboseとか rdustbox, ldustbox, rpassでdiffが混乱してしまう。もう少し長めにdiffチェックして欲しい –horizon-lines=7してみた –minimalはまだ
==================== 15/03/07_22:30:00: different type: … (file) …(dir) 15/03/07_22:30:00: try reconnect: … 15/03/07_22:30:00: Connection may broken! at sync.pl line 1539. ====================