こんにちは、tamateです。
複数のパソコンを使っていると、データの同期が大変ですよね。
使うたびにUSBや外付けSSD経由でデータを移動するのはもちろん大変ですし、クラウドやNAS上にデータを置いておくのも使ってみると不便な部分もあります。
そこで今回は「Syncthing」というソフトを使って、自動でデータの同期ができるようにしました。データ管理が劇的に楽になりましたので、設定や注意点を含めて紹介していきます。
それでは見ていきましょう!
Syncthingとは #
Syncthingは、オープンソースのファイル同期システムです。複数のコンピュータ間でデータを同期することができます。
……と聞くと、「サーバーを立ててそこにデータを保存する形なの?」とか、「月額料金が必要になるんじゃないの?」と思うかもしれません。
ですが、Syncthingはコンピュータ同士で直接通信してファイルを同期するため、(電源が入っていれば)サーバを用意する必要がありません!また、コンピュータのストレージをそのまま送信する仕組みのため、容量も無制限です。
これをマルチプラットフォーム(Windows, macOS, Linux)で、完全無料で使うことができます!また、サードパーティ製ですがモバイル版(Android, iOS)もあるようです。
他の同期方法との違い #
自宅に置いているデスクトップと外出先で使うノートなど、複数のコンピュータでデータを同期する方法はいくつかあると思います。
USBメモリ、外付けSSD #
まず思いつくのはUSBメモリや外付けSSDを使ってデータを移動する方法ですね。速度は高速ですが、毎回デバイスを繋いで、エクスプローラを開いてコピーするのはなかなか面倒です。
USBメモリや外付けSSD側にデータ本体を置いておくと、内蔵SSDよりも若干ファイルの操作が遅くなりますし、USBメモリや外付けSSDから毎回パソコンにコピーして使う場合はどのファイルが最新版かがわからなくなってしまいます。
NAS・クラウドストレージ #
NASやクラウドストレージもデータを共有するには便利です。しかしこれらもUSBメモリ・外付けSSDと同様に、ファイルの操作が遅かったりどれが最新版かわからなくなるという問題点があります。
またクラウドストレージは毎月料金がかかりますし、NASは専用のNASとHDDを買う必要があります。
私の現在の構成 #
私はデスクトップPC(Windows)、ノートPC(Windows)、自宅サーバ(Proxmox上のDebian)の3台にSyncthingを入れています。
サーバを用意する必要がないのがSyncthingの良いところではあるものの、その場合、同期するのにそれぞれのPCの電源を入れておく必要があります。
サーバを用意しておけばそれに対して常に同期するようになるので、パソコンの電源の状態を気にしなくても大丈夫になります。
なお、Syncthingは標準でグローバル探索機能やリレーサーバーを使うことができるため、外出先からそのままインターネット経由で同期することも可能です。(設定で「グローバル探索」と「中継サーバー経由の通信を有効にする」をオフにすればLAN内のみで通信することもできます)
私はWireguardを利用して外出先からのアクセスでもLAN内で閉じるようにしていますが、VPNを使っていなくても外出先で同期できるのはいいですね!
インストールして使ってみよう #
インストール #
では実際にSyncthingをインストールして使ってみましょう!
公式サイトからダウンロードすることができます。
私はWindowsPCにはSyncTrayzor(GitHub)を入れています。SyncTrayzorはWindowsのトレイに常駐してファイルを同期してくれます。Syncthing公式サイトからもSyncTrayzorのGitHubページに飛ぶことができます。
Debian/Ubuntuへのインストール方法は https://apt.syncthing.net/ で解説されています。
初期設定 #
Syncthingの管理画面へはブラウザからアクセスできます。http://localhost:8384(またはhttp://<IPアドレス>:8384)にアクセスしましょう。管理画面はこのような画面です。

まずは共有対象となるフォルダを指定します。
「フォルダーを追加」からフォルダ名やフォルダパスを指定して保存すると、同期するフォルダを指定することができます。重要な設定をいくつか解説します。

-
ファイルのバージョン管理
他のコンピュータで削除されたファイルを保持しておくことができる機能です。ゴミ箱へ移動したり、時間を決めてその時間だけ保持しておく、などの設定が可能です。
-
無視するファイル名
Syncthingで同期しないフォルダやファイルを指定することができます。どんなフォルダを同期対象にするかにもよりますが、私は
.gitignoreで無視するようなキャッシュファイルや一時ファイルを指定しています。 -
高度な設定 → パーミッションを無視する
WindowsとLinuxでファイルを同期する際はこのオプションを付けましょう。これをつけないとファイルを変更するたびに競合します。(一敗)
「接続先デバイスを追加」から、フォルダを同期するPCを指定できます。同じLANにあれば、候補が出てくるはずです。

共有タブから同期したいフォルダを選択します。

保存を押すと、先ほど接続先に指定したPCで、デバイスを追加するか確認するダイアログが出ます。ここでデバイスを追加すれば、指定したフォルダが同期されるようになります。

注意点 #
実際に使っていた中で気になった点を解説します。
新規コンピュータを追加するときの注意 #
新しいコンピュータをデータ同期のグループに入れるときは、「受信のみ」の設定にして同期終了後に「送受信」に変更したほうがいい気がします。
実は誤って別のフォルダを指定してしまい、想定と違うデータが同期されそうになったことがあります……。幸いすぐに停止したため、不要なファイルがいくつか追加されただけで済みましたが、最悪の場合はもともとあったファイルが消えてしまっていたかもしれません……。
おわりに #
Syncthing、いかがだったでしょうか。
複数台のパソコンを使っているとファイルの管理が複雑になりますが、このようなソフトウェアを使うことで簡単に管理できるようになります。
無料でファイルの同期が非常に楽になりますので、ぜひ使ってみてください!