Syncthingを使ってみる

2023年1月13日



クラウドストレージについて

複数のコンピュータ間でファイルを同期させるものとして、いわゆるクラウドストレージがある。初期のものとしては、DropBox、その後雨後の筍のように同様のサービスが出現した。SugarSync、4Sync、box、Google Drive、OneDrive、MEGA、iCloud、オープンソースのNextCloud、まさに数え切れないほどある。

しかし、エドワード・スノーデンが指摘したように、DropBoxの内容はすべて見られているし、他の巨大ITによるクラウドストレージもすべて内容が見られていることだろう。安全なのは、オープンソースで誰でも自分自身のサーバにインストールできるNextCloud(及びその前身のOwnCloud)ぐらいと思われる。

これらのクラウドストレージでの同期方式はすべて同じだ。あるPCのあるフォルダを同期対象としておくと、そこへの追加・編集・削除が自動的にクラウドストレージに反映され、そこに同期している別のPCの同期フォルダもまた、それと同じ内容になるというわけだ。

あるいは、たとえ一台の場合でも、何かあったときのバックアップを自動でとってくれる。

しかし、いったん「中央サーバ」を介さないといけないし、その中央サーバは自身で立ち上げたものでないといけない。でないと、巨大ITに中身が見られてしまう。これは初心者には敷居が高い。

自分でドメインをとってWordpress等でウェブを立ち上げている人でも、このやり方は全く検討もつかないだろう。Lolipop等の一般的なウェブ用途のサーバでは、NextCloudなどのサービスは起動できないからだ。これには一般的なサーバマシン全体の管理技術が必要になる。自分専用、小規模なものなら、通常はVPS(Virtual Private Server)を使うことだろう。

Syncthingのやり方

驚くべきことに、Syncthingでは、中央サーバが必要無いのだという。同期させたいパソコンAとBがあれば、中央サーバを介さずに直接同期してしまうのだという。本当にそんなことができるのだろうか?

以下はこの記事シリーズで最終的に作成した「同期コネクション」図である。サーバ無しに直接的に、指定されたフォルダをデバイス間で同期させることができる。

Apple製品用

この記事シリーズで取り上げるのは、Windows、Linux Mint、Android互換のGrapheneOSである。

残念ながら、iPhone(iOS)版は無いようだが、Macでは使えるようだ。https://syncthing.net/downloads/のsyncthing-macosというものである。How To Sync Transfer Files From Steam Deck To macOS (Mac) Syncthing TutorialSyncthingを使って、無料でObsidianの保管庫(Vault)を2つのデバイス間で同期するに説明がある。

Windowsどうしで同期してみる

ここでは、二つのWindowsマシンの間で一つのフォルダを同期させてみる。

一つのWindows(Natasha)へのインストールと同期フォルダの作成

https://github.com/canton7/SyncTrayzor/releases/tag/v1.1.29にインストーラがあるので、64ビット用を二つのWindowsマシン(Natashaと名付けてある)にダウンロードしてインストールする。SyncTrayzorSetup-x64.exeというファイル名だ。

インストールはNextを押していくだけだが、「Create Desktop Shortcut」にはチェックしておいた。次に勝手に起動するが、次は一応許可しておく、プライベートネットワークだけなので。

次は協力したければYES、さもなければNO。どちらでもよい。

次に以下の文言だが、このパソコンは自分専用なので、必要ない。単にOKする。

次にここなのだが、Default Folderというものがあって、Unshared(共有されていない)ということのようだ。

クリックしてみると、デフォルトは、c:\Users\ユーザ名\Syncになっている。

このままでも良いのだが、C:ドライブの容量が小さいので、D:ドライブに適当なものを作成してみる。

Editして、フォルダパスを変更してあげればいい。と、思ったのだが、どうも変更はできないようだ。Add Folderして、名前をSyncFolder、パスをD:\SyncFolderにした新たなものを作成する。このとき、Folder IDというのが勝手に生成されている。

なぜかDefault Folderの方はFolder IDが「default」になっているのだが、これで大丈夫なのだろうか?–>大丈夫だった。同期させるには、後述の「デバイスID」が必要になる。

ブラウザGUI

以上は通常のアプリ画面で行ったわけだが、これを閉じてしまっても良く、バックグラウンドで動作し続ける。これはタスクバーアイコンから再度表示させることができる。

この他に、ブラウザGUIもあり、これはhttp://localhost:8384/でアクセスできる。なぜかこちらの方がより日本語化されている。

赤枠の中がデバイスIDなのだが、実はこれは、ごく一部を表示してるにすぎない。クリックすると、以下が表示される。

もう一台のWindows(UltraMan)にインストールし、同期させてみる。

もう一台のWindows(UltraManと名付けてある)に同じことをし、以下を行う。一台目のデバイスIDを与え、名前(この場合はNatasha)を入力

Sharingを見てみると、なぜかDefault Folderしか対象になっていない。これは共有したくないのでチェックしないまま、SAVE。

すると、Natasha側に以下のような表示がされる。たとえデバイスIDを知ってても勝手には接続できないようだ。Natasha側のデバイス追加を行う。

さらに以下の画面になる。

共有タブを開き、SyncFolderの共有チェックをして、保存。パスワードは不要だろう。

Natasha側は以下の表示になる。

UltraMan側は以下の表示になり、接続されたようだが、SyncFolderの同期はどうなってるのか?

しかし、しばらくまってると以下の表示が出るので、Addする。

次の画面になる。UltraMan側での場所を自由に決められるので、これもD:\SyncFolderにして保存する。

ちゃんと同期しているか?

これで、二つのWindowsはそれぞれ以下の表示になる。Natasha側はウェブGUIの表示、UltraMan側は、あえてアプリ表示のままである。

ごく普通にDropBoxのように同期できている、全くサーバの仲介無しにである。これはすごい!以下のいじわるな実験も行ってみたが、全く問題無い。

  • 二つのWindowsは同じ光回線の同じルータに接続している。それぞれ、mullvadのVPNを使っており、Natashaは東京出口、UltraManは大阪出口を使っている。
  • Natashaの方を光回線のルータから切断し、携帯キャリアの方にテザリングで接続する、VPNの出口を東京のままにする。

これでもちゃんと同期している、全く問題無い。原理がわかってる人からすれば当たり前なのだろうが、こちらとしては驚愕だ。DropBoxやらGoogle Driveやらは、もう必要無いではないか!

※当然だが、大量のファイルを同期させる場合には、同じLAN内(簡単に言えば、同じルータに接続)にいた方がよい。異なるネットワークの場合には、リレーサーバというものが使われ、非常に遅くなるそうだ。

まとめ

実は私の場合、Natashaはノートパソコンで常に持ち歩き、UltraManは自宅に据え置きで常に電源ONでネット接続している。このSyncthingを使えば、いわゆるクラウドストレージなど使うことなく、どこにいてもNatashaのバックアップを常にUltramanにとれることになる。

一般の方は、二台もパソコンを持っていないがゆえに、監視されてしまう巨大ITのサービスを安易に使ってしまっているが、このシステムを知れば、状況は変わってくるだろう。

Syncthingを使ってみる、その2に続く。