複数デバイス間でローカルのファイルを無制限に同期できるSyncthingをLinuxで使用する手順

公開日:2019/12/23 更新日:2019/12/23
複数デバイス間でローカルのファイルを無制限に同期できるSyncthingをLinuxで使用する手順のサムネイル

はじめに

Syncthingはローカルにあるファイルを複数のデバイス間で同期することができるオープンソースソフトウェアです。DropboxやGoogle Driveのようにクラウド経由でファイルを同期するのではなく、ローカル同士で同期します。同じLAN内に同期するデバイスがなければいけないわけではなく、インターネット越しでも同期可能です。SyncthingはWindows、macOS、Linux、Android等で使用できます。この記事ではUbuntuとAndroidでSyncthingを使用してファイルを同期するまでをまとめます。

Syncthingについて

Syncthingはオープンソースソフトウェアとして開発が進められており、以下が公式リポジトリです。

github.com

Open Source Continuous File Synchronization

SyncthingはWindows、macOS、Linux、Android等で使用でき、それぞれの専用クライアントアプリも用意されています。Linuxについては多くのディストリビューション用にインストール手順などが公式ドキュメントに記載されています。

docs.syncthing.net

This page lists integrations, addons and packagings of Syncthing created by the community. Like all documentation pages, it’s wiki editable so please do edit and add your own.

前提と環境

この記事ではUbuntuとAndroidにインストールしました。

  • OS : Ubuntu18.04
  • Android : 9

Windowsの場合には「SyncTrayzor」というクライアントアプリが公開されているので、これを公式リポジトリのリリースページにあるexeファイルをダウンロードして実行することでインストールできます。 インストール手順については別途以下にまとめたので必要な方は見てみてください。

www.virment.com

ローカルのデバイス同士でファイルを同期、共有できるSyncthing用のクライアントアプリをWindows10にインストールしたのでその手順をまとめます。

SyncthingをUbuntuにインストールする

SyncthingをUbuntuにインストールするには、以下のコマンドを順番に実行します。以下は公式ドキュメントの手順に従っています。

# PGP keyの追加
$ curl -s https://syncthing.net/release-key.txt | sudo apt-key add -

# "stable"(安定版)チャネルをAPTのソースに追加
$ echo "deb https://apt.syncthing.net/ syncthing stable" | sudo tee /etc/apt/sources.list.d/syncthing.list

# アップデートしてSyncthingをインストール
$ sudo apt update
$ sudo apt install syncthing

バージョンが表示されればインストール完了です。

$ syncthing --version
syncthing v1.3.2 "Fermium Flea" (go1.13.4 linux-amd64) deb@build.syncthing.net 2019-11-24 08:33:58 UTC

Syncthingを起動する

以下のようにメニューから「syncthing」と検索すると、2つのアイコンが表示されると思います。

syncthing-icon.png

上記のアイコンの内、まずは「Start Syncthing」をクリックしてSyncthingを起動します。何も表示されませんが、その後でもう1つのアイコン「Syncthing web」をクリックします。 「Syncthing web」をクリックすると、ブラウザが開いてSyncthingのダッシュボードが表示されます。初回だと以下のように匿名レポートの送信について確認ダイアログが表示されるので、匿名レポートの送信が問題なければ「はい」、送信したくなければ「いいえ」をクリックします。

dialog-for-report.png

以下がSyncthingのダッシュボードです。

syncthing-dashboard.png

私の環境では、上記のように「Error on Folder "Default folder" (default) : ~」というようなエラーが表示されていましたが、「OK」をクリックしてそのまま使用できています。 このダッシュボードから、同期したい端末のデバイスID等を追加して、デバイス間でファイルを同期させることができます。この記事では、試しにAndroid機にSyncthingアプリをインストールし、それをUbuntuと同期させてみます。 そのためにまずAndroid側にもSyncthingアプリをインストールする必要があるので、その手順を載せます。

AndroidにSyncthingアプリをインストールする

AndroidアプリではGoogle Playストアで「syncthing」と検索し、以下のように「Syncthing」をインストールします。

android-syncthing-app.png

インストール後に開くと以下のような画面が表示されますので「続行」をクリックします。

syncthing-first-page.png

次にSyncthingアプリへのストレージへのアクセス許可の設定です。以下のように「アクセス許可を付与する」をタップし、さらに確認のダイアログが表示されるので「許可」をタップします。

allow-storage-access.png

