Day After Day
tsurezure naru mamani...
ANOTHER DECADE

from 2022 when it's begining after/with CORONA Virus.

超!便利同期ソフト Syncthing

9月
8
2024
Back
Alt+HOME


2013年からずっと問題なく使ってきた同期ソフトだが今回サーバーOSをクリーンインストールするに当たり見直してみた。

評判の良さも有ってテストのつもりで導入(完全無料)してみたところ、マニュアル無しでお手軽にセットアップできてしまった。ダウンロードサイトは英語だがソフトは極普通に日本語化されている。少しはまったところを備忘録にした。


Windowsは勿論、Linux、macOS、FreeBSD、OpenBSD、NetBSD、Dragonfly、Illumos、Solaris と何でも対応という雰囲気。なんとAndroidにも対応している。と言うことは撮ってきた写真が家のWiFiの範囲に入った瞬間にPCへ同期されると言うことか。これは便利だ!

(画像をクリックするとDownloadサイトへ)

同じデバイス(つまりPC)内での同期に工夫が必要


簡単に結果を言うと、Syncthing を2インスタンス立ち上げて、2つのフォルダがあたかも別デバイス(本当は別デバイスIDを持つ一つのPC)に有るように設定する。

  1. Syncthing がインストールされているフォルダ (C:\Syncthing) をコピーして2つめの Syncthing と分かる名前 (C:\Syncthing2) にする。

  2. 起動スクリプト(Startupやタスクスケジュールでのコマンド)を次のように記述する。

  3. syncthing.exe -home="C:\Syncthing2\Config"

  4. 同期元のフォルダを設定した Syncthing と、同期先のフォルダを設定した Syncthing2 を別デバイスの時と同様に同期設定する。

フォルダ(Data)内のある一つのフォルダ(Subfolder)だけ同期から外す


この時の要注意点は、Subfolderを同期から外すための設定が同期元の(同期はしないが)残したいデータまで消してしまう危険性が有ること。 必ずバックアップを取った上で設定する。

  1. 先ず、既存の同期フォルダ設定 (Data) から Subfolder を外すための設定をする

  2.   フォルダーの編集 (Data)
    
      	一般		共有	ファイルのバージョン管理	[無視するファイル名]		高度な設定
      
      無視するファイル名のパターンを、一行につき一条件で入力してください。
     ┌─────────────────────────────────────────────────────────┐
     │Subfolder													   │
     │														     │
     │														     │
     │														     │
     └─────────────────────────────────────────────────────────┘
      
    サポートされているパターンのクイックガイド(詳細なマニュアル): (?d)  このファイが中に残っているためにディレクトリを削除できない場合、このファイルごと消してもよいことを示す接頭辞 (?i)  大文字・小文字を同一視してマッチさせる接頭辞 !  条件の否定(つまり、無視しないという意味になります) *  ワイルドカード(単一のディレクトリ無いだけでマッチします) **  多階層ワイルドカード(複数のディレクトリ階層にマッチします) //  行頭で使用するとコメント行になります
    D:\Data\.stignore を編集中 除去 X 閉じる レ保存

    無視するファイル名はフォルダ名を登録しても同様に省かれる。 つまり同期先の容量に余裕が無いなどの理由によって、同期先を変更したいはずなので当然、現在の同期先フォルダ Data の中の Subfolder は手動で削除することになる。

  3. このとき問題が生じる。

  4. 同期先にて、Subfolderが削除されたのを検知した Syncthing は同期元(上で無視設定をした)の Subfolder も削除しようとする。 しかし、「無視せよ」と言われて消せないので同期エラーが発生する。正しい設定が提供されるまでエラーが出続け Data 全体が同期できなくなる。

  5. このときの解決方法は以下の2つ

  6. ① 同期先に無いフォルダ(消されたフォルダ)については同期元でも削除されても良いことを明示的に設定する。
     この方法が、クイックガイドに有る (?d) で、(?d)Subfolder と設定する。
     今回はこの設定をしてしまうとあっという間に元データも喪失する。

    ② 同期エラーが出た時点で同期を一時停止にし、同期元 Subfolder を独立した別の同期フォルダとして新規設定する。
     この別設定をする時には、Subfolder のパスを設定する際、「同期設定Dataの一部のフォルダと重複している」とのメッセージが出るが、警告だけで登録可能。

  7. 目的を達成する方法は②で、同期元 Subfolder は、同期設定 Data の同期先に Subfolder が無くなっても、 別の同期設定(Subfolderだけの)が有るので、同期元の Subfolder は削除してはいけないと判断して エラーにはならず同期完了する。


切断中(不活発)とは? (2024.9.21 追記)


Syncthing を再起動しても、接続を破棄して再構築しても、なにか現状がどこかに記憶されているかの如く、再同期してくれなくなることが有る。 たぶん理由はリモートの為に、リモート先IPアドレスを取得している間、混乱が生じたのではと思っている。

こうなってしまうと構成(フォルダやデバイス)を一旦「除去」して、新たにやり直すしか方法がなくなるのでその手順を備忘録。

  1. 同期元をA同期先をBとして、一旦Aの側でBへの接続先デバイスを「一時停止」にする。

  2. A側の[メニュー]から Syncthing 自体の[再起動]を実行する。

  3. B側でフォルダを[除外]。この時完全を期すならば実フォルダも一旦削除してフォルダを作り直す。

  4. B側でAへのデバイス設定を[除外]する。

  5. B側の[メニュー]から Syncthing 自体の[再起動]を実行する。

  6. A側へ戻って、Bへの接続デバイスを「再開」する。

  7. B側の画面に、Aからの「接続リクエスト」が届くので、了承すると結果としてAへの接続デバイスが生成される。

  8. B側にできたAへの接続デバイスを「編集」し、新たに作成しておいたフォルダを共有に設定する。
これで再同期が開始される。

この現象を避けるために、リモート時はリモートするマシンの Syncthing 接続デバイス下部にて「すべて一時停止」してテストしてみようと思う。
-----> 結果、問題なく稼働中!! 再開させると一分ほどで「最新」となる。(大きな保存無し)

Back
Alt+HOME