Saturday, July 24, 2010

Synchronizing files in GoodReader with Unison

2010-10-28: 現状、iOS4 なら Dropbox から pdf を GoodReader で開くと GoodReader にコピーされるので、「あとで読む」ものを一度 GoodReader で開いておくほうがいいかもしれない
2010-08-05: -fastcheck true について追記
2010-08-19: unison コマンドのスペルミスを修正

GoodReaderWebDAVサーバー をマウントして、 Unison という対話的双方向 rsync みたいなツールで双方向の同期をとる方法。Mac 限定で説明しますが、 Windows でも Unison 使えるはずだし、 WebDAV マウント (ネットワークドライブ?) できるはずなので応用してみてください。

まずは unison のインストール。
$ sudo port install unison


GoodReader の WebDAVサーバーを起動

unison を実行 (もちろん実行前にバックアップしてください)。
$ unison -perms 0o0 -fastcheck true ~/Dropbox/pdf /Volumes/iPodTouch.local


-perms 0o0 は双方向でパーミッションの同期をしないというオプション。

-fastcheck true オプションを付けると同期するかどうかの確認が速くなります。

unison は対話的なコマンドなので最初に実行するとすべて未知のファイルとしてどうするかいちいち聞いてくるのですが、落ち着いて対応すれば難しくないはずです。

  • すでに双方にあるファイルが同じなら ">" (left to right) のローカルから iPhone へ (実際には転送されないと思う)

  • .DS_Store とかは、 "N" (permanently ignore paths ending with this name)

  • 同じ内容だけど名前の違うフォルダやファイルはとりあえず skip して名前を調整してから次回の unison 実行で同期



unison の実行が終わったら、 iPhone 側の "WiFi-transfer" を "stop" する前にマウントを先に解除したほうがいいですね。たぶん。

以上。