如何在 Ubuntu 14.04 上安裝和配置 Syncthing 來同步目錄

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到網站。

介紹

有許多程序可以在不同計算機之間同步文件。Syncthing 是一個引人注目的新選擇,它跨平臺、完全開源、非常靈活且易于使用。

在本指南中,我們將向您展示如何開始使用 Syncthing 在兩個 Ubuntu 14.04 服務器實例之間同步數據。這將允許您根據配置的“監視”目錄在這些服務器之間無縫同步文件。

先決條件和目標

要完成本指南,您需要訪問兩個 Ubuntu 14.04 服務器實例。

在本指南中,我們將稱這些服務器為:

  • serverone
  • servertwo

這些將是平等的合作伙伴,因此沒有主/次關系。您應該在每臺服務器上配置一個常規用戶帳戶(您可以按照我們的 Ubuntu 14.04 初始服務器設置指南中的步驟 1-4 找出如何做)。

本指南中的常規用戶帳戶將被稱為 demouser,但您可以使用任何用戶名。這不必與您的常規非根帳戶分開。

我們將在這兩臺機器上安裝和配置 Syncthing,以便可以在它們之間共享文件。完成本指南中概述的程序后,您應該有兩臺服務器,每臺服務器都有一個目錄,可以將更改鏡像到另一臺計算機。

我們將安裝 Syncthing 作為系統級應用程序,并創建一個 Upstart 腳本。這將允許我們的 Syncthing 實例在啟動時啟動并正確重啟,而不是像默認情況下那樣每次生成新實例。

初始下載和安裝

我們開始的第一件事是在每臺服務器上下載 Syncthing 二進制文件。

要找到最新打包的版本,您可以轉到 GitHub 上的發布頁面。在頁面底部有每種操作系統類型的按鈕。

!Syncthing release page

如果您的 Linux 系統是 32 位的,請選擇以 “syncthing-linux-386-...” 開頭的選項。如果您使用的服務器是 64 位的,請選擇標記為 “syncthing-linux-amd64-...” 的選項。不要將文件下載到本地計算機。而是右鍵單擊適當的文件,然后選擇“復制鏈接地址”或您有的類似選項。

我們將使用每臺服務器上的 wget 命令下載這些文件。在您的服務器上,鍵入 wget,然后粘貼您復制的鏈接。版本和系統架構可能對您有所不同:

cd ~
wget https://github.com/calmh/syncthing/releases/download/v0.8.15/syncthing-linux-amd64-v0.8.15.tar.gz

現在,我們可以通過鍵入以下命令解壓 tarball:

tar xzvf syncthing*.tar.gz

進入新創建的目錄:

cd syncthing*

在這里,我們有一個名為 syncthing 的可執行文件,我們可以使用它來啟動服務。我們希望將其復制到我們的 PATH 中的位置,以便我們可以像普通應用程序一樣調用它。

通過以下帶有 sudo 權限的命令執行此操作:

sudo cp syncthing /usr/local/bin

現在,我們可以返回到我們的主目錄,并安全地刪除所有剩余的 Syncthing 文件和目錄。

cd ~
rm -rf syncthing*

在您的兩臺服務器上完成上述所有步驟。

應用程序現在已安裝,但在準備好使用之前,我們還需要做一些事情。

更改 GUI 選項以允許遠程查看

默認情況下,Syncthing Web 界面僅可供來自同一計算機的連接使用。由于我們正在使用遠程服務器,這將無法滿足我們的需求。

為了解決這個問題,我們需要編輯 Syncthing 配置文件中的一行。但是,配置文件尚未創建。

要自動創建文件,我們可以簡要啟動服務。鍵入 syncthing 命令以啟動此過程:

syncthing

syncthing 進程不是守護進程,這意味著它在當前 shell 會話中運行(我們將通過實施 Upstart 腳本來解決這個問題)。它將啟動進程并創建一些必要的文件。

片刻之后,您將看到有關您的節點 ID 的信息消息,看起來像這樣:

[2EQK3] 15:47:15 OK: Ready to synchronize default (read-write)
[2EQK3] 15:47:15 INFO: Node 2EQK3ZR77PTBQGM44KE7VQIQG7ICXJDEOK34TO3SWOVMUL4QFBHA is "server1" at [dynamic]

當您看到這個時,這意味著進程已正確初始化。現在,通過鍵入以下命令停止進程:

CTRL-C

這將停止進程并使我們再次控制終端。

現在,我們可以編輯創建的配置文件。在文本編輯器中打開文件:

nano ~/.config/syncthing/config.xml

查找處理 GUI 的部分。它應該看起來像這樣:

<gui enabled="true" tls="false"><address>127.0.0.1:8080</address>
</gui>

