DropBoxは便利らしい。でも同期遅いし、アカウント必要だし。なにより手元に2TBのHDDが転がってる物を生かしたい
ファイル監視して、rsync起動
#!/usr/bin/env ipyw from System.IO import * import subprocess path = "C:\\Program Files\\MySync Suite\\Users\\User0001\\Album" fsw = FileSystemWatcher() fsw.Path = path def watcherhandler(*args): subprocess.call('rsync -avz --delete -e "ssh -i /home/takuya/.ssh/id_rsa -o StrictHostKeyChecking=no " {0} takuya@s1:~/casio '.format(path) ) fsw.Changed += watcherhandler fsw.Created += watcherhandler fsw.Deleted += watcherhandler fsw.Renamed += watcherhandler fsw.IncludeSubdirectories = True fsw.EnableRaisingEvents = True while(True):fsw.WaitForChanged(WatcherChangeTypes.All, -1)
ファイルディレクトリの変更を監視、変化に応じて、rsyncを起動してファイルを転送する。
- FileSystemWathcer
- 細かい説明は別エントリに書いた-----> ironpython で Windowsのフォルダを監視する。
rsync の細かいオプションは重要。
- -o StrictHostKeyChecking=no
- known_hostsにないホストだったらYES/NOだすかどうか→無視
- -i path/to/key
- id_rsaのキーファイル。WindowsのSYSTEMはフルアクセス(これは無条件でそうなる)でもほかユーザーから読めないこと必須。
- takuya@servername
- 転送先へのログイン名。そのままだとSYSTEMになってしまうので。
あとはこれをサービス登録して
cygrunsrv --install MysyncWatcher --path `cygpath -wa /home/takuya/bin/wacher.py` --chdir `cygpath -wa /home/takuya/bin/`
常駐しておけば、Mysync suiteで同期するたびにファイルがバックアップされる。