「アクセス許可を付与する」をタップする

dialog-file-access.png

「許可」をタップする

上記が完了したら右下にある「続行」をタップして進みます。

tap-next.png

次に位置情報へのアクセス許可の設定です。Syncthingでは、「指定した特定のWiFiネットワークに接続している場合にのみ同期する」という設定が可能です。そしてこの設定を有効化するには位置情報が必要となります。もしこの設定を使う予定がない場合は位置情報へのアクセス許可は不要です。ここでは許可します。

allow-location-access.png

「アクセス許可を付与する」をタップする

dialog-location-access.png

「許可」をタップする

上記が完了したら「完了」をタップして初期設定が完了です。

compelete-settings.png

UbuntuとAndroidのSyncthingで同期させる

デバイス間でSyncthingを通してファイルを同期する手順をまとめます。手順としては、Android側のデバイスIDを確認し、そのデバイスIDをUbuntu側のSyncthingに登録します。その後、Android側で承認する流れになります。

Android側のデバイスIDを確認する

Android側のSyncthingで以下のように左上にあるメニューをタップします。

tap-menu.png

メニュー内にある「デバイスIDを表示」をタップします。

menu-device-id.png

以下のようにSyncthingのデバイスIDが表示されるので、これをメモします。

your-device-id-edited.png

Ubuntu側でAndroid機のデバイスIDを追加する

Ubuntu側のSyncthingで「接続先のデバイスを追加」をクリックします。

click-add-device.png

以下のように、デバイスIDとデバイス名の入力欄が表示されるので、デバイスIDはメモしたAndroidのデバイスID、デバイス名は自由に入力します。

add-android-device-syncthing.png

なお、「共有」タブでは、共有するフォルダの選択等が可能です。

sharing-settingfs.png

最後に「保存」をクリックしてデバイスの追加が完了です。

save-add-device.png

Android側で追加要求を承認する

再度Android側のSyncthingに戻り、メニュー内の「Web GUI」をタップして開きます。

tap-web-gui.png

以下のように匿名レポートの送信について確認されるのでそれぞれの状況に合わせて選択します。

confirm-report-send-android.png

少し待機すると、以下のようにUbuntu側からのデバイス追加要求について承認するかの確認ダイアログが表示されます。ここで「デバイスを追加」をタップします。なお、このデバイス追加要求のダイアログは、環境にもよりますが1分程かかる場合もあります。

confirm-adding-device-edited.png

以下のようにデバイス名の入力ダイアログが開くので、各自編集するなどして「保存」をタップします。

accept-add-device-and-save.png

Ubuntu側での場合と同様に、「共有」タブで設定を変更することもできます。

sharing-settings-in-android.png

以上の設定が完了すると、UbuntuとAndroid間で指定したフォルダの同期が開始されます。なお、Android側でUbuuntuのデバイスIDを追加してもOKです。どのデバイスからでも他のデバイスの追加作業は可能で同じ流れになります。

フォルダの設定について

以下のようにフォルダの「編集」をクリックするとフォルダのパスや設定変更画面を表示できます。

go-to-folder-settings.png

ここで「高度な設定」タブを開くと、以下のように「フォルダーの種類」という項目があります。

folder-settings.png

この「フォルダーの種類」では「送受信」、「送信のみ」、「受信のみ」を選択できますが、「送受信」を選択しておかないと双方向での同期はされません。言葉の通り「送信のみ」は他のデバイス上の更新を同期しません。「受信のみ」は逆にそのデバイス上での更新は他のデバイスに同期されず、他のデバイス上での更新のみ同期されます。ここは用途に合わせて選択してください。なお、この設定をすでに同期しているフォルダで途中で変更したり、この設定を把握していない状態で同期していたりすると思いがけずファイルを失う可能性もあるので注意してください。

まとめ

Syncthingの使い方をまとめました。実際に使ってみた感じだと、ネットワーク環境等にもよると思いますが、同期自体は一瞬のような感じではなくそれなりに時間がかかる印象です。バックアップデータをクラウドには置きたくないけどローカル内のパソコン等に分散して置いておきたい等の用途に良い選択になると思います。ローカルのストレージサイズがある限り無制限に同期できるので、ローカル内のファイルサーバーと同期させてもいいと思います。

関連記事

開発アプリ

nanolog.app

毎日の小さな出来事をなんでも記録して、ログとして残すためのライフログアプリです。