最近なんとなくorg-modeでタスク管理をしています。1台のマシンからタスク管理をしている内は普通に快適なんですが、複数のマシンでタスク管理をしだすと、ファイル同期が課題になります。Samba?WebDAV?sshfs?Google DriveやOneDrive、NextCloudなんかが選択肢に上がってきますが、Linuxでマウントするのも面倒なので、今回はSyncthingで同期してみたいと思います。
Syncthing
OSSのファイル同期ツールです。Linux、MacOS、Windows、Androidも対応しています。
コマンドから設定が可能ですが、WebUIを備えていてブラウザからも設定ができます。フォルダごとに誰に共有するか、共有するときにパスワードが必要か、 など細かく設定できます。
使ってみる
何はともあれ使ってみましょう。
今回はMac miniとMac miniの中で起動したUbuntu 24.04の環境でファイルを同期してみます。
まずはMacから
brew install syncthing
インストールはこれだけです。Syncthingを起動するにはターミナルエミュレータでsyncthing
コマンドを実行するか、brewのサービスとして起動します。今回はバックグラウンドで起動したいのでbrewで実行します。
brew services start syncthing
Syncthingが起動できたら、WebUIにアクセスして設定画面が見られるか確認してみてください。
初回起動時は使用状況のレポートについて聞かれます。
プラットフォーム、フォルダーのサイズ、アプリケーションのバージョンなどが集計されこちらで公開されるそうです。公開されて困る方は「いいえ」を選択しましょう。
「ユーザー名とパスワードを設定」の設定は必要に応じて設定してください。
次の設定でこのマシンにセットされているIDが必要になるので、右上のメニューから「IDを表示」を選らんで、IDをコピーしておいてください。
Ubuntuで
お次にUbuntuにインストールします。
sudo apt install syncthing
特権ユーザーで誰が共有できるかなどをコントロールする場合はこちら
sudo systemctl enable syncthing@<username>.service sudo systemctl start syncthing@<username>.service
systemctl enable --now
を使って有効化と同時にサービスを開始してもいいです。
特定のユーザーだけが起動できればいい場合はこちら
systemctl --user enable syncthing.service systemctl --user start syncthing.service
私は後者で起動を設定します。
起動に成功すると~/Sync
ディレクトリが作成されているはずです。こちらがデフォルトの共有ディレクトリになります。
どのような値がセットされているかは以下のコマンドで確認できます。
syncthing cli config folders default path get
このディレクトリを変更する場合はこちら
syncthing cli config folders default path set /path/to/sync/folder
同期先のデバイスを登録します。
syncthing cli config devices add --device-id <WebUIでコピーしたID>
共有するフォルダにもデバイスを登録します。
syncthing cli config folders default devices add --device-id <WebUIでコピーしたID>
行ったり来たり
登録が完了したら、先ほど確認したWebUIに戻ると「新規デバイス」のポップアップ?が表示されていると思います。
こちらからデバイスの追加を行なってください。
もし「新規デバイス」が表示されていない場合は、以下のコマンドを接続元(今回の場合はUbuntu)で実行してIDをコピーしてください。
syncthing -device-id
WebUIに戻って「接続先デバイスを追加」からコピーしたIDを「デバイスID」にペーストして接続してください。
画像にも写っていますが、「近くに検出された以下のデバイスの一つを選択できます。」という項目にデバイスが出てきているかもしれません。こちらをクリックしてデバイスIDを指定してもOKです。
フォルダーの設定をしていきます。
WebUIから「Default Folder」をクリックすると編集ボタンが出てくるので編集に進みます。
共有タブに進むと誰に共有するかが選択できるので、共有したいデバイスにチェックをつけて保存します。
これで設定ができましたので、~/Sync
にファイルを追加したり削除したりして同期されるか確認してみてください。
まとめ
SambaやWebDAVは設定自体が面倒でしたが、Syncthingは起動してデバイスを登録するとすぐ使えるようになるのでかなり楽でした。sshfsでもよかったといえばよかったのですが、Syncthingくらい何も考えずに同期できるのはいいですね、しばらく使います。