Ubuntu20.04にSyncthingをインストールして使用する方法

Syncthingは、ローカルネットワークまたはインターネット上のリモートデバイスからのデバイス間でファイルを同期するための無料のオープンソースプログラムです。 ピアツーピアアーキテクチャを使用し、継続的なファイル同期により、完全に自動化された方法でデバイス間で直接データが交換されます。

Syncthing ファイルとディレクトリの同期をリアルタイムで維持するために使用できます。 複数のデバイス間のすべてのデータ送信は安全であり、TLSで暗号化されています。

Syncthingの主な機能は次のとおりです。

  • LDAP認証のサポート。
  • 一方向同期のサポート。
  • 同期速度が速い。
  • CLIとGUIの両方を使用する
  • Linux、Android、Unix、Solaris、Windows、Mac OSXで利用可能なクロスプラットフォーム。

このチュートリアルでは、 Syncthingをインストールします の上 Ubuntu 20.04

前提条件

  • Ubuntu20.04がインストールされている2台のサーバー。
  • のユーザー sudo およびルートアクセス。
  • 2つの構成済みパブリックIPアドレス。

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

Syncthingは公式リポジトリで利用できます。 インストール手順に従ってSyncthingリポジトリを追加し、Ubuntuにインストールします。

まず、次のコマンドでシステムパッケージを更新します。

apt update

次のコマンドを使用して、すべての依存関係をインストールします。

apt-get install gnupg2 curl apt-transport-https

リリースキーを追加してダウンロードします。

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

次のコマンドを使用して、SyncthingリポジトリをAPTに追加します。

echo "deb https://apt.syncthing.net/ syncthing release" > /etc/apt/sources.list.d/syncthing.list

完了したら、システムパッケージをもう一度更新し、 Syncthingをインストールします パッケージ:

apt-get update
apt-get install syncthing

Syncthingのバージョンを確認してインストールを確認します。

syncthing --version

出力:

syncthing v1.18.1 "Fermium Flea" (go1.16.6 linux-amd64) [email protected] 2021-07-30 12:41:57 UTC [noupgrade]

同様の出力が得られた場合、Syncthingは正常にインストールされています。

ノート: 他のサーバーでこれらの同じインストール手順を繰り返す必要があります。

Systemdユニットファイルを作成する

次のステップは、Syncthingサービスを管理するためのsystemdユニットファイルを作成することです。

次のコマンドを使用して、/ etc / systemd / system /にファイルを作成します。

nano /etc/systemd/system/[email protected]

構成ファイルに次の行を追加します。

[Unit]
Description=Syncthing - Open Source Continuous File Synchronization for %I
Documentation=man:syncthing(1)
After=network.target

[Service]
User=%i
ExecStart=/usr/bin/syncthing -no-browser -gui-address="0.0.0.0:8384" -no-restart -logflags=0 Restart=on-failure
SuccessExitStatus=3 4
RestartForceExitStatus=3 4

[Install]
WantedBy=multi-user.target

の [Service] 一部、一列に -gui-address="0.0.0.0:8384" 最初のサーバーのパブリックIPアドレスを追加し、同じ8384ポートのままにします。

Save 構成、および close ファイル。

次に、systemdデーモンをリロードして、構成を適用します。

systemctl daemon-reload

デーモンがリロードされた後、次のような同期サービスを開始します。 ユーザーを指す 次のコマンドで。

systemctl start syncthing@yourUser

Syncthingサービスのステータスを確認します。

systemctl status syncthing@yourUser

サービスはアクティブ(実行中)である必要があります。

Synchtingサービスはポート8384でリッスンします。これは、ssコマンドを使用して確認できます。

ss -antpl | grep 8384

出力:

LISTEN 0 4096 45.79.208.51:8384 0.0.0.0:* users:(("syncthing",pid=13837,fd=20))

ノート: 他のサーバーに対しても同じ手順を繰り返します。

SyncthingWebインターフェイスの構成

Webブラウザーを開き、URLを使用してSyncthingWebインターフェースにアクセスします。

https://first-server-ip:8384
https://second-server-ip:8384

Syncthing WebInterfaceはポート8384を使用します。

ログイン後、次のメッセージが表示されます。

次に、[アクション]>[設定]>[GUI]に移動して、ユーザー名とパスワードを設定し、[GUIにHTTPSを使用する]オプションを有効にします。

SyncthingGUI構成

クリックしてください Save ボタンをクリックすると、ログイン用の新しいクレデンシャルを入力するように求めるSyncthingログインページにリダイレクトされます。

ログイン資格情報を同期する

ご覧のとおり、サインイン後、接続はHTTPSで保護されています。

ノート: 2番目のサーバーでもこのプロセスを繰り返して構成します。

デバイスの接続

ディレクトリを同期するには、両方のサーバーのデバイスIDをマージして接続し、各サーバーのデバイスIDを別のサーバーに追加してファイルを同期する必要があります。

これを行うには、[アクション]>[両方のサーバーでIDを表示]に移動します。 次のデバイスIDとQRコードが表示されます。

server1 IDserver1 ID
server2 ID

次に、最初のSyncthingサーバーに移動します。 リモートデバイスのセクションがある下部にある[+リモートデバイスの追加]ボタンをクリックします。

add-first-device.png

2番目のサーバーのデバイスIDを入力し、をクリックします Save ボタン。 オプションで、デバイス名を追加して、見やすくすることもできます。

