【轉】Syncthing – 數據同步利器---本身的網盤,詳細安裝配置指南,內網使用,發現服務器配置

Syncthing – 數據同步利器---本身的網盤,詳細安裝配置指南,內網使用,發現服務器配置html

原貼:https://www.cnblogs.com/jackadam/p/8568833.htmllinux

 


簡介:

不管辦公、文件共享、團隊協做仍是家庭照片、視頻、音樂、高清電影的存儲,咱們經常都有文件同步和存儲的需求。但隨着國內各大網盤的花式陣亡或限速,早已沒什麼好選擇了。好吧,我已經轉戰使用onedriver了,可是在單位裏面,沒有互聯網,找開源的軟件試試本身搭建吧。git

自建網盤雲儲存同步服務的軟件有不少, Seafile、NextCloud、ownCloud、BT Sync (Resilio Sync) 等。github

而 Syncthing 則有着本身很是特別的優勢,受到衆多高手們的推薦,被譽爲是 Resilio Sync / BT Sync 和 Dropbox 的最佳開源替代品。web

Syncthing 最大的特點是採用了與 Resilio Sync (BitTorrent Sync) 相似的 P2P 分佈式技術,無需中心服務器,便可讓多臺設備互相實時同步文件。docker

Syncthing 官方支持 Linux、Windows、OS X、FreeBSD、Solaris 等系統,而且有第三方的 iOS、Android 應用。flask

我選擇它還有一個緣由就是,它只須要一個文件就能夠了。在linux下只有一個文件,在windows下也能夠只有一個文件,固然還有一個GUI桌面程序。windows

一:官網及下載

官網地址:https://syncthing.net/安全

linux64位就是我主力使用的,放在一個fedora服務器上,不過是跑在docker裏面。

SyncTrayzor是官方提供的GUIwindows客戶端,方便設置開機啓動進行自動同步。能夠縮小到任務欄。實在是方便部署到客戶端,讓它自動上傳啊。

SyncTrayzor維護在github。https://github.com/canton7/SyncTrayzor/releases

Portable是免安裝版本。

Setup就是安裝版本。

X64 X86,根據你的系統,隨便下載吧。

二:在linux下進行安裝

1.下載

隨你喜歡wget curl winscp了。解壓後只須要一個文件:

2.配置

2.1複製文件

cp syncthing /usr/bin/syncthing

只須要複製這一個文件,其餘的能夠刪了。

2.2修改權限

chmod +x /usr/bin/syncthing

加上可執行權限

2.3運行

./usr/bin/syncthing

就這一個文件,直接執行。

它會自動生成配置文件,還不能先改,只好運行一遍,等它出現

[CKEAY] 17:44:53 INFO: Detected 1 NAT service
[CKEAY] 17:45:39 INFO: Joined relay relay://36.229.223.123:22067
大概就是已經生成配置文件,並運行起來了。

ctrl+c 中止這個進程。

 

2.4修改配置文件

sed 's/127.0.0.1/0.0.0.0/g' /root/.config/syncthing/config.xml

默認配置文件在/root/.config/syncthing/config.xml,默認監聽網絡是127.0.0.1,遠程不能訪問,因此用sed命令修改成0.0.0.0

3.運行

./usr/bin/syncthing

再次運行起來。

4.測試

http://youip:8384/     或者  http://hostname:8384/ 均可以訪問,記得改你的ip,或者網絡名。複製不能用。

只要沒出亂七八糟的錯誤,就算安裝成功了。

二:在Docker中安裝

1.下載

docker pull syncthing/syncthing

2.運行

docker run -it  -p 8384:8384 -p 22000:22000 \
    -v /storage/conf/syncthing:/var/syncthing/config \
    -v /storage/data/syncthing:/var/syncthing \
    syncthing/syncthing:latest

官方給的運行參數就是這樣了。

/storage/conf/syncthing,配置文件存儲位置。

/storage/data/syncthing,數據存儲主目錄。

兩個目錄根據本身的狀況替換。

8384  22000,兩個端口通常不佔用,直接運行。

3.測試

和linux測試同樣。

http://youip:8384/     或者  http://hostname:8384/ 均可以訪問,記得改你的ip,或者網絡名。複製不能用。

只要沒出亂七八糟的錯誤,就算安裝成功了。

三:在windows中安裝

1.下載

windows下咱們就不使用linux那樣的單文件版了。

https://github.com/canton7/SyncTrayzor/releases/download/v1.1.21/SyncTrayzorPortable-x64.zip