我們需要做的唯一更改是將本地主機地址(127.0.0.1)替換為 0.0.0.0,它代表所有網絡接口。完成后,此部分將如下所示:

<gui enabled="true" tls="false"><address>0.0.0.0:8080</address>
</gui>

完成配置后保存并關閉文件。稍后我們將通過 Web 界面進行更廣泛的配置。

再次在您要配置的兩臺服務器上完成這些程序。

創建 Upstart 腳本以處理服務狀態

接下來,我們將實現一個 Upstart 腳本來管理我們的進程。這將允許我們在服務器啟動時自動啟動 Syncthing 進程。它還將讓我們將其作為一個服務運行,而不會控制我們的會話。

我們將使用的 Upstart 腳本取自 Syncthing 討論板上的一個帖子。通過輸入以下命令,使用 root 權限創建并打開 Upstart 文件編輯器:

sudo nano /etc/init/syncthing.conf

在文件中,我們將使用以下行來控制我們的 Upstart 進程:

description "Syncthing P2P sync service"start on (local-filesystems and net-device-up IFACE!=lo)
stop on runlevel [!2345]env STNORESTART=yes
env HOME=/home/demouser
setuid "demouser"
setgid "demouser"exec /usr/local/bin/syncthingrespawn

讓我們來解釋一下這意味著什么。

我們首先給出了服務的一般描述。接下來,我們定義服務應該何時啟動和停止。在這里,我們告訴系統應在文件系統和非本地網絡接口啟動后啟動它。每當系統離開正常運行級別時,它將被停止。

接下來,我們將設置一個環境變量,告訴 Syncthing 不要使用自己的機制重新啟動。這是因為它實際上每次都會生成一個新進程,而不清理舊進程。為了避免這種情況,我們將稍后在這個 Upstart 腳本中實現重新啟動的能力。

接下來的環境變量設置了 Syncthing 將要使用的主目錄。這將用于查找正確的配置文件,并在 GUI 中預填字段。我們還使用 setuidsetgid 參數分別指定用戶和組。將這三個值修改為指向您用戶的信息。

接下來,我們設置要執行的實際命令的路徑。最后,我們使用 respawn 告訴 Upstart 如果進程被意外停止,則自動重新啟動該進程。這用于當 Syncthing 進程嘗試在內部重新啟動自身時,自動重新啟動進程(清理)。

完成后,保存并關閉文件。

現在,您可以通過輸入以下命令來啟動服務:

sudo initctl start syncthing

在兩臺服務器上完成上述步驟。

在 Web UI 中設置安全性

我們終于準備好通過 Web 用戶界面配置我們的實例。

通過訪問它們的公共 IP 地址和端口 8080,登錄到每臺服務器的 Syncthing 界面:

http://server1_public_IP:8080
http://server2_public_IP:8080

您將看到主 Syncthing 屏幕:

!Syncthing main screen

我們需要做的第一件事是為我們的界面添加一些安全性。轉到右上角的“編輯”菜單,然后點擊“設置”選項:

!Syncthing settings

在右側,我們需要為 Web 界面設置用戶名和密碼。我們還希望為我們的會話啟用 TLS 加密,以便我們的流量在傳輸過程中無法被攔截,勾選“HTTPS”框:

!Syncthing security

完成后,點擊底部的“保存”按鈕。

您將看到一個提示消息,提示您重新啟動服務以使更改生效:

!Syncthing restart

點擊“重新啟動”按鈕。

您可能需要刷新頁面以正確重新加載更改。這樣做時,您很可能會遇到一個 SSL 警告,看起來像這樣:

!Syncthing SSL warning

這只是讓您知道簽署 SSL 證書的實體不在您的瀏覽器的受信任證書頒發機構列表中。這是預期的,因為證書是自簽名的。點擊“仍然繼續”是安全的。

然后,您將收到一個要求輸入您配置的用戶名和密碼的身份驗證提示:

!Syncthing username and password

填寫適當的值并登錄。您的界面現在對外部流量更加安全。

在兩臺服務器上完成這些步驟。

連接兩臺服務器并共享目錄

為了共享內容,Syncthing 要求連接的兩端將另一臺服務器添加到其節點列表中。然后,雙方還必須添加一個要同步的存儲庫(目錄)。

要添加一個節點,您將需要伴隨節點的 ID。您可以通過轉到右上角的“編輯”菜單,然后選擇“顯示 ID”選項來獲取此 ID。

這將顯示一個包含長 ID 的覆蓋層,您可以復制其中的 ID。它還會給您一個 QR 碼,以防您正在配置智能手機應用程序。復制第一個節點的 ID。

!Syncthing copy ID

在第二臺服務器上,點擊“編輯”菜單,然后選擇“添加節點”。

