如何在 Ubuntu 20.04 上安裝和使用 Syncthing

Syncthing 是一個免費的開源程序,用於在來自本地網絡的設備或通過 Internet 的遠程設備之間同步文件。 它使用對等架構和連續文件同步,以完全自動化的方式直接在設備之間交換數據。

同步 可用於保持文件和目錄實時同步。 多台設備之間的所有數據傳輸都是安全的,並使用 TLS 進行加密。

Syncthing 的主要特點是:

  • LDAP 身份驗證支持。
  • 單向同步支持。
  • 同步速度快。
  • 使用 CLI 和 GUI
  • 跨平台適用於:Linux、Android、Unix、Solaris、Windows 和 Mac OS X。

在本教程中,我們將學習如何 安裝同步Ubuntu 20.04.

先決條件

  • 兩台安裝了 Ubuntu 20.04 的服務器。
  • 用戶與 sudo 和根訪問。
  • 兩個配置的公共 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

完成後,再更新一次系統包,然後 安裝同步 包裹:

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 服務。

使用以下命令在 /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

該服務應處於活動狀態(正在運行)。

同步服務監聽8384端口,可以使用ss命令進行驗證。

ss -antpl | grep 8384

輸出:

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

筆記: 對另一台服務器重複這些相同的步驟。

配置 Syncthing Web 界面

打開您的 Web 瀏覽器並使用 URL 訪問 Syncthing Web 界面。

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

Syncthing Web Interface 使用端口 8384。

登錄後,您應該會收到以下消息。

下一步轉至操作 > 設置 > GUI 以設置用戶名、密碼,並啟用“為 GUI 使用 HTTPS”選項。

同步圖形用戶界面配置

點擊 Save 按鈕,您將被重定向到 Syncthing 登錄頁面,該頁面將要求輸入新的登錄憑據。

同步登錄憑據

登錄後,您可以看到連接現在使用 HTTPS 進行保護。

筆記: 也在第二台服務器上重複並配置此過程。

連接設備

對於目錄同步,我們需要合併和連接兩個服務器的設備 ID,將每個服務器的設備 ID 添加到另一台服務器以同步文件。

為此,請轉到兩台服務器上的操作 > 顯示 ID。 您將看到以下設備標識和二維碼。

服務器 1 標識服務器 1 標識
服務器2 ID

現在,轉到第一個 Syncthing 服務器。 在遠程設備部分的底部,單擊按鈕 + 添加遠程設備。

添加第一個設備.png

提供第二個服務器的設備 ID,然後單擊 Save 按鈕。 可選,也可以添加設備名稱,方便查看。

在第二台服務器上,重複相同的步驟。 轉到添加遠程設備。

添加第二個設備

並添加來自第一個服務器的設備 ID,然後單擊 Save 按鈕。

已連接設備列表

Will 從雙方看到設備現在已連接。

同步目錄

成功對等遠程設備後,找到“文件夾”部分,然後單擊“+添加文件夾”按鈕。 您應該會看到以下新窗口。

新增文件夾

在常規部分的文件夾標籤中提供您的備份文件夾名稱。 然後,轉到共享卡部分,您將看到以下屏幕。

選中您的設備以共享此文件夾。 在我的情況下,名字是 服務器 2,然後單擊 Save 按鈕。

現在轉到第二個服務器並單擊重新掃描所有按鈕。 您應該會看到以下屏幕和一條新的彈出消息來添加這個新文件夾。

單擊添加按鈕,添加在第一台服務器上共享的備份文件夾。 您現在應該看到以下屏幕。

同步目錄

現在可以看到文件夾備份已同步且為最新。

每當您在第一台服務器上的備份文件夾中創建或修改任何文件時,它們將自動同步到第二台服務器,該備份文件夾中的所有新目錄和文件都將鏡像到另一台服務器上。

配置僅發送和僅接收文件夾

Syncthing 的另一個很棒的功能是您可以配置成對的服務器進行發送和接收,也可以將它們指定為僅發送和僅接收。

轉到“文件夾”>“選擇所需的備份文件夾”部分,然後單擊“編輯”按鈕,然後轉到“高級”部分卡。 您將看到以下圖像。

並為僅發送/僅接收選擇文件夾類型,然後單擊 Save 按鈕。

配置調整掃描間隔

如果您想釋放 CPU 並且不需要不斷觀察同步變化,您可以禁用 Watch for Changes 並可以手動設置要同步更改的分鐘數、小時數。

掃描間隔

驗證 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)

結論

在本教程中,我們學習瞭如何在 Ubuntu 20.04 上安裝 Syncthing 以同步目錄。 您可以使用和同步兩個以上的設備,並在所有機器上更新目錄。

請在評論部分分享您使用 Syncthing 的經驗。