Chrome/Kinza間でOneTabの同期、ついでにバックアップ


Windows前提。

## OneTabの中身をクロスブラウザで同期したい

- [Sync OneTab tabs on Chrome across different PC's \- Super User](https://superuser.com/questions/630975/sync-onetab-tabs-on-chrome-across-different-pcs)
- [Chrome ⇔ kinzaのインポート・エクスポートについて / 新機能や改善の要望 / Kinza 要望やバグ報告](https://bbs.kinza.jp/viewtopic.php?id=206)

KinzaはChromiumブラウザであるため、Chrome用の拡張がそのまま利用できる。従って、拡張の保持するデータは基本的に共通形式のはずである。

今回は、メインブラウザがKinzaであり、もともとChromeではOneTabを利用していなかったため、KinzaのデータをChromeにインポートする形になる。

複数ブラウザ間でOneTabの情報を同期し、かつバックアップするため、データ本体をDropboxに置いて、各ブラウザからシンボリックリンクで参照する。

## やりかた
Chrome/Kinzaの両方にOneTabをインストールする。

Chrome/Kinzaの拡張機能タブで「デベロッパーモード」にチェック。OneTabの拡張機能IDを確認する。「chlffgpmiacpedhhbkiomidkjlcfhogd」であることがわかる。

![スクリーンショット](http://i.imgur.com/wh2HpQz.png)

ChromeとKinzaを終了する。（Chromeアプリも含む）

OneTabのデータは、各ブラウザのLocal Storageディレクトリに格納されている。

c:\Users\<ユーザ名>\AppData\Local\Google\Chrome\User Data\Default\Local Storage
c:\Users\<ユーザ名>\AppData\Local\Kinza\User Data\Default\Local Storage

それぞれに、以下のファイルがあることを確認。

chrome-extension_chphlpgkkbolifaimnlloiipkdnihall_0.localstorage-journal
chrome-extension_chphlpgkkbolifaimnlloiipkdnihall_0.localstorage

Dropboxにsync\OneTab\Chromeフォルダを作成。そこにKinzaのほうから上記2ファイルを移動する。

Dropbox\sync\OneTab\Chromeから各ブラウザのUser Dataディレクトリにシンボリックリンクを貼る。

今回はMSYS2から行った。

```shell-session
$ cd "/c/Users/<ユーザ名>/AppData/Local/Google/Chrome/User Data/Default/Local Storage"
$ ln -s /c/Users/<ユーザ名>/Dropbox/sync/OneTab/Chrome/chrome-extension_chphlpgkkbolifaimnlloiipkdnihall_0.localstorage "$(pwd)"/chrome-extension_chphlpgkkbolifaimnlloiipkdnihall_0.localstorage
$ ln -s /c/Users/<ユーザ名>/Dropbox/sync/OneTab/Chrome/chrome-extension_chphlpgkkbolifaimnlloiipkdnihall_0.localstorage-journal "$(pwd)"/chrome-extension_chphlpgkkbolifaimnlloiipkdnihall_0.localstorage-journal

$ cd "/c/Users/<ユーザ名>/AppData/Local/Kinza/User Data/Default/Local Storage"
$ ln -s /c/Users/<ユーザ名>/Dropbox/sync/OneTab/Chrome/chrome-extension_chphlpgkkbolifaimnlloiipkdnihall_0.localstorage "$(pwd)"/chrome-extension_chphlpgkkbolifaimnlloiipkdnihall_0.localstorage
$ ln -s /c/Users/<ユーザ名>/Dropbox/sync/OneTab/Chrome/chrome-extension_chphlpgkkbolifaimnlloiipkdnihall_0.localstorage-journal "$(pwd)"/chrome-extension_chphlpgkkbolifaimnlloiipkdnihall_0.localstorage-journal
```

[Link Shell Extension](http://schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html)とか[kobake/lnhdr: リンク作成シェル拡張 \(Link Creation Shell Extension\)](https://github.com/kobake/lnhdr)を使うと簡単だと思われる。

Chrome/Kinzaを起動してOneTabの内容を確認したところ、同期できていた。


## Firefoxと同期？
やりたかったがむりぽ。

Firefoxの場合、データが以下のパスに格納されている。

C:\Users\<ユーザ名>\AppData\Roaming\Mozilla\Firefox\Profiles\5gg9n3ed.default\storage\permanent\indexeddb+++extension-at-one-tab-dot-com\idb\1832832054obnaet.sqlite

[OneTab Help - Firefox Restore](https://www.one-tab.com/firefoxRestore)だと

> 2. Log into your online backup provider or other backup system, and see if it has backed up the following
> file:
> C:\Users\Username\AppData\Roaming\Mozilla\Firefox\Profiles\Profile Folder\jetpack\extension@one-tab.com\simple-storage\store.json

とか書いてあるのだがこれは情報が古い。（参照：[Firefox のアドオン OneTab のデータ消失に備えるために Dropbox でバージョン管理 \| すぐに忘れる脳みそのためのメモ](http://jutememo.blogspot.jp/2015/06/firefox-onetab-dropbox.html)）

ともあれ、データ形式が異なるため、Firefox⇔Chrome（Chromium）間の同期は不可能な模様。
Firefox⇔Chrome（Chromium）間のImport/Exportであれば、フツーにOneTabの機能でできる。

とりあえずDropboxでバックアップだけしておきたいので、同様に、このファイルをDropbox/sync/Firefoxに移動して、シンボリックリンクを張る。

```shell-session
$ cd /c/Users/<ユーザ名>/AppData/Roaming/Mozilla/Firefox/Profiles/5gg9n3ed.default/storage/permanent/indexeddb+++extension-at-one-tab-dot-com/idb
$ ln -s /c/Users/<ユーザ名>/Dropbox/sync/OneTab/Firefox/1832832054obnaet.sqlite "$(pwd)"/1832832054obnaet.sqlite
```