將出現一個覆蓋層,其中包含必須配置以添加另一臺服務器的字段。在“節點 ID”字段中,粘貼從第一臺服務器復制的 ID。在“節點名稱”字段中,選擇您希望用于另一臺服務器的任何描述性名稱。將“地址”保留為“動態”:

!Syncthing add node

完成后,點擊“保存”以添加新節點。

以相反的順序運行相同的過程,以便兩臺服務器在其配置中都有相反的服務器。暫時忽略重新啟動服務的任何請求,因為我們將首先進行一些其他更改。

在 Web 界面中,您連接到的節點顯示在右側。您共享的存儲庫顯示在左側。默認情況下,將在您的主目錄中創建一個名為 Sync 的文件夾作為默認存儲庫。如果菜單被壓縮了,請單擊名稱以展開列表:

!Syncthing default repo

點擊“編輯”按鈕以配置存儲庫。在底部,您將有選項將此存儲庫與您配置的任何節點共享。選中與另一節點相關聯的框,然后點擊“保存”按鈕:

!Syncthing share with node

現在,您可以點擊“重新啟動”按鈕以實施您的更改:

!Syncthing restart

現在,~/Sync 目錄中所做的任何更改都將鏡像到另一臺服務器。默認情況下,這將每 60 秒同步一次,但可以在“設置”菜單中更改。

您可以通過從“編輯”菜單中選擇“添加存儲庫”選項來添加希望鏡像的其他目錄。對于目錄關聯,每臺服務器上的“存儲庫 ID”必須相同。

結論

到這一步,你應該已經連接了兩臺服務器,并同步了一個目錄的內容。你可以通過添加額外的倉庫(目錄),或者添加額外的節點來擴展這個功能。

如果你計劃將系統文件同步到普通用戶無法寫入的目錄,你可能需要修改 Upstart 文件,以使用 root 賬戶或其他必要的用戶賬戶來執行所需的操作。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/43335.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/43335.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/43335.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

UDP通訊實現

服務器端&#xff1a; 1.獲取套接字 int fd;fdsocket(AF_INET,SOCK_DGRAM,0);if(fd<0){perror("socket");exit(0);} #include <sys/types.h> #include <sys/socket.h> int socket(int domain, int type, int protocol); -domain: 指定通信域&…

Elasticsearch 面試題指南

Elasticsearch 面試題指南 本文檔提供了一份詳細的 Elasticsearch 面試題指南&#xff0c;涵蓋了 Elasticsearch 的核心概念、架構、配置、操作和實際應用場景等方面的內容。希望通過這份指南能夠幫助你在 Elasticsearch 面試中取得成功。 目錄 Elasticsearch 基礎知識 什么…

Retrofit框架源碼深度剖析【Android熱門框架分析第二彈】

Android熱門框架解析&#xff0c;你確定不來看看嗎&#xff1f; OkHttp框架源碼深度剖析【Android熱門框架分析第一彈】 Retrofit框架源碼深度剖析【Android熱門框架分析第二彈】 什么是Retrofit&#xff1f; 準確來說&#xff0c;Retrofit 是一個 RESTful 的 HTTP 網絡請求…

網絡編程:數據包的封裝----libnet庫

使用libnet庫封裝數據包 安裝庫sudo apt-get install libnet-dev 1、數據包內存初始化 libnet_t *libnet_init(int injection_type, char *device, char *err_buf) 2、構造數據包&#xff0c; 由應用層UDP/TCP到MAC層的順序構造 封裝udp數據包的函數 libnet_ptag_t libnet_bui…

Miniconda的常見用法——以Isaacgym為例

1. ubuntu24.04安裝minicondda mkdir -p ~/miniconda3 wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh解釋下這段代碼 bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3~/miniconda3/miniconda.sh: 指向Mi…

java中Function、Consumer和Supplier是函數式接口嗎?

是的&#xff0c;在Java中&#xff0c;Function、Consumer 和 Supplier 都是函數式接口&#xff0c;它們都是Java 8引入的java.util.function包中的一部分。這些接口為Lambda表達式提供了類型支持&#xff0c;允許以更簡潔的方式表示方法引用和匿名內部類。 Function<T, R&g…

SHARPNESS-AWARE MINIMIZATION FOR EFFICIENTLY IMPROVING GENERALIZATION--論文筆記

論文筆記 資料 1.代碼地址 https://github.com/google-research/sam https://github.com/davda54/sam 2.論文地址 https://arxiv.org/abs/2010.01412 3.數據集地址 論文摘要的翻譯 在當今嚴重過度參數化的模型中&#xff0c;訓練損失的值很難保證模型的泛化能力。事實上…

代碼隨想錄算法訓練營第三十天|62.不同路徑、63. 不同路徑 II