目前最新的應該是這個版本。若是你是32位的系統,請下載x86版

2.運行

解壓後找到SyncTrayzor.exe,雙擊運行便可

3.配置

仍是老問題,默認只有127.0.0.1,localhost能夠訪問,沒有遠程訪問權限。

照下圖,右邊的設置,用來修改圖形界面監聽地址,而且能夠設置隨開機自動啓動

 

 

 

 

四:基本配置

1.配置簡介

咱們要配置自動同步,那麼就要有2臺電腦運行syncthing,相互要能連通,並配置相同ID的共享文件夾。

每臺電腦,第一次運行syncthing時,會自動生成隨機ID,並註冊ID,網絡地址到全球發現服務器。添加遠程設備時,去全球發現服務器,來查ID,取得遠程設備的網絡地址。

因此,在windows不要複製解壓運行過的SyncTrayzorPortable-x64.zip,只複製壓縮包,解壓,從新生成新的ID。

後面的例子以2臺設備同步一個文件夾爲例講解。設備1:WORKER(操做機,本地設備),設備2: NUC(家庭服務器,放在路由器邊上,沒鍵盤,沒鼠標,只接了HDMI到電視,遠程設備) 同步一個文件夾,WORKER路徑:D:\PythonTest\flasktest ,nuc路徑:/var/syncthing/temp/app。WORKER操做系統windows,NUC操做系統fedora,syncthing運行在docker中,映射容器路徑/var/syncthing到物理路徑/storage,那麼最後的共享文件夾,即NUC物理機的/storage/temp/app。對這些不理解的,本身慢慢補docker的知識。忽略NUC運行的DOCKER。

2.配置中文.

以下圖,先點English,在彈出的下拉框,點擊Chinese(china),就變成中文了。

 

3.配置WEB安全

咱們輸入地址:8384,默認設置,syncthing只容許localhost本地登陸,可是咱們爲了方便配置,已經給它改了監聽0.0.0.0,任意地址均可以訪問,貌似不安全啊。

那麼咱們就配置一下web登陸密碼:

訪問web頁面後在右上角 ,操做--設置--圖形用戶界面

圖形管理界面用戶名

圖形管理界面密碼

這兩項就能夠設置圖形界面登陸帳戶密碼了。

使用加密鏈接到圖形管理頁面

若是你怕被監聽到,開啓加密也能夠。

每一個運行syncthing的機器(WORKER NUC)都要單獨設置。

4.配置設備名稱

訪問web頁面後在右上角 ,操做--設置--常規--設備名

爲了方便使用,仍是設個設備名吧,否則貌似是使用ID前幾位的隨機字符串作設備名,機器多了,可真不方便。

仍是每一個設備設置。

五:添加遠程設備

1.獲取遠程設備ID

在WORKER上添加NUC。

你時去NUC抄,仍是遠程登陸看?固然時遠程登陸看了,安裝的時候,我都設置了任意IP監聽登陸。

訪問NUCweb頁面後在右上角 ,操做--顯示ID,

BTQMGH2-JBPTQGX-HQWBLLW-EBEQJUC-NMZOUMQ-3TLYVSV-****-****
這一長串就是遠程設備的ID。下面的二維碼時方便android手機端使用的掃碼添加。

2.本地設備添加遠程設備

訪問WORKERweb頁面(或SyncTrayzor窗口)後在右下角 ,添加遠程設備

在設備ID,填上剛複製過來的遠程設備ID。

下面有兩個選項介紹一下:

做爲中介,syncthing使用了P2P技術來實現文件同步,如今咱們實驗的時候時2臺設備,同步一個文件夾,若是加入新設備,是要分別給這兩臺設備配置一個新的遠程設備。若是開啓做爲中介,那麼,WORKER,會自動添加,或稱爲同步NUC的遠程設備(新設備)。

自動接受,若是在NUC建立了一個共享文件夾,並共享給WORKER,無需WORKER選擇接受,即在默認目錄,建立共享文件夾,並同步。

根據本身的須要來選擇開啓吧。我都沒開啓,由於我實驗2臺設備,部署也就3-4個設備。

3.等待

由於默認使用全球發現服務器,受網速影響,仍是要等等的。

注意NUC的web界面。出現新設備,就是已經連上了,選擇添加設備,就會自動把WORKER,做爲遠程設備,鏈接到NUC。

此時兩臺設備web頁面,右下角部分,都會出現遠程設備(即對方)

六:添加同步文件夾

1.刪除默認文件夾

貌似新裝,管理頁左邊都會出現 default ***

