dic-syncの挙動

dic-syncの挙動についての概説です。

dic-syncに含まれているスクリプト

dic-sync -- dic-syncのメインスクリプト。オンラインストレージの挙動を確認しオンライン上の辞書との差分を作成し同期を行う。

gui-dic-sync -- dic-syncの挙動の設定をおこなう。GUIはすべてzenityでかかれている。

dic-sync(スクリプト)の挙動

dic-syncは同期を行うスクリプト本体です。

初回起動(同期)時

/.dic_syncを同期に使用するオンラインストレージ上とローカルに、/.anthyをオンラインストレージ上に作成しローカルの辞書のコピーを作成します。

また、/.dic_syncに今回オンラインストレージ上の/.anthyと同じ辞書のコピーを作成します。

また、/.dic_sync下にdic_log<ユーザー名>が作成されます。ここで引かれるユーザー名はdic-sync.confから引かれ、定義されて胃ない場合はid -u -nから得られるユーザー名を与えます。

初回以外の同期時

使用するオンラインストレージが同期可能な状態かを確認します。

同期可能とスクリプトが判断した場合に、オンラインストレージとローカルの辞書との差分を作成します。

また、ローカルの/.dic_sync下にある前回同期時に作成されたと現在のローカルの辞書との比較をし、ここでローカルの辞書で削除・追加のあった単語を抽出します。

オンラインストレージとローカルとの差分と、削除・追加の抽出からローカルの辞書に加わった変更と、オンラインストレージに加わった変更を抽出します。

抽出された変更点をローカル辞書に適応します。

作成された辞書をローカルの./anthyと/.dic_syncとオンラインストレージ上の/.anthyにコピーを作成します。

gui-dic-syncの挙動

dic-syncの同期に用いられる設定ファイルdic-sync.confの作成をGUI(zenity)で行います。

アプリケーション > インターネット > dic-sync から呼び出されているのはgui-dic-syncです。

また頻度の設定はcrontabを使い、既存のdic-sync以外のcronを抽出し、今回設定した頻度を加えて再びcrontabを行います。

dic-sync.conf

dic-sync.confはdic-syncの設定ファイルで、中には使用するオンラインストレージの絶対パスとユーザー名が記述されています。

このファイルが存在しない、またはファイルは存在するが中身にオンラインストレージの設定が存在しないあるいはユーザー名が記述されていない場合には、使用するオンラインストレージは$HOME/Ubuntu Oneをユーザー名にはid -u -nを与えます。

dic_log<ユーザー名>

dic_log<ユーザー名>(以下ログファイル)は同期が行われたYYYYMMDDhhmmとユーザー名、同期された旨がそれぞれ記述されており、直近三回の同期までのログを保存しています。

このログファイルのコピーはオンラインストレージの/.dic_syncに保存され、各環境で必要に応じて参照されます。

参照例:すでにオンラインストレージ上に/.dic_syncがある状態でgui-dic-syncを使ってユーザー名を設定するときに、すでにオンラインストレージ上の/.dic_sync下のログファイルを参照して同一の名前を使用しようとしている場合には確認のメッセージを表示する。

change_backup<YYYYMMDDhhmm>

change_backup<YYYYMMDDhhmm>は辞書に変更・削除が行われた場合に作成されるファイルです。この中身は変更・削除が行われた単語の変更・削除前の単語が格納され、このファイルを参照することで辞書に加えられた変更・削除を適切に適応します。

このファイルは/.dic_sync下にコピーが作成され、他の環境での適応が完了すると削除されます。

また、このファイルの削除条件はログファイルを参照して決定されます。

(以下製作途中……)