Syncthingは、ローカルネットワークまたはインターネット上のリモートデバイスからのデバイス間でファイルを同期するための無料のオープンソースプログラムです。ピアツーピアアーキテクチャを使用し、継続的なファイル同期により、完全に自動化された方法でデバイス間でデータを直接交換します。
Syncthingを使用して、ファイルとディレクトリの同期をリアルタイムで維持できます。複数のデバイス間のすべてのデータ送信は安全であり、TLSで暗号化されています。
Syncthingの主な機能は次のとおりです。
- LDAP認証のサポート。
- 一方向の同期サポート。
- 高速同期速度。
- CLIとGUIの両方を使用する
- クロスプラットフォームで利用可能:Linux、Android、Unix、Solaris、Windows、MacOSX。
このチュートリアルでは、Syncthingをインストールする方法を学びます。 Ubuntu 20.04 。
前提条件
- Ubuntu20.04がインストールされている2台のサーバー。
- sudoおよびrootアクセス権を持つユーザー。
- 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
[サービス]の部分の-gui-address="0.0.0.0:8384"
の行 最初のサーバーのパブリックIPアドレスを追加し、同じ8384ポートのままにします。
構成を保存して、ファイルを閉じます。
次に、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インターフェースにアクセスします。
http://first-server-ip:8384
http://second-server-ip:8384
SyncthingWebInterfaceはポート8384を使用します。
ログイン後、次のメッセージが表示されます。
次に、[アクション]>[設定]>[GUI]に移動して、ユーザー名とパスワードを設定し、[GUIにHTTPSを使用する]オプションを有効にします。
[保存]ボタンをクリックすると、ログイン用の新しいクレデンシャルを入力するように求めるSyncthingログインページにリダイレクトされます。
ご覧のとおり、サインイン後、接続はHTTPSで保護されています。
注: 2番目のサーバーでもこのプロセスを繰り返して構成します。
デバイスの接続
ディレクトリを同期するには、両方のサーバーのデバイスIDをマージして接続し、各サーバーのデバイスIDを別のサーバーに追加してファイルを同期する必要があります。
これを行うには、[アクション]>[両方のサーバーでIDを表示]に移動します。次のデバイスIDとQRコードが表示されます。
次に、最初のSyncthingサーバーに移動します。リモートデバイスのセクションがある下部にある[+リモートデバイスの追加]ボタンをクリックします。
2番目のサーバーのデバイスIDを入力し、[保存]ボタンをクリックします。オプションで、デバイス名を追加して、見やすくすることもできます。
2番目のサーバーで、同じ手順を繰り返します。リモートデバイスの追加に移動します。
そして、最初のサーバーからデバイスIDを追加し、保存をクリックします。 ボタン。
デバイスが接続されたことを両側から確認できます。
ディレクトリの同期
リモートデバイスのピアリングが成功したら、[フォルダ]セクションを見つけて、[+フォルダの追加]ボタンをクリックします。次の新しいウィンドウが表示されます。
一般セクションのフォルダラベルにバックアップフォルダ名を入力します。次に、[カードの共有]セクションに移動すると、次の画面が表示されます。
このフォルダを共有するには、デバイスにチェックマークを付けます。私の場合、名前は server2 、保存をクリックします ボタン。
次に、2番目のサーバーに移動し、[すべて再スキャン]ボタンをクリックします。次の画面と、この新しいフォルダを追加するための新しいポップアップメッセージが表示されます。
[追加]ボタンをクリックして、最初のサーバーで共有されるバックアップフォルダーを追加します。次の画面が表示されます。
フォルダバックアップが同期され、最新であることがわかります。
最初のサーバーのバックアップフォルダでファイルを作成または変更すると、それらは自動的に2番目のサーバーに同期され、そのバックアップフォルダ内のすべての新しいディレクトリとファイルが他のサーバーにミラーリングされます。
送信専用フォルダーと受信専用フォルダーの構成
Syncthingのもう1つの優れた機能は、ペアのサーバーを送受信するように構成できることです。また、サーバーを送信のみと受信のみに指定することもできます。
[フォルダ]セクションに移動し、[必要なバックアップフォルダを選択]をクリックして[編集]ボタンをクリックし、[詳細]セクションカードに移動します。次の画像が表示されます。
そして、送信専用/受信専用のフォルダタイプを選択し、[保存]ボタンをクリックします。
スキャン間隔の調整
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を使用した経験を共有してください。