プログラミング系ブログ

プログラミング系ブログ

プログラムやパソコンパーツ関連のことを、まったりと解説したり、しなかったりするブログです。

どこでも同期! - syncthing の 設定

Raspberry pi 4 に Syncthing をインストールしたので、記事にします。
syncthing は 複数の PC 間での同期を可能にするソフトで、 中央サーバー?がないので、Dropbox や OneDrive 無しで直接 PC 間で同期ができます。家族の写真など、オンラインストレージに入れたくないファイルなどを同期したいときにも使え、ルータも超えて同期してくれます。しかも?無料です。

欠点として、2つの PC で syncthing を同時に起動しておく必要がありますが、本ブログにて、NAS にした raspberry pi は連続稼働中なので、 raspberry pi にsyncthing をダウンロードして中央サーバーっぽく使えば複数の PC 間で、PC を同時に起動していなくても同期対象のフォルダを最新に保てます!便利!

この記事では、

へのインストール&自動起動設定方法を書きます。
Windows へのインストールと、インストール後の設定は Windows 版 も linux 版も変わらないので、割愛し、参考サイトへのリンクのみで途中省略します。

インストール&自動起動設定

Raspberry pi 4

raspberry piVNC を設定し、画面を共有できるようにしておくと Syncthing の設定に必要な長い ID を打ち込まなくていいので便利です。 必須ではないので、 もし設定したい方がいればこちらのサイトが詳しいです。
VNCでPCからデスクトップ画面操作
sudo apt update && sudo apt install -y syncthing

でインストールできます。

インストール後、自動で起動してほしいのですが、 raspberry pi 4 で自動起動させる設定方法がわからなかった (いろいろ試したのですがうまく自動起動しなかった) ため、

sudo nano /home/pi/.profile

で .profile を開き、ファイルの最後に、

if [ -f /proc/$PPID/cmdline ] && [ "$(command cut -d : -f1 < "/proc/$PPID/cmdline")" != "sshd" ]; then
    syncthing -no-browser &
fi

と追記しました。.profile ファイルは、起動時に自動で読み込まれるファイルなので syncthing も raspberry pi 起動時に自動起動します。
ちなみに sudo いらないです。 sudo をつけると管理者権限になってファイルのアクセス権限とかがややこしくなって大変めんどくさいことになります。筆者は一回これでミスっています...。(笑)

[2020-7-26 追記]
上記コードに、if [ -f /proc/$PPID/cmdline ] && [ "$(command cut -d : -f1 < "/proc/$PPID/cmdline")" != "sshd" ]; then ~ fi の部分を追記しました。
ssh で接続したときに設定を再読み込みしないようにするために必要です。これがないと ssh 接続の際、すでに起動している syncthing を二重に起動しようとしてエラーが出てしまいます。
普段 ssh 接続をしていなかったので見落としていました。ごめんなさい。


あとは、

sudo reboot

で再起動してください~。

再起動後は、raspberry pi 4 のデスクトップ画面にて、 f:id:dpcblog:20200401160005p:plain
このように Syncthing Web UI をクリックすれば設定画面がブラウザ上で開きます。

Ubuntu

curl -s https://syncthing.net/release-key.txt | sudo apt-key add -

echo "deb https://apt.syncthing.net/ syncthing stable" | sudo tee /etc/apt/sources.list.d/syncthing.list

sudo apt update

sudo apt install syncthing

と4回コマンドを打てばインストールできます。
インストール後は、自動で起動するように、 f:id:dpcblog:20200401174844p:plain
検索で自動起動と打ち込みます。自動起動するアプリケーションを選択です。

which syncthing

とターミナルに打ち込めば、syncthing の保存場所がわかるので、 自動起動するアプリケーションで追加を選択し、

調べたsyncthingの保存場所 -no-browser -home="/home/アカウント名/.config/syncthing"

として写真のように保存してください。 f:id:dpcblog:20200401174921p:plain
再起動すると syncthing が自動で起動するので、http://127.0.0.1:8384 をブラウザで打ち込めば Web UI にアクセスできます。

Window でのインストール及び Syncthing の設定

Windows へのインストールと PC 間の設定については割愛します。すみません!
こちらのサイトに詳しく載っています!

おまけ

フォルダーを追加するとき、高度な設定で、 f:id:dpcblog:20200401160529p:plain
f:id:dpcblog:20200401165332p:plain

Full Rescan Interval の時間を変更しておくとディスクアクセスが減るので HDD への負荷が減ると思います。
SSD だと変更による恩恵はあまりないと思います。たぶん。
デフォルトは、3600秒 (1時間) なので、筆者は、43200秒 (12時間) or 604800秒 (1週間) にしてます。
この設定に関係なくファイルの更新時には自動で反映されます。
ただし、たま~にファイルの変更が確認されないことがあるので、フォルダの変更頻度に応じてこの項目を設定しましょう!

あと、ファイル数が大きくなることで上手く同期できないことがあるようで、

echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf

で設定を変更し、再度設定を読み込むために、

sudo sysctl -p

として、監視できるファイルの上限を上げておきましょう!

cat /proc/sys/fs/inotify/max_user_watches

で変更が確認できます。

おわりに

頻繁更新するフォルダに VPN でアクセスしたり、USB メモリにいちいちデータを移したりするのは面倒だったので、手間と頻度が減ってとても便利です。
VPN 接続だとネットは多少なりとも遅くなります。
またUSB メモリだと接続端子の着脱回数に寿命がありますし、USB メモリの使用回数が減らせて接続端子の寿命も延びて一石二鳥です。
raspberry pi をお持ちでない方も便利なのでダウンロードして使ってみてはいかがでしょうか?
お読みいただきありがとうございました。