syncthing文件同步網盤配置


本文通過MetaWeblog自動發布,原文及更新鏈接:https://extendswind.top/posts/technical/syncthing_install_for_vps

在需要同步的文件不太大時,堅果雲一類的網盤的效果不錯,安裝軟件即可,不需要折騰還功能多。不考慮同步功能,只是想要存數據的話,NAS一般就可以滿足要求。owncloud、nextcloud一類的私有雲網盤提供了更多的功能,如可以瀏覽器查看分享文件。

相比之下,Syncthing只是一個純粹的文件同步軟件。主要優點是配置簡單,沒有其它的依賴,配置局域網的文件同步以及vps的文件同步實現起來容易,不像私有網盤程序依賴一套數據庫、php、web服務等。但是缺點也很明顯,沒有什么多余的功能,無法單獨上傳和下載文件,也不能直接分享單個文件。

簡單配置

linux的包管理器大多可以直接安裝,然后運行Syncthing就可以啟動,默認只提供了瀏覽器的web端管理UI,在 127.0.0.1:8384 訪問。

兩個節點都安裝啟動后,可以直接通過id添加對方。運行Syncting的各個節點之間沒有主從的區別,通過共享文件夾的方式全部同步為相同的文件狀態。添加后需要在對方的web UI中確認。

如果在沒有桌面環境的linux服務器(如VPS)上安裝,需要在 ~/.config/syncthing/config.xml 配置中將127.0.0.1改為0.0.0.0,防火牆放開8384端口、22000端口。然后在本地瀏覽器中用服務器 ip:8384 訪問。

直連服務器配置

在局域網內或者連接有公網ip的主機時,會默認使用直連的方式。當兩個主機不能直接連接,或者網絡狀態不好時,會通過relay中繼服務器連接。

VPS的web UI中直連的listener選項卡為:

quic://0.0.0.0:22000

tcp://0.0.0.0:22000

連接VPS時,在address選項中將上面0.0.0.0替換成VPS服務器的ip,替代默認的dynamic即可。

文件版本保存

一個文件可能會修改多次,文件夾的設置中有File Version選項,可以按時間、修改次數、刪除等方式備份多個版本,具體設置界面有說明。

安全相關

每個節點的id不包含隱私信息,連接時以及分享文件夾時都需要在兩個節點的web UI中確認,id沒必要加密保存。節點之間的數據傳輸通過TLS加密,不用太考慮中心服務器導致的隱私問題。

web UI 頁面直接暴露給外網可能會容易被被端口掃描后攻擊,可以設置密碼加強安全性。或者通過反向代理隱藏web UI的端口,具體配置在 https://docs.syncthing.net/users/reverseproxy.html。關於反向代理踩的一個小坑:nginx設置中的location /syncthing/后面的斜杠不能漏。

文件分享

Syncthing不支持文件分享,只能間接的處理,下面放個簡單的nginx配置解決web服務中分享某個文件文件的下載功能。(至於上傳,可以考慮sftp、samba一類的服務,這個比較弱)

     location /file_share/ {
            alias /home/user/Syncthing/public/;
            autoindex on;
            autoindex_exact_size off;  # 文件大小顯示MB,GB單位,默認為b;
            autoindex_localtime on;    # 服務器本地時區顯示文件修改日期
        }

基本原理

同步設計上首先將大文件切割成block,小文件直接單獨作為block(和HDFS的操作類似)。對每個block計算hash值,通過hash值判斷文件的完整性和變化(可以自動識別重命名)。當發生文件變化時,操作系統會通知Syncthing程序,Syncthing程序之間傳輸元數據信息以及變化的數據。

連接上每個Syncthing程序通過唯一id識別,默認打開了本地發現(local discovery)和全網發現(global discovery)。本地發現能夠在添加其它節點時自動找到局域網內的其它服務,全局發現依賴了額外的官方服務器,能根據id直接找到對應的節點(不確定ip是通過id算出來的還是全局發現找到的)。

為了使不在同一個局域網下的節點能夠同步,官方提供了relay服務器作為中介,不在局域網內的同步默認可以直接通過官方relay服務器進行,也可以自己在有公網ip的機器上架服務。relay服務默認為開啟狀態,局域網內的節點可能由於網絡狀況等問題從直連轉為relay連接,在配置的web GUI中的Remote Devices下的address中可以看到是直接的ip還是帶relay的ip,此處配置可以修改。

Sycnthing默認有幾個地方會連接官方服務器:1. 使用數據收集(第一次打開web UI會詢問是否同意);2. 全局發現;3. relay中繼服務器。為了方便無所謂,如果只是想單純在網絡可以互通的環境下使用文件同步,可以考慮在設置中把這幾個都關了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM