KeePassXのデータベースがコンフリクトした話
僕はパスワード管理にKeePassXを使ってる。
そのデータベースファイルがコンフリクトするという地獄みたいなことが起きた。
経緯
Dropboxで*.kdb
ファイルを同期して、Win/Mac/Linuxで参照できるようにしてるんだけど、Arch LinuxのDropboxがいつからか常駐しなくなってて、それを直したタイミングで*.kdb
ファイルがコンフリクトしてしまった。
Dropboxのファイルはコンフリクトすると、競合コピー(confliected copy)とかってファイルを新たに作るので、自分でマージする必要がある。
*.kdb
のコンフリクトは色んな理由でやっかいで、だいぶ辛かった。
KeePassには同期機能があるっぽくて、KeePass使えば解決じゃんみたいな話かも知れないんだけど、家のメインマシンがLinuxだったこともあって、KeePass 2.0が使えなかったか何かでKeePassXを採用してた経緯がある。
KeePassってMacOSXとWinでデータベースファイルの拡張子が違ったりしてたような記憶があるんだけど、今どうなってるんだろ?そもそも僕の勘違いで違わないのかな??
競合した内容を調査
当然、マージするには競合した内容を知る必要がある。
*.kdb
はマスターパスワードをつかって暗号化されてるので、そのままで差分を知ることはできない。
どうやって差分を知るかというと、エクスポート機能を使ってテキストファイルかXMLファイルに吐き出すか、GUI上から超神技「目grep」を使うしかない。
僕みたいな一般人はエクスポート機能を使ってdiff
を叩くなりするのがよさそうなんだけど、問題としてアホみたいに差分が出る。
実際見てみたけど、はっきり言って絶望しかない。
絶望した結果
golangを勉強してたので、XMLをパースして同じアイテムの差分を見て教えてくれるコマンドラインツールを書いた。
golangで書いておくと、WinでもMacOSXでもLinuxでも簡単に使えるやんけと思ったので、ちょうどよかった。
とりあえずどのアイテムがコンフリクトしてるのかが分かれば幸せになれそうだったので、その程度の作り込みしかしてない。
こんな感じでマスターにあるやつとコンフリクトしたやつのアイテム名が出る。
まとめ
だいぶニッチだけど、golang書く練習になってよかった。
コンフリクト解消して幸せになろうな。