Mono Works

チラシのすきま

Syncthingを使ってGemini PDA内でファイル同期

TermuxとAndroid間のファイルのやり取りには、シンボリックリンクを利用していたが、いろいろと面倒だったので、そのうち使わなくなった。Dropboxを使ったファイルのやり取りも考えたが、Dropboxのオフライン機能が使いにくく、実用には至らなかった。

Syncthingは、P2P接続が可能であれば、様々な環境間でファイルを同期できるオープンソースなアプリである。今回は、同じGemini PDA端末上Termuxで起動したSyncthingAndroidで起動したSyncthingとの間でファイル同期できることを確認したので、その手順をご紹介する。

公式サイト:Syncthing

参考:Syncthing - ArchWiki

そういえば、先日より、ブログの記述を「ですます」から「だである」に変えてみた。調子が良ければ、このまま「だである」で書いていこうと思ってる。中の人が変わったとか、そういうことではない。単なる気まぐれである。

Syncthingの準備

Termux側の準備

Termuxでパッケージが用意されているので、下記コマンドでインストール。

pkg install syncthing

常時運用ではないので、必要な時に下記コマンドを実行して、サービスを起動する。

syncthing

Syncthingを起動すると、ブラウザが開き、Web GUIが表示される。Web GUIのデフォルトアドレスは、127.0.0.1:8384となっているが、デフォルトのままだと、同じ端末上で起動するAndroid側のSyncthingのアドレスとバッティングするので、ポート番号を変更する。

右上のメニューから、設定 -> GUIタブを開き、GUI待ち受けアドレスのポート番号を127.0.0.1:8385など適当な番号に変更する。変更後は、いったんシャットダウンして、もう一度起動する。

右上のメニューからIDを表示を選択し、デバイスIDを確認しておく。このデバイスIDがTermux側のSyncthingの識別IDとなる。

Android側の準備

Androidには、Google Playで配布されているアプリがあるので、これをインストール。

Syncthing - Google Play のアプリ

Google Play で手に入れよう

インストール後、アプリを起動すると、左上のメニューからWeb GUIを選択し、Web GUIを表示。

Termux側と同じくデバイスIDを確認しておく。

Syncthingによる最初のファイル同期

今回の例では、Android側に保存している特定ファルダ配下のファイルをTermuxと同期する方法について説明する。

例:Gemini PDAのstorage/emulated/0/draftフォルダ配下のファイル

Android側Syncthingの設定

Web GUIにて、下記の操作を実施。

  1. フォルダー項目のフォルダーを追加を選択
  2. 適当なフォルダー名(例:draft)を入力
  3. フォルダーパスstorage/emulated/0/draftを指定
  4. 保存ボタンをタッチ
  5. 接続先デバイス項目の接続先デバイスを追加を選択
  6. 近くに検出されたデバイスに、Termux側のデバイスIDが表示されているので、これをタッチ
  7. sharingタブを表示して、共有するフォルダーとして、先ほど設定したフォルダ(例:draft)を選択
  8. 保存ボタンをタッチ

Android側の設定を終えたら、Termux側SyncthingのWeb GUIに接続要求が表示される。

Termux側Syncthingの設定

ブラウザに表示されたTermux側SyncthingのWeb GUIで、以下の操作をおこなう。

  1. Andorid側からの接続要求が表示されるので、デバイスを追加ボタンをタッチ
  2. Android側のデバイスIDが入力されているので、そのまま保存ボタンをタッチ
  3. フォルダ(例:draft)の共有を要求されるので、追加ボタンをタッチ
  4. フォルダーパスを同期させたいディレクトリに変更(そのままでもOK)
  5. 保存ボタンをタッチ

以上で、Syncthingの設定は完了。少し待っていると自動で同期が完了して、Termux側にファイルが生成される。

設定後のファイル同期

設定後のファイル同期は、同期が必要な時にTermux側とAndroid側のSyncthingを起動するだけで 、自動的に同期が始まる。Syncthingを起動した状態であれば、同期中のファイルを編集して保存すれば、すぐに同期される。

なお、今回のように同じ端末内での同期であれば、オフライン状態でも設定や同期をおこなうことができる。

設定次第で、いろいろと捗りそう。

おしまい。

コメント

コメントなどありましたら、GitHubのディスカッションへお願いします。(書き込みには、GitHubのアカウントが必要です)
執筆者
"ぽぽろんち" @pporoch
pporoch120
Mono Worksの中の人。好きなことをつらつらと書き留めてます。
ギターを始めてから 練習動画をYouTubeにアップしてます。ご笑納ください。
"DQX@ぬここ(UD487-754)、コツメ(NO078-818)"
採用案内