Syncthing シリーズ目次
- Syncthing の使い方:デバイスのペアリングからファイル同期までの実用メモ
- Docker で Syncthing をデプロイする:Compose、ポート、ディレクトリマッピングの注意点
- Syncthing で複数デバイスを設定する方法:P2P、スター型トポロジー、Introducer
- Android で Syncthing を使う方法:Syncthing-Fork の設定と写真バックアップ
- Syncthing で複数デバイスと複数フォルダーを管理する方法:トポロジー、命名、バージョン管理
- Syncthing で iPhone の写真をパソコンや NAS に同期する方法
Syncthing はデバイスとフォルダーが増えると、事前に設計しておかない限りすぐに複雑になります。 典型的には、スマートフォン、タブレット、ノート PC、デスクトップ、NAS が同時に同期し、フォルダーには写真、仕事用ドキュメント、コード、チャットのバックアップ、電子書籍が混在します。どのデバイスでも変更でき、どのフォルダーも共有されるため、最終的に「このファイルはどこから来て、どこへ同期されるのか」が分かりにくくなります。
Syncthing を安定して使うために重要なのは、クライアントを増やすことではなく、管理ルールを作ることです。
- トポロジーはスター型にする。
- フォルダー ID とパスを統一する。
- デバイス関係には Introducer を使う。
- データ方向でバックアップと双方向同期を分ける。
- 中心ノードでバージョン管理を有効にする。
- 一時ファイルは Ignore Patterns で除外する。
トポロジー:フルメッシュを避け、スター型を優先する
Syncthing は P2P の対等な構成ですが、すべてのデバイスを相互にペアリングすべきという意味ではありません。
5 台のデバイスをすべて相互接続すると、10 組のデバイス関係を管理する必要があります。新しいフォルダーを追加するたびに、複数のデバイスで受け入れ、パスを設定し、共有を確認しなければなりません。デバイスが増えるほど管理コストは高くなります。
よりおすすめなのはスター型トポロジーです。
常時稼働し、容量が大きく、ネットワークが安定しているデバイスを中心ノードにします。
- NAS
- Synology
- ソフトルーター
- ミニ PC
- 24 時間稼働するパソコン
他のデバイスは中心ノードだけとペアリングします。
|
|
スマートフォンはノート PC を直接追加せず、ノート PC もデスクトップを直接追加しません。スマートフォンの写真をパソコンへ同期したい場合は、まず NAS に同期し、NAS からパソコンへ同期します。
この方法には次の利点があります。
- 新しいデバイスは NAS とだけペアリングすればよい。
- フォルダー関係を NAS で集中管理できる。
- NAS でバージョン保持を統一できる。
- 端末がオフラインでも NAS がバッファーになる。
欠点は NAS の重要性が高くなることです。安定稼働させ、NAS 自体のバックアップも用意する必要があります。
Folder ID はフォルダーラベルより重要
Syncthing で同期フォルダーを本当に識別するのは Folder ID であり、画面に表示されるラベルではありません。
ラベルは表示名にすぎず、デバイスごとに違っていても構いません。Folder ID こそが、複数デバイス上のフォルダーが同じ同期グループに属するかを判断する鍵です。
そのため、最初のデバイスでフォルダーを作るときは、分かりやすい ID を手動で指定することをおすすめします。
例:
|
|
自動生成されたランダムな ID や、test、sync、new-folder のように長期運用に向かない名前は避けましょう。
命名ルールはシンプルで十分です。
- 双方向同期:
notes-main、work-docs - スマートフォンのバックアップ:
backup-pixel-photos、backup-iphone-photos - 資料配布:
media-ebooks、media-music - コードディレクトリ:
code-projects
後で別のデバイスが共有を受け取るとき、Folder ID を見れば用途をすぐ判断できます。
中心ノードのパスを整理する
NAS や中心となるパソコンでは、Syncthing 用の共通ルートディレクトリを作るのがおすすめです。
例:
|
|
同期ディレクトリをシステム内のあちこちに散らさないでください。短期的には便利でも、長期的には必ず管理が難しくなります。
おすすめの原則:
- Syncthing が管理するすべてのディレクトリを共通ルートの下に置く。
- スマートフォンのバックアップ、仕事用ドキュメント、メディアを分ける。
- フォルダー名は一時的なデバイス状態ではなく用途を表す。
- システムディレクトリやダウンロードキャッシュを長期同期フォルダーにしない。
Syncthing を Docker で動かしている場合は、ホスト側パスとコンテナ内パスの対応にも注意します。
ホスト側のディレクトリ:
|
|
コンテナ内では次のようにマウントされることがあります。
|
|
Web UI に入力するのはコンテナ内パスであり、ホスト側パスではありません。
Introducer:複数デバイスのペアリング作業を減らす
Syncthing の Introducer は、スター型トポロジーに向いた機能です。
NAS を Introducer に設定します。その後、新しいデバイスは NAS とペアリングするだけで、NAS が既知のデバイスや共有関係を新しいデバイスに紹介できます。これにより、各デバイス間で QR コードを何度も読み取ったり、手動で追加したりする作業を減らせます。
向いているケース:
- 家に複数のパソコンやスマートフォンがある。
- NAS が常時稼働する中心ノードである。
- 新しいデバイスをよく追加する。
- ペアリング操作を減らしたい。
ただし、乱用しないでください。
おすすめ:
- NAS またはメインサーバーだけを Introducer にする。
- 普通のスマートフォン、タブレット、一時的なパソコンは Introducer にしない。
- 新しいデバイスが参加したら、自動追加されたデバイスとフォルダーを確認する。
- 信頼できないデバイスを Introducer 管理範囲に入れない。
Introducer は効率を上げますが、自動的な関連付けの範囲も広げます。明確な中心ノードがあるネットワークに向いており、雑多な一時デバイス環境には向きません。
バックアップと双方向同期を分ける
複数フォルダー管理で最も重要なのは、すべてのディレクトリに Send & Receive を使わないことです。
フォルダーごとにデータの向きは異なります。
スマートフォン写真バックアップ
スマートフォン側:
|
|
NAS 側:
|
|
スマートフォンは写真を送信し、NAS は受信して保存します。スマートフォンの容量整理や NAS 側の整理が、互いに影響しにくくなります。
複数端末のドキュメントとメモ
パソコン側:
|
|
NAS 側:
|
|
スマートフォンを双方向同期に参加させるかは、実際にスマートフォンでそれらのファイルを編集するかによります。閲覧だけなら Receive Only も検討できます。
資料配布
NAS 側:
|
|
他のデバイス:
|
|
電子書籍、インストーラー、参考資料など、中心から配布するフォルダーに適しています。
バックアップディレクトリ
メインデバイス:
|
|
バックアップ機:
|
|
さらにバックアップ側でバージョン管理やスナップショットを組み合わせます。
NAS でファイルバージョン管理を有効にする
複数デバイス同期で最も怖いのは、誤削除と誤上書きです。
例:
- あるパソコンで仕事用ドキュメントを誤って削除した。
- スマートフォンのクリーンアップツールがアルバムディレクトリを削除した。
- 2 台のデバイスが同じメモを同時に編集した。
- 同期ルールを間違えて空ディレクトリを同期してしまった。
そのため、中心ノードではファイルバージョン管理を有効にしておくのが安全です。
NAS の Syncthing Web UI で:
- 対象フォルダーの設定を開く。
- ファイルバージョン管理へ進む。
- 適切なバージョン戦略を選ぶ。
よく使われるのは Staggered File Versioning です。時間間隔に応じて履歴バージョンを保持し、古いものほど間引いて残します。
より単純な戦略も使えます。
- Trash Can File Versioning:ごみ箱のように扱う。
- Simple File Versioning:固定数のバージョンを保持する。
- Staggered File Versioning:時間段階に応じて保持する。
迷う場合、家庭用 NAS なら Trash Can または Staggered から始めるとよいでしょう。
バージョン管理は完全なバックアップではありませんが、複数デバイス同期における重要な復旧手段です。
Ignore Patterns で一時ファイルを除外する
コードプロジェクト、ドキュメントディレクトリ、チャットバックアップを複数デバイスで同期すると、一時ファイルやキャッシュが問題を起こしやすくなります。
よくある問題:
- 帯域を大量に使う。
- 意味のない競合が発生する。
- OS ごとに異なるキャッシュファイルが生成される。
- ディレクトリ削除時に無視ファイルが残って邪魔をする。
フォルダー設定の Ignore Patterns にルールを追加できます。
汎用の一時ファイル:
|
|
Node / Python / Java プロジェクト:
|
|
コードプロジェクト自体を Git で管理している場合、通常は Syncthing で .git ディレクトリを同期することはおすすめしません。次のように無視できます。
|
|
(?d) は、ディレクトリ全体を削除するときに、Syncthing がこれらのローカル生成された無視ファイルも削除できることを意味します。残ったキャッシュがディレクトリ削除を妨げにくくなります。
Ignore Patterns は最初から複雑にしすぎないでください。まず明らかなキャッシュと一時ファイルを除外し、実際の競合に合わせて少しずつ調整します。
複数フォルダーの命名例
固定した命名方式を用意できます。
スマートフォン写真:
|
|
iPhone 写真:
|
|
メインのノート保管庫:
|
|
仕事用ドキュメント:
|
|
電子書籍:
|
|
ID、ラベル、パスに規則があれば、デバイスが増えても管理しやすくなります。
推奨する全体構成
すでに Docker 版 Syncthing を NAS で動かしているなら、次のように設計できます。
- NAS を中心ノードにする。
- NAS を Introducer に設定する。
- すべてのデバイスは NAS とだけペアリングする。
- すべての同期ディレクトリを
/volume1/Syncthing/の下に置く。 - スマートフォン写真はスマートフォン
Send Only、NASReceive Onlyにする。 - 仕事用ドキュメントとメモは
Send & Receiveにする。 - 資料配布フォルダーは NAS
Send Only、他デバイスReceive Onlyにする。 - NAS 上の重要フォルダーでバージョン管理を有効にする。
- コードとキャッシュディレクトリには Ignore Patterns を設定する。
- NAS 自体にもスナップショットまたは別場所へのバックアップを用意する。
この構成を作っておけば、新しいデバイスやフォルダーを追加するときも、既存のルールに沿って入れるだけで済みます。同期関係を毎回考え直す必要はありません。
まとめ
Syncthing は自由度が高いツールですが、自由度が高いほどルールが必要です。
複数デバイス、複数フォルダーの環境では、フルメッシュ同期はおすすめしません。より安定するのは、NAS または常時稼働するパソコンを中心ノードにし、Folder ID、パス、バージョン管理を統一し、フォルダー種別でバックアップ、双方向同期、資料配布を分ける方法です。
こうすれば Syncthing の P2P 能力を保ちながら、日常管理を 1 台の中心デバイスに集約できます。デバイスやフォルダーが増えても、同期関係が混乱しにくくなります。