2番目のサーバーで、同じ手順を繰り返します。 リモートデバイスの追加に移動します。

2番目のデバイスを追加します

そして、最初のサーバーからデバイスIDを追加し、をクリックします。 Save ボタン。

接続されているデバイスのリスト

デバイスが接続されたことを両側から確認します。

ディレクトリを同期する

リモートデバイスのピアリングが成功したら、[フォルダ]セクションを見つけて、[+フォルダの追加]ボタンをクリックします。 次の新しいウィンドウが表示されます。

フォルダーを追加

一般セクションのフォルダラベルにバックアップフォルダ名を入力します。 次に、[カードの共有]セクションに移動すると、次の画面が表示されます。

このフォルダを共有するには、デバイスにチェックマークを付けます。 私の場合、名前は server2、をクリックし、 Save ボタン。

次に、2番目のサーバーに移動し、[すべて再スキャン]ボタンをクリックします。 次の画面と、この新しいフォルダを追加するための新しいポップアップメッセージが表示されます。

[追加]ボタンをクリックして、最初のサーバーで共有されるバックアップフォルダーを追加します。 次の画面が表示されます。

同期されたディレクトリ

これで、フォルダバックアップが同期されて最新であることがわかります。

最初のサーバーのバックアップフォルダでファイルを作成または変更すると、それらは自動的に2番目のサーバーに同期され、そのバックアップフォルダ内のすべての新しいディレクトリとファイルが他のサーバーにミラーリングされます。

送信専用フォルダーと受信専用フォルダーの構成

Syncthingのもう1つの優れた機能は、ペアのサーバーを送受信するように構成できることです。また、サーバーを送信のみと受信のみに指定することもできます。

[フォルダ]セクションに移動し、[必要なバックアップフォルダを選択]をクリックして[編集]ボタンをクリックし、[詳細]セクションカードに移動します。 次の画像が表示されます。

そして、送信専用/受信専用のフォルダタイプを選択し、をクリックします Save ボタン。

スキャン間隔の調整を構成する

CPUを解放し、同期の変更を常に監視する必要がない場合は、変更の監視を無効にして、変更を同期する分数、時間数を手動で設定できます。

スキャン間隔

systemctlサービスの検証

server1またはserver2のいずれかで目的のデバイスに移動し、systemctlサービスのステータスを確認して、次のコマンドでバックエンドでこれがどのように機能するかを確認します。

sudo systemctl status syncthing@yourUser

出力。

[email protected] - Syncthing - Open Source Continuous File Synchronization for linoxide
Loaded: loaded (/etc/systemd/system/[email protected]; disabled; vendor preset: enabled)
Active: active (running) since Wed 2021-08-25 13:46:53 UTC; 1h 4min ago
Docs: man:syncthing(1)
Main PID: 15543 (syncthing)
Tasks: 13 (limit: 1071)
Memory: 29.2M
CGroup: /system.slice/system-syncthing.slice/[email protected]
├─15543 /usr/bin/syncthing -no-browser -gui-address=45.79.208.51:8384 -no-restart -logflags=0
└─15548 /usr/bin/syncthing -no-browser -gui-address=45.79.208.51:8384 -no-restart -logflags=0
Aug 25 13:52:58 li1307-51 syncthing[15543]: [6TZM3] INFO: Device BPENPLJ-L65BS5D-5HN7UL5-RNI3DQR-YZOR2LB-YFW7BKF-6LMWFXV-A4E3RQY client is "syncthing v1.18.1>
Aug 25 13:52:58 li1307-51 syncthing[15543]: [6TZM3] INFO: Connection to BPENPLJ-L65BS5D-5HN7UL5-RNI3DQR-YZOR2LB-YFW7BKF-6LMWFXV-A4E3RQY at [2600:3c02::f03c:9>
Aug 25 13:53:12 li1307-51 syncthing[15543]: [6TZM3] INFO: Established secure connection to BPENPLJ-L65BS5D-5HN7UL5-RNI3DQR-YZOR2LB-YFW7BKF-6LMWFXV-A4E3RQY at>
Aug 25 13:53:12 li1307-51 syncthing[15543]: [6TZM3] INFO: Device BPENPLJ-L65BS5D-5HN7UL5-RNI3DQR-YZOR2LB-YFW7BKF-6LMWFXV-A4E3RQY client is "syncthing v1.18.1>
Aug 25 14:13:42 li1307-51 syncthing[15543]: [6TZM3] INFO: Adding folder "Backup" (svkz5-mdnbo)
Aug 25 14:13:42 li1307-51 syncthing[15543]: [6TZM3] INFO: No stored folder metadata for "svkz5-mdnbo"; recalculating
Aug 25 14:13:42 li1307-51 syncthing[15543]: [6TZM3] INFO: Ready to synchronize "Backup" (svkz5-mdnbo) (sendreceive)
Aug 25 14:13:42 li1307-51 syncthing[15543]: [6TZM3] INFO: Completed initial scan of sendreceive folder "Backup" (svkz5-mdnbo)

結論

このチュートリアルでは、Ubuntu20.04でディレクトリを同期するためにSyncthingをインストールする方法を学びました。 3つ以上のデバイスを使用して同期し、すべてのマシンのディレクトリを最新の状態に保つことができます。

コメントセクションでSyncthingを使用した経験を共有してください。