Gramps WebとGramps Desktopの同期¶
Gramps Web Syncは、デスクトップコンピュータ上のGrampsデータベースをGramps Webと同期させるためのアドオンで、メディアファイルも含まれます。
Warning
どの同期ツールでも同様ですが、これをバックアップツールと考えないでください。一方での偶発的な削除は、もう一方に伝播します。家系図の定期的なバックアップ(Gramps XML形式で)を作成することを確認してください。
Info
このドキュメントは、Gramps Web Syncアドオンの最新バージョンを参照しています。必要に応じて、Grampsアドオンマネージャーを使用してアドオンを最新バージョンに更新してください。
インストール¶
このアドオンは、Python 3.10以上で動作するGramps 6.0を必要とします。 Gramps Desktopで利用可能で、通常の方法でインストールできます。
Warn
デスクトップで使用するGrampsのバージョンが、サーバーで実行されているものと同じであることを確認してください。サーバーが実行しているGrampsのバージョンを確認する方法については、ヘルプを取得セクションを参照してください。GrampsのバージョンはMAJOR.MINOR.PATCHの形式で、MAJORとMINORはWebとデスクトップで同じでなければなりません。
オプションのステップ:
Gnome keyring bug
現在、python keyringにバグがあり、多くのGnomeデスクトップ構成に影響を与えています。~/.config/python_keyring/keyringrc.cfgという構成ファイルを作成し、次のように編集する必要があるかもしれません:
[backend]
default-keyring=keyring.backends.SecretService.Keyring
keyringをインストールします(例:sudo apt install python3-keyringまたはsudo dnf install python3-keyring)して、APIパスワードをシステムのパスワードマネージャーに安全に保存できるようにします。
使用法¶
インストールが完了すると、Grampsのツール > 家系図処理 > Gramps Web Syncの下にアドオンが表示されます。開始すると、元に戻す履歴が破棄されることを確認するダイアログが表示され、ウィザードが同期手順を案内します。明示的に確認するまで、ローカルツリーやサーバーには変更が適用されないことに注意してください。
ステップ1: サーバーの認証情報を入力¶
ツールは、Gramps Webインスタンスの基本URL(例:https://mygrampsweb.com/)、ユーザー名、およびパスワードを尋ねます。リモートデータベースに変更を同期するには、少なくともエディタ権限を持つアカウントが必要です。ユーザー名とURLはGrampsユーザーディレクトリに平文で保存され、パスワードはkeyringがインストールされている場合にのみ保存されます(上記参照)。
ステップ2: 変更を確認¶
認証情報を確認した後、ツールはローカルデータベースとリモートデータベースを比較し、違いがあるかどうかを評価します。違いがある場合、次のカテゴリのいずれかに属するオブジェクトの変更リストが表示されます:
- ローカルで追加された
- ローカルで削除された
- ローカルで変更された
- リモートで追加された
- リモートで削除された
- リモートで変更された
- 同時に変更された(両方の側で)
ツールは、各オブジェクトのどちらが新しいかを評価するためにタイムスタンプを使用します(詳細が気になる場合は、以下の「背景」を参照してください)。
変更が期待通りであれば、「適用」をクリックしてローカルおよびリモートデータベースに必要な変更を適用できます。
高度な設定: 同期モード
変更リストの下で、同期モードを選択できます。
デフォルトの双方向同期は、検出された変更を複製することによって両方の側(ローカルとリモート)に変更を適用することを意味します(ローカルで追加されたオブジェクトはリモート側にも追加されるなど)。両方の側で変更されたオブジェクトは、マージされて両方の側で更新されます。
リモートをローカルにリセットするオプションは、リモートGrampsデータベースがローカルのものと正確に同じになることを保証します。「リモートで追加された」として検出されたオブジェクトは再び削除され、「リモートで削除された」として検出されたオブジェクトは再び追加されますなど。ローカルGrampsデータベースには変更は適用されません。
ローカルをリモートにリセットするオプションは逆の方法で機能し、ローカルの状態をリモートデータベースのものに設定します。リモートデータベースには変更は適用されません。
最後に、マージオプションは双方向同期に似ていますが、両方のデータベースを変更しますが、オブジェクトを削除することはありません。代わりに、片方でのみ削除されたすべてのオブジェクトを復元します。
ステップ3: メディアファイルを同期¶
データベースが同期された後、ツールは新しいまたは更新されたメディアファイルをチェックします。見つかった場合、リストが表示され、必要なファイルをアップロード/ダウンロードするための確認を求めます。
メディアファイルの同期に関する以下の制限に注意してください:
- ローカルファイルがGrampsデータベースに保存されているものと異なるチェックサムを持っている場合(これは、Grampsに追加された後に編集されたWordファイルなどで発生する可能性があります)、アップロードはエラーメッセージとともに失敗します。
- ツールはすべてのローカルファイルの整合性をチェックしないため、メディアオブジェクトのパスにローカルファイルが存在する場合でも、サーバー上のファイルと異なる場合、ツールはそれを検出しません。誤ったチェックサムのファイルを検出するには、Media Verify Addonを使用してください。
トラブルシューティング¶
デバッグログ¶
Sync Addonに問題が発生している場合は、コマンドラインからGrampsを起動してデバッグログを有効にしてください。次のオプションを使用します:
gramps --debug grampswebsync
これにより、問題の原因を特定するのに役立つ多くの有用なログステートメントがコマンドラインに出力されます。
サーバーの認証情報¶
最初のステップで失敗した場合は、サーバーのURL、ユーザー名、パスワードを再確認してください。
権限の問題¶
権限に関するエラーが発生した場合は、Gramps Webユーザーアカウントのユーザーロールを確認してください。リモートデータベースに変更を適用できるのは、エディタ、オーナー、または管理者の役割を持つユーザーのみです。
予期しないデータベースの変更¶
同期ツールが発生していないと思われる変更を検出した場合、データベースのいずれかに不整合があり、Grampsが違いを検出している可能性があります。または、ローカルコンピュータとサーバー間の時間が同期していない可能性があります。
両方のマシンの時計が正しく設定されていることを確認してください(注意:タイムゾーンは関係ありません。ツールはUnixタイムスタンプを使用しており、タイムゾーンに依存しません)。
ローカルデータベースでチェック&修復ツールを実行し、これが役立つかどうかを確認することもできます。
ローカルデータベースの不整合が誤検出を引き起こしていないことを確認するための強引だが効果的な方法は、データベースをGramps XMLにエクスポートし、新しい空のデータベースに再インポートすることです。これはロスレスな操作ですが、すべてのデータが一貫してインポートされることを保証します。
タイムアウトエラー¶
タイムアウトエラー(例:HTTPステータス408エラーや「タイムアウト」という単語を含む別のエラーメッセージ)が発生している場合、リモート側に同期する必要がある変更の数が多いことと、サーバーの設定が組み合わさっている可能性があります。
v1.2.0より前の同期アドオンのバージョンおよびv2.7.0より前のGramps Web APIのバージョン(Gramps Webのバージョン情報タブを参照)では、サーバー側への同期は単一のリクエストで処理され、サーバーの設定に応じて1分から数分でタイムアウトします。ローカルデータベースに数千のオブジェクトをインポートした後や、完全なローカルデータベースを空のサーバー側データベースに同期しようとする場合、これは短すぎることがあります。
同期アドオンv1.2.0以降およびGramps Web API v2.7.0以降を使用している場合、サーバー側の同期はバックグラウンドワーカーによって処理され、非常に長い時間実行でき(進行状況バーが表示されます)、タイムアウトエラーは発生しないはずです。
予期しないメディアファイルエラー¶
メディアファイルのアップロードが失敗する場合、通常はディスク上の実際のファイルのチェックサムとローカルGrampsデータベースのチェックサムが不一致であることが原因です。これは、Grampsの外で編集されたオフィス文書などの編集可能なファイルでよく発生します。すべてのメディアファイルのチェックサムを修正するには、Gramps Media Verify Addonを使用してください。
ヘルプを求める¶
上記のすべてが役立たない場合は、GrampsフォーラムのGramps Webカテゴリに投稿してコミュニティに助けを求めることができます。次の情報を提供することを確認してください:
- Gramps Web Syncアドオンのバージョン(最新のリリースバージョンを使用してください)
- 使用しているGramps Desktopのバージョン
- 上記のように有効にしたGrampsデバッグログの出力
- Gramps Webのバージョン情報(設定/バージョン情報の下にあります)
- Gramps Webのインストールに関する詳細(自己ホスト、Grampshubなど)
- Gramps Webサーバーログの出力(アクセスできる場合)(dockerを使用している場合:
docker compose logs --tail 100 grampswebおよびdocker compose logs --tail 100 grampsweb-celery)
背景: アドオンの動作方法¶
アドオンが実際にどのように機能するかに興味がある場合は、このセクションで詳細を見つけることができます。
このアドオンは、ローカルのGrampsデータベースをリモートのGramps Webデータベースと同期させ、ローカルとリモートの両方の変更(共同編集)を可能にすることを目的としています。
これは適していません
- ローカルデータベースの直接の派生物(データベースのコピーまたはGramps XMLのエクスポート/インポートから開始)ではないデータベースとの同期
- 両側で多くの変更があり、マージのために手動で注意が必要な2つのデータベースをマージすること。これには優れたインポートマージツールを使用してください。
ツールの動作原理は非常にシンプルです:
- ローカルデータベースとリモートデータベースを比較します
- 違いがある場合、最新の同一オブジェクトのタイムスタンプをチェックし、それをtと呼びます
- tよりも最近変更されたオブジェクトが一方のデータベースに存在し、もう一方には存在しない場合、それは両方に同期されます(新しいオブジェクトと仮定)
- tより前に変更されたオブジェクトが一方のデータベースに存在しない場合、それは両方から削除されます(削除されたオブジェクトと仮定)
- オブジェクトが異なりますが、tの後に一方のデータベースでのみ変更された場合、もう一方に同期します(変更されたオブジェクトと仮定)
- オブジェクトが異なりますが、両方のデータベースでtの後に変更された場合、マージします(競合する変更と仮定)
このアルゴリズムはシンプルで堅牢であり、同期履歴を追跡する必要がありません。ただし、頻繁に同期する場合に最適に機能します。