Syncthingを使ってスマホ→PCへのほったらかしバックアップを設定した話

orepがやった設定だけ見たい方はこちら

スマホの写真って容量いっぱいになったらどうしてます?

周りでもスマホやGoogleフォトの容量が足りなくなったりして「いらない写真を消してる」「写真や動画を撮らないようにしている」という声が想像以上に多く聞かれます。
せっかくあるカメラ機能を使わなかったり、せっかく撮った思い出の写真を削除したり。なんか悲しいなぁと思います。

自分はスマホで写真や動画を撮って容量がパンパンになった頃合いにPCにつなぎコピー&スマホ内削除しています。

さて、ChatGTPさんと相談しながらプログラミングやアプリ設定などを楽しんでいる昨今。

そう言えばスマホ内写真のコピーを自動化できないかなと思い立ち相談してみました。

当初スマホ→クラウド(今回はInfiniCLOUD)に直接バックアップすれば面倒ないかも!と思いFolderSyncを試してみたのですが、InfiniCLOUD側がPROPFIND(一覧取得)を明示的に拒否する仕様だったため使えず。

スマホ→(Syncthing)→PC→(GoodSync)→InfiniCLOUDという形をとることにしました。
前にPCからのコピーは成功してるしね。

Syncthingでほったらかしバックアップ

今回組み立てたいのは、

  • 帰宅してスマホをWiFi接続(自動)し
  • 同じネットワーク内のPCを起動した時
  • スマホからPCに自動的に撮った写真や動画をコピーしてくれる

そんな便利なお願いを叶えてくれる仕組みです。

ほったらかしバックアップ
  • フォルダ構成はこんな感じです。

    Mobile
    ├─ DCIM
    │ └─ Camera
    │ └─ OpenCamera
    │ └─ GooglePhotos
    ├─ Download
    ├─ Movies
    └─ Pictures

参考までに、環境は

  • PC: Windows11 Home 25H2
  • スマホ:Google Pixel 10 Pro XL(Android16)

※ただしこれ結構設定大変だったので、もし同じ動作をするもっと簡単な方法があったら教えて下さい。
↓では続きをどうぞ。

PC側の設定

Syncthingのダウンロード

Syncthing → Downloads → 一番下の Windows Intel/AMD (64‑bit)

Syncthingのダウンロード

zipファイルなので任意のフォルダに解凍→syncthing.exeを起動すると管理画面が表示されます。

Syncthing管理画面

Windowsのスタートアップに加える

Win+R → 「shell:startup」 →Enter

Win+R → 「shell:startup」 →Enter

表示されたフォルダに先程のsyncthing.exeのリンクを作っておきます。次からPC起動と同時にSyncthingも起動してくれるようになります。

スマホアプリ側の設定

Syncthing-Forkのインストールと設定

Syncthing-Fork をインストールします。

Syncthing-Fork

Androidの「設定」→「アプリ」→「Syncthing-Fork」

  • 「権限」→「位置情報」→「常に許可」(これを設定しないと自宅WiFiを認識してくれない時がありました。)
  • 「モバイルデータ使用量」→「バックグラウンドデータ」をON
  • 「アプリのバッテリー使用量」→「バックグラウンドでの使用を許可」→ON

Syncthing-Forkを起動します。

左上≡メニュー→下部「設定」→「実行条件」

  • Wi-Fiでの実行→ON
  • 従量制のWi-Fiで実行→ON(OFFにするべき感じがしますが、ここはONにしないと実行条件に従って動作させようとした時に接続されません。今回最も詰まったところでした。)
  • 指定されたWi-Fiネットワーク上での実行→ON
  • Wi-Fiネットワークを選択→自宅のネットワークを指定
  • モバイルデータ上での実行→OFF
  • デバイスの電源が次のものである場合に実行
    • 「ACとバッテリー電源」→帰宅してPCを起動したらすぐにコピーが始まります。
    • 「AC電源」→PC起動+スマホ充電中のみコピーします。

左上≡メニュー→「デバイスIDを表示」
これでデバイスID(英数字の羅列)とQRコードが表示されたと思います。
本来、PCとスマホはQRコードをカメラで読んで簡単に接続ができるようになっているようですが、今回はうまくいかなかったのでIDを直接コピーしました。Google Keepなどオンラインのメモ帳のようなものがあれば便利ですね。