點擊 文件夾名--下拉框右下部分--選項--移除--確認

刪除是由於路徑問題,它們分別生成在每臺設備的默認共享目錄下,基本不是咱們須要的路徑。

2.本地設備添加文件夾

管理頁中間部分,添加文件夾。

文件夾路徑,估計要你本身寫一下了(D:\PythonTest\flasktest ),到資源管理器去複製也能夠的。

關鍵設置文件夾ID(app) ,說明在全部從設備上必須一致,也就是在咱們這多個設備同步時,都用這個ID,來同步這個文件夾。下面還有共享給遠程設備(NUC),勾選遠程設備的名字就行了。

其中的高級設置,看一下也能明白。最後保存便可。

七:給遠程設備添加同步文件夾

1.仍是等待,咱們使用的是全球發現服務器

直到這個在NUC的管理頁面出現,點擊添加便可。

2.配置遠程設備共享文件夾路徑

/var/syncthing/temp/app

這個應該時前期就決定好的,這時填一下就能夠了,記得勾選下面的共享給WORKER。不勾選的時候是單向同步?

3.配置文件夾 ID

app

這個也是在本地設備配置文件夾時給定的ID

4.查看同步狀態

看下面兩個圖,區別是遠程設備是否顯示同步完成,由於使用P2P 分佈式技術,因此沒有中心服務器,那麼每臺設備,都便是客戶端,又是服務器。

文件夾上的同步完成,僅表明本地客戶端已經和本地服務器同步了。(兩臺設備沒完成徹底同步)

遠程設備上的同步完成,表明本地客戶端和這個遠程服務器同步了。(兩臺設備完成徹底同步)

有的時候那個同步完成,會顯示同步中。

八:內部網絡使用(固定IP),沒法鏈接全球發現服務器

1.簡介

當咱們在內部網絡使用syncthing時,由於沒有辦法鏈接全球發現服務器,那麼咱們該如何配置呢?這章節說明一下在固定IP的狀況下,咱們可使用IP地址來配置互相發現。只要能互相ping通,跨網段也不要緊的。

咱們在官方的DOCKER運行命令中能夠看出映射兩個端口出來,8384和22000,8384是咱們用來web控制的,那麼22000就是syncthing的監聽端口了。

2.配置

看下面兩圖,這時編輯已經創建鏈接的遠程設備,新建設備時也同樣,我在地址列表中填入了遠程設備的協議,IP,端口。看說明,host計算機名字也能夠,域名應該也能夠。

dynamic,就是自動發現,也是默認值,難道時自動掃描麼?刪除也能夠。

 

3.驗證連通

下面兩圖,都是鏈接斷開的狀態,不過,我這兩臺設備,都能鏈接互聯網,估計獲取了發現服務器記錄的地址。但這並不影響咱們作測試。

第二張圖看出地址多了一行咱們配置的tcp://192.168.1.4:22000

 

下面兩圖是使用dynamic時的連通狀態,真不知道時什麼IP地址。

下面兩圖就是都配置對方地址後的連通狀態了。使用對方的網絡地址鏈接。

 

 

九:內部網絡使用(動態IP),沒法鏈接全球發現服務器

1.簡介

上一章節咱們使用固定ip,能夠經過填寫對方的網絡鏈接參數來配置遠程設備。若是同網段動態IP,應該也能夠用host計算機名來配置遠程設備。

那麼另外一個麻煩又跳出來了,若是是不一樣網段,又是動態IP,怎麼辦?鏈接參數中IP是變更的,計算機名時沒法廣播解析的。或許能夠建個DNS服務器來實現。

太扯了。又可能影響原來的DNS解析。

Syncthing Discovery Server---syncting發現服務器來解救你,你這麼複雜的運行環境,相信會有一個小型服務器的,只要有一個固定IP,就能夠了。幾十臺設備,幾百臺設備,均可以註冊到這個發現服務器,替代全球發現服務器。

發現服務介紹https://docs.syncthing.net/users/stdiscosrv.html        發現服務源碼 https://github.com/syncthing/discosrv   發現服務下載:https://github.com/syncthing/discosrv/releases

2.命令參考

stdiscosrv [-cert=<file>] [-db-dir=<string>] [-debug] [-http] [-key=<string>] [-listen=<address>] [-metrics-listen=<address>] [-replicate=<peers>] [-replication-listen=<address>]

-cert=<file>
    證書文件(default 「./cert.pem」).

-db-dir=<string>
   數據存儲目錄 (default 「./discovery.db」).

-debug
    debug模式輸出

-http
    使用http協議還要求在https代理後面 (behind an HTTPS proxy).

-key=<file>
    key文件 (default 「./key.pem」).

-listen=<address>
    監聽端口 (default 「:8443」).

-metrics-listen=<address>
    不知道是什麼意思 (default disabled).

-replicate=<peers>
    複製另外一臺發現服務器?

-replication-listen=<address>
    另外一臺發現服務器監聽端口?

3.運行

syncthing真是良心,也不用複雜的安裝,linux下也不用編譯,不論linux仍是windows,都是一個文件,直接運行。並且這個發現服務器,看着挺多的運行參數,其實一個也不用寫。它和單文件的客戶端同樣,直接運行就能夠了,自動生成各個目錄和文件。

windows下是這樣

linux下是這樣

若是你有本身的證書,那麼能夠這樣運行,把證書路徑做爲參數,啓動發現服務器。

stdiscosrv -cert=/path/to/cert.pem -key=/path/to/key.pem

4.生成節點配置URL

若是您使用的是非CA簽名證書,則必須將該設備ID(指紋)交給使用發現服務器URL的客戶機。

這個客戶機的意思時對發現服務器,全部運行syncthing的節點都是發現服務器的客戶機。

非CA簽名的證書,自動生成的必定時非CA簽名證書。

官方給的示例是這樣的

https://disco.example.com:8443/?id=7DDRT7J-UICR4PM-PBIZYL3-MZOJ7X7-EX56JP6-IK6HHMW-S7EK32W-G3EUPQA

看到那串像序列號的東西,就是設備ID,啓動發現服務器的時候,它也顯示出來了。記下來,用來組合咱們本身的發現服務器地址。

原本就內網了,域名就算了,可使用IP地址。

對應上面啓動的兩個發現服務器。

windows:IP    192.168.1.4

URL      https://192.168.1.4:8443/?id=ZRXXI2M-XEARVGA-SSYYEWO-6QGNNIZ-HPBVH3K-PIR6DCY-HJERGZE-PXF7NAL

linux: IP 192.168.1.3

URL    http://192.168.1.3:8443/?id=5OJDGM7-BZ6EJT2-M2BEAIX-MK2SBMY-N4STHNI-MEP3VKO-RI6H27D-PYXTPAB

若是你有CA簽名的證書,那麼URL就不須要ID參數了。

https://disco.example.com:8443/      https://disco_server_ip:8443/

4.給節點配置URL

管理界面,右上角  操做--設置--鏈接

全球發現服務器,刪除原來的default,填上咱們生成的節點配置URL。

提示重啓syncthing,重啓一下就能夠了。

5.關閉手動指定的遠程設備地址

遠程設備--選項--地址列表

原來的:tcp://192.168.1.4:22000,dynamic

改成:dynamic

6.測試

其實就是看遠程設備的地址,原來咱們使用defalut全球發現服務器的時候,遠程設備地址,反正是我不認識的地址。

當咱們配置了遠程設備IP地址以後,遠程設備地址,是咱們配置的遠程設備地址。

如今咱們取消了遠程設備地址,使用了咱們本身的發現服務器地址。

也就是syncthing,把本身註冊到咱們本身的發現服務器上,並根據ID從咱們本身的發現服務器地址,查找遠程設備地址。

若是遠程設備地址,是咱們的內部網IP地址,並能夠顯示同步完成。

那就一切OK了。

 

結語:

syncthing,使用方便,配置方便,在各大網盤紛紛關停,收費,限速………………因素下。

本身搭建一個,也挺好。或者百度搜索5T onedriver已失效。

個人用途呢,實際上是在進行軟件開發的時候。worker編寫了源代碼,server生成docker,之前用ftp,sftp上傳,而後docker build。

文件少的時候還好,文件多的時候,又覆蓋,那是一個慢啊。都在一個局域網,又不必使用github的自動構建,用自動構建,還要等docker hub 服務器空暇。

如今是把woker的源碼文件夾,同步到server的docker build目錄。docker build的時候把源碼copy進鏡像。編譯前還能夠到web管理界面掃描同步一下。

尤爲時源碼只改幾個文件的時候,同步很快。方便了我這個僞全棧的開發過程。

 

我的如今比較喜歡在服務器上使用docker做爲服務。官方提供了linux_syncthing的dockre鏡像。

我還須要一個linux_stdiscosrv的鏡像。這幾天寫好了,把地址給你們。

寫着也挺快,但這篇教程,又臭又長,讓我休息一下吧。

相關文章
相關標籤/搜索