TermuxとAndroid間のファイルのやり取りには、シンボリックリンクを利用していたが、いろいろと面倒だったので、そのうち使わなくなった。Dropboxを使ったファイルのやり取りも考えたが、Dropboxのオフライン機能が使いにくく、実用には至らなかった。
Syncthingは、P2P接続が可能であれば、様々な環境間でファイルを同期できるオープンソースなアプリである。今回は、同じGemini PDA端末上のTermuxで起動したSyncthing と Androidで起動したSyncthingとの間でファイル同期できることを確認したので、その手順をご紹介する。
公式サイト:Syncthing
そういえば、先日より、ブログの記述を「ですます」から「だである」に変えてみた。調子が良ければ、このまま「だである」で書いていこうと思ってる。中の人が変わったとか、そういうことではない。単なる気まぐれである。
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で配布されているアプリがあるので、これをインストール。
インストール後、アプリを起動すると、左上のメニューからWeb GUI
を選択し、Web GUIを表示。
Termux側と同じくデバイスIDを確認しておく。
Syncthingによる最初のファイル同期
今回の例では、Android側に保存している特定ファルダ配下のファイルをTermuxと同期する方法について説明する。
例:Gemini PDAのstorage/emulated/0/draftフォルダ配下のファイル
Android側Syncthingの設定
Web GUIにて、下記の操作を実施。
- フォルダー項目の
フォルダーを追加
を選択 - 適当なフォルダー名(例:draft)を入力
- フォルダーパスにstorage/emulated/0/draftを指定
保存
ボタンをタッチ- 接続先デバイス項目の
接続先デバイスを追加
を選択 - 近くに検出されたデバイスに、Termux側のデバイスIDが表示されているので、これをタッチ
- sharingタブを表示して、共有するフォルダーとして、先ほど設定したフォルダ(例:draft)を選択
保存
ボタンをタッチ
Android側の設定を終えたら、Termux側SyncthingのWeb GUIに接続要求が表示される。
Termux側Syncthingの設定
ブラウザに表示されたTermux側SyncthingのWeb GUIで、以下の操作をおこなう。
- Andorid側からの接続要求が表示されるので、
デバイスを追加
ボタンをタッチ - Android側のデバイスIDが入力されているので、そのまま
保存
ボタンをタッチ - フォルダ(例:draft)の共有を要求されるので、
追加
ボタンをタッチ - フォルダーパスを同期させたいディレクトリに変更(そのままでもOK)
保存
ボタンをタッチ
以上で、Syncthingの設定は完了。少し待っていると自動で同期が完了して、Termux側にファイルが生成される。
設定後のファイル同期
設定後のファイル同期は、同期が必要な時にTermux側とAndroid側のSyncthingを起動するだけで 、自動的に同期が始まる。Syncthingを起動した状態であれば、同期中のファイルを編集して保存すれば、すぐに同期される。
なお、今回のように同じ端末内での同期であれば、オフライン状態でも設定や同期をおこなうことができる。
設定次第で、いろいろと捗りそう。
おしまい。
コメント
コメントなどありましたら、GitHubのディスカッションへお願いします。(書き込みには、GitHubのアカウントが必要です)