PC側に戻って設定

管理画面左下の「接続先デバイス」から「一般」タブ

  • デバイスID→先程のデバイスID(英数字の羅列)を貼り付けます。
  • デバイス名→任意。スマホに割り当てる名前です。(ここでは例としてGoogle Pixel 10 Pro XL)

「保存」

スマホアプリ側に戻って設定

Syncthing-Fork「デバイス」タブにパソコン名が表示されたでしょうか。
それをタップして「自動承認」をONにします(任意で「紹介者デバイス」をOFFにしても大丈夫です)。

Syncthing-Fork「デバイス」タブ

フォルダーの設定

※今回Windows側からの設定がうまくいかなかったのでAndroid側からの設定手順を書いておきます。

Syncthing-Fork→「フォルダー」タブ右上の共有フォルダ追加ボタンを押します(「フォルダーを作成」画面に遷移します。)

  • フォルダー ラベル→任意。(ここではDCIM/Camera)
  • ディレクトリー→バックアップ元のフォルダ(ここでは/strage/emulated/0/DCIM/Camera)
  • デバイス→バックアップ先のコンピューター名をON
  • フォルダタイプ→送信のみ(今回はスマホ→PCに片方向コピーする目的で設定しています。)
  • 右上チェックボタンで確定

これでPC側に通知が出るはずです!

「新規フォルダー:(スマホ名)がフォルダー「DCIM/Camera」を共有するよう求めています。新しいフォルダーとして追加しますか?」

新規フォルダー:(スマホ名)がフォルダー「DCIM/Camera」を共有するよう求めています。新しいフォルダーとして追加しますか?

「追加」を押すとフォルダー設定画面が表示されるので、「フォルダーパス」にPC側のバックアップ先を追加します。

するとコピーが始まります。PCで該当フォルダに写真や動画がコピーされているか確認してみましょう。

成功しているようなら、同じ手順でコピーしたいフォルダ設定を加えていきます。

PC側、スマホ側で相手が見つからない?「切断済み」「不活発」の表示が出てファイルがコピーされない?
そんな時に試していただきたい手順です。問題なく動作している場合は設定しなくて大丈夫です。

Windows Defender ファイアウォールを許可

  • Windows11の「設定」
  • 「プライバシーとセキュリティ」
  • 「Windows セキュリティ」
  • 「ファイアウォールとネットワーク保護」
  • 「ファイアウォールによりアプリケーションの許可」
  • 「設定の変更」
  • 一覧のSyncthing→☑ プライベート・☑ パブリック両方にチェック
  • 「OK」

Syncthing-Fork 強制開始

スマホ側Syncthing-Forkの「ステータス」タブ
英文ですが今どうして切断or接続されているか理由が表示されていると思います。
どうしても接続がうまくいかない場合は一旦「実行条件に従う」を「強制開始 実行条件を無視」に変更してみて下さい(最終的な設定にはおすすめしません)。これで動いた場合は設定を見直せば「実行条件に従う」モードでもうまくいくはずです。

蛇足

以上でスマホ→PCへの自動コピー計画は達成です。
後はPCから外付けHDDやクラウドにコピーできたらバックアップもより一層信頼できる強固なものになるでしょう。

注意点としてSyncthingのコピー先として指定されたフォルダの中に「.stfolder」「.stignore」といった隠しファイルが自動的に作成されたので、バックアップする時に除外指定しておくと良いと思います。

タスクトレイにしまい込んで管理画面(http://127.0.0.1:8384/)を自動的にデスクトップに表示しない方法もありましたが、黒画面は非表示にできないし、頑張った割に実益が乏しかったため割愛します。リンクだけ置いときます。

Syncthing Tray

Pixelカメラのウリである動画ブーストは、Googleフォトにアップロードした動画をキレイに加工してくれる機能ですが、スマホから(無加工の動画を)直接PCにコピーする今回の手法だと意味がありません。
加工後の動画をローカル保存したい場合は加工してもらった後にスマホにダウンロードし直すしかないかな?