62.不同路徑 一個機器人位于一個 m x n 網格的左上角 &#xff08;起始點在下圖中標記為 “Start” &#xff09;。 機器人每次只能向下或者向右移動一步。機器人試圖達到網格的右下角&#xff08;在下圖中標記為 “Finish” &#xff09;。 問總共有多少條不同的路徑&#xff…

軟設之生成器模式

生成器模式的意圖是:將一個復雜的類表示與其構造分離&#xff0c;使得相同的構建過程能夠得出不同的表示 Builder:抽象建造者&#xff0c;為創建一個產品對象各個部件指定抽象接口&#xff0c;把產品的生產過程分解為不同的步驟&#xff0c;從而使具體建造者在具體的建造步驟上…

Java中的對象克隆詳解

Java中的對象克隆詳解 大家好&#xff0c;我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01; 對象克隆在Java編程中是一個重要的概念和技術。它允許我們創建一個對象的精確副本&…

MySQL第三次練習

作業三 一 先創建DB abc&#xff0c;創建table student 1、插入一條記錄 2、添加多條記錄 3、添加部分記錄 4、加0.5 5、刪除成績為空的記錄 二 1、創建一個用戶test1使他只能本地登錄擁有查詢student表的權限。 2、查詢用戶test1的權限。 3、刪除用戶test1. 全在一張圖上…

怎樣優化 PostgreSQL 中對日期時間范圍的模糊查詢?

文章目錄 一、問題分析&#xff08;一&#xff09;索引未有效利用&#xff08;二&#xff09;日期時間格式不統一&#xff08;三&#xff09;復雜的查詢條件 二、優化策略&#xff08;一&#xff09;使用合適的索引&#xff08;二&#xff09;規范日期時間格式&#xff08;三&a…

AI學習指南機器學習篇-層次聚類(Hierarchical Clustering)簡介

AI學習指南機器學習篇-層次聚類(Hierarchical Clustering)簡介 在機器學習領域中&#xff0c;層次聚類(Hierarchical Clustering)是一種常見的無監督學習算法&#xff0c;用于將數據集中的樣本分成具有相似特征的群組。層次聚類不需要預先指定要分成的群組數目&#xff0c;而是…

邏輯回歸模型(非回歸問題,而是分類問題)

目錄&#xff1a; 一、Sigmoid函數&#xff1a;二、邏輯回歸介紹&#xff1a;三、決策邊界四、邏輯回歸模型訓練過程&#xff1a;1.訓練目標&#xff1a;2.梯度下降調整參數&#xff1a; 一、Sigmoid函數&#xff1a; Sigmoid函數是構建邏輯回歸模型的重要函數&#xff0c;如下…

免費壓縮pdf文件大小軟件收費嗎?pdf如何壓縮文件大小?12款壓縮應用推薦!

在數字化時代&#xff0c;PDF文件因其跨平臺、格式統一的特點而廣受歡迎。然而&#xff0c;隨著文件內容的增加&#xff0c;PDF文件的大小也逐漸增大&#xff0c;給存儲和傳輸帶來了諸多不便。因此&#xff0c;尋找一款合適的PDF壓縮軟件成為了許多用戶的需求。本文將詳細介紹1…

單調隊列與單調棧(集訓day2)

一、目錄 1、單調隊列 2、單調棧 二、正文 1.單調棧題型&#xff1a; &#xff08;1&#xff09;給出一個數組找出其中每個數左邊第一個比它小&#xff08;大&#xff09;的數字 830. 單調棧 - AcWing題庫 &#xff08;2&#xff09;求直方圖中最大的矩形&…

電子設備常用的膠水有哪些?

目錄 1、502膠水 2、703膠水 3、704膠水 4、AB膠 5、紅膠 6、Underfill 7、導電膠 8、UV膠 9、熱熔膠 10、環氧樹脂膠 11、硅酮膠 12、聚氨酯膠 13、丙烯酸膠 14、丁基膠 1、502膠水 502膠水&#xff0c;也被稱為瞬間膠或快干膠&#xff0c;是一種非常常見的粘合…

電動卡丁車語音芯片方案選型:讓駕駛體驗更智能、更安全

在追求速度與激情的電動卡丁車領域&#xff0c;每一次升級都意味著更加極致的駕駛體驗。而今天&#xff0c;我們要介紹的&#xff0c;正是一款能夠顯著提升電動卡丁車智能化與安全性的語音芯片方案——為您的愛車增添一份獨特的魅力與安全保障。 智能化升級&#xff0c;從“聽…

[Python學習篇] Python面向對象——繼承

繼承是什么 繼承是面向對象編程&#xff08;OOP&#xff09;中的一個核心概念。繼承允許一個類&#xff08;稱為子類或派生類&#xff09;從另一個類&#xff08;稱為父類或基類&#xff09;繼承屬性和方法。這樣可以重用代碼&#xff0c;提高代碼的模塊化和可維護性。 父類&am…