とことんDevOps | 日本仮想化技術のDevOps技術情報メディア

DevOpsに関連する技術情報を幅広く提供していきます。

日本仮想化技術がお届けする「とことんDevOps」では、DevOpsに関する技術情報や、日々のDevOps業務の中での検証結果、TipsなどDevOpsのお役立ち情報をお届けします。
主なテーマ: DevOps、CI/CD、コンテナ開発、IaCなど

開催予定の勉強会

読者登録と各種SNSのフォローもよろしくお願いいたします。

Syncthingでファイル同期

最近なんとなくorg-modeでタスク管理をしています。1台のマシンからタスク管理をしている内は普通に快適なんですが、複数のマシンでタスク管理をしだすと、ファイル同期が課題になります。Samba?WebDAV?sshfs?Google DriveやOneDrive、NextCloudなんかが選択肢に上がってきますが、Linuxでマウントするのも面倒なので、今回はSyncthingで同期してみたいと思います。

Syncthing

github.com

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にアクセスして設定画面が見られるか確認してみてください。

http://127.0.0.1:8384/

初回起動時は使用状況のレポートについて聞かれます。

プラットフォーム、フォルダーのサイズ、アプリケーションのバージョンなどが集計されこちらで公開されるそうです。公開されて困る方は「いいえ」を選択しましょう。

「ユーザー名とパスワードを設定」の設定は必要に応じて設定してください。

次の設定でこのマシンにセットされている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くらい何も考えずに同期できるのはいいですね、しばらく使います。