UI设计 薇晓朵数字商城

 找回密碼
 加入我們

Syncthing開源免費跨平臺的文件同步工具-利用Syncthing搭建免費同步網盤

[複製鏈接]
小猪哼囔 發表於 2024-3-24 20:42:08 | 顯示全部樓層 |閱讀模式
現在免費的網盤服務非常地多,國內的就有百度網盤、阿里網盤等,基本上可以滿足個人的網盤存儲需要。然而,我們除了存儲需要,更多的希望有一個可以同步的網盤,畢竟現在手機、電腦PC、辦公室、學校、家庭等多個終端,迫切需要一個可以將文件實時同步的工具。

實時同步網盤,其實可以選擇也挺多的,在十個國外優秀的網盤雲存儲使用對比一文中,分享的網盤OneDrive、Google Drive、Dropbox、Box.com、iCloud等都是支持自動同步備份的,只可惜這些網盤很多都是打不開的。國內的堅果雲在同步這一塊做得不錯,但是免費的額度太少了,不能滿足大量同步的需要。

本篇文章要分享的開源免費跨平臺的文件同步工具Syncthing,可以實現實時同步備份搭建個人同步網盤的功能,挖站否試用了一下發現Syncthing完全可以替代市面上這些同步網盤。Syncthing可以運行在Windows、Linux、MacOS等全平臺上,而且提供了安卓手機APP,功能非常強大。

Syncthing開源免費跨平臺的文件同步工具-利用Syncthing搭建免費同步網盤
Syncthing安裝簡單,網絡要求低 ,提供完善的版本控制,更適合用於私有分享,而不適合用於公有分享。如果你想搭建一個公有分享的網盤,這裡有:

NextCloud與Seafile對比使用-NextCloud各項全能 Seafile優勢突出
ZFile自建免費公共網盤服務-支持阿里雲OSS,OneDrive,FTP,S3協議等雲存儲
目錄列表程序整理彙總-OneDrive,阿里雲盤,GoogleDrive等各大網盤目錄列表程序
PS:更新記錄。

1、如果不想用第三方服務器即可讓多臺電腦之間直接互相同步和共享文件,可以用:Resilio Sync文件同步共享工具-Resilio Sync Docker安裝與使用教程。2022.12.9

一、Syncthing下載安裝
網站:

官網:https://syncthing.net/
下載:https://syncthing.net/downloads/
項目:https://github.com/syncthing/syncthing/releases
1.1 Windows
對於Windows系統,可以直接安裝官方提供的安裝包:SyncTrayzor,下載地址:https://github.com/canton7/SyncTrayzor/releases/latest

SyncTrayzor 是 Windows 上 Syncthing 的一個小托盤實用程序。它託管和包裝了 Syncthing,使其運行起來更像原生 Windows 應用程序,而不像帶有 Web 瀏覽器界面的命令行實用程序。

Syncthing Windows系統軟件
當然,官方原裝的Syncthing程序也是不錯的,下載地址:https://github.com/syncthing/syncthing/releases,運行後會打開命令窗口和瀏覽器,它的管理方式是通過Web方式管理的。

Syncthing本地運行
1.2 macOS
對於蘋果電腦用戶,請下載安裝包:syncthing-macos,下載地址:https://github.com/syncthing/syncthing-macos/releases/latest

Syncthing蘋果電腦軟件
syncthing-macos支持系統首選瀏覽器的托盤中打開 Syncthing WebGUI、可選擇在登錄時啟動,因此您無需將 Syncthing 設置為服務、自動更新、在 Finder 中打開共享文件夾等。

1.3 手機APP
安卓手機APP:

Google Play :https://play.google.com/store/apps/details?id=com.nutomic.syncthingandroid
F-Droid:https://f-droid.org/packages/com.nutomic.syncthingandroid/
開源項目:

syncthing-android:https://github.com/syncthing/syncthing-android
Syncthing-Fork:https://github.com/catfriend1/syncthing-android
Syncthing手機APP
syncthing手機APP主要功能有:文件夾、設備和整體同步進度可以輕鬆地從 UI 中讀取、“Syncthing 相機”、“每小時同步一次”以節省更多電量、可以為每個設備和每個文件夾應用單獨的同步條件(對於專家用戶)、無論 syncthing 是否正在運行,都可以更改文件夾和設備配置。

Syncthing手機同步
1.4 多終端同步?
Syncthing 採用了與 Resilio Sync (BitTorrent Sync) 類似的 P2P 分佈式技術,無需中心服務器,即可讓多臺設備互相實時同步文件。不過前提條件是:至少有一臺設備是保持在線的,否則會出現文件同步衝突。

Syncthing多終端同步
簡單的解決辦法:保持一臺設備始終開機在線。最佳解決辦法:利用VPS主機安裝運行Syncthing ,這樣可實現多終端24小時實時同步。

二、Syncthing安裝教程
2.1 準備一臺VPS
為了保證Syncthing 可以多終端24小時實時同步,我們需要用到VPS主機。現在VPS主機也差不多是白菜價了,選購VPS主機請參考:VPS主機排行榜單。

2.2 Syncthing安裝
對於安裝Windows系統的VPS主機,你可以直接下載安裝SyncTrayzor ,這裡主要介紹Linux系統的VPS主機:

Debian/Ubuntu 系統

網站:https://apt.syncthing.net
首先是添加 key.

# Add the release PGP keys:
sudo curl -o /usr/share/keyrings/syncthing-archive-keyring.gpg https://syncthing.net/release-key.gpg
添加穩定版APT源.

# Add the "stable" channel to your APT sources:
echo "deb [signed-by=/usr/share/keyrings/syncthing-archive-keyring.gpg] https://apt.syncthing.net/ syncthing stable" | sudo tee /etc/apt/sources.list.d/syncthing.list
或者添加測試版源.

# Add the "candidate" channel to your APT sources:
echo "deb [signed-by=/usr/share/keyrings/syncthing-archive-keyring.gpg] https://apt.syncthing.net/ syncthing candidate" | sudo tee /etc/apt/sources.list.d/syncthing.list
開始安裝命令如下:

# Update and install syncthing:
sudo apt-get update
sudo apt-get install syncthing
Syncthing安裝
其它Linux系統通用安裝方法:

Syncthing的更新很快,記得替換Syncthing為最新版的下載地址,具體地址請進入官網的Github下載頁面。

### 下載客戶端
wget https://github.com/syncthing/syncthing/releases/download/v1.20.2/syncthing-linux-arm64-v1.20.2.tar.gz
### 解壓
tar -zxvf syncthing-linux-arm64-v1.20.2.tar.gz
### 進入目錄
cd syncthing-linux-arm64-v1.20.2
### 複製到環境變量
cp syncthing /usr/local/bin/
Syncthing更新命令如下:

sudo syncthing --upgrade
2.3 Syncthing運行
執行命令開始運行Syncthing:syncthing

Syncthing開始運行
這時你會看到Syncthing運行信息了。

root@c2022061103720:~# syncthing
[start] 2022/07/02 12:14:08 INFO: syncthing v1.20.3-rc.2 "Fermium Flea" (go1.18.3 linux-amd64) [email protected] 2022-06-27 04:05:49 UTC [noupgrade]
[start] 2022/07/02 12:14:08 INFO: Generating ECDSA key and certificate for syncthing...
[start] 2022/07/02 12:14:08 INFO: Default folder created and/or linked to new config
[start] 2022/07/02 12:14:08 INFO: Default config saved. Edit /root/.config/syncthing/config.xml to taste (with Syncthing stopped) or use the GUI
[start] 2022/07/02 12:14:08 INFO: Archiving a copy of old config file format at: /root/.config/syncthing/config.xml.v0
[4I6IG] 2022/07/02 12:14:08 INFO: My ID: 4I6IGH3-7IEBSUO-M34V5AO-LAVDMT4-5ESZFME-OU74SOX-25TSEDS-F4N6OQN
[4I6IG] 2022/07/02 12:14:09 INFO: Single thread SHA256 performance is 217 MB/s using minio/sha256-simd (201 MB/s using crypto/sha256).
[4I6IG] 2022/07/02 12:14:09 INFO: Hashing performance is 187.82 MB/s
[4I6IG] 2022/07/02 12:14:09 INFO: Running database migration 1...
[4I6IG] 2022/07/02 12:14:09 INFO: Running database migration 2...
[4I6IG] 2022/07/02 12:14:09 INFO: Using discovery mechanism: IPv4 local broadcast discovery on port 21027
[4I6IG] 2022/07/02 12:14:09 INFO: Using discovery mechanism: IPv6 local multicast discovery on address [ff12::8384]:21027
[4I6IG] 2022/07/02 12:14:09 INFO: TCP listener ([::]:22000) starting
[4I6IG] 2022/07/02 12:14:09 INFO: Relay listener (dynamic+https://relays.syncthing.net/endpoint) starting
2022/07/02 12:14:09 failed to sufficiently increase receive buffer size (was: 208 kiB, wanted: 2048 kiB, got: 416 kiB). See https://github.com/lucas-clemente/quic-go/wiki/UDP-Receive-Buffer-Size for details.
[4I6IG] 2022/07/02 12:14:09 INFO: Loading HTTPS certificate: open /root/.config/syncthing/https-cert.pem: no such file or directory
[4I6IG] 2022/07/02 12:14:09 INFO: Creating new HTTPS certificate
[4I6IG] 2022/07/02 12:14:09 INFO: GUI and API listening on 127.0.0.1:8384
[4I6IG] 2022/07/02 12:14:09 INFO: Access the GUI via the following URL: http://127.0.0.1:8384/
[4I6IG] 2022/07/02 12:14:09 INFO: QUIC listener ([::]:22000) starting
[4I6IG] 2022/07/02 12:14:09 INFO: My name is "c2022061103720"
[4I6IG] 2022/07/02 12:14:09 WARNING: Syncthing should not run as a privileged or system user. Please consider using a normal user account.
[4I6IG] 2022/07/02 12:14:09 INFO: Ready to synchronize "Default Folder" (default) (sendreceive)
[4I6IG] 2022/07/02 12:14:09 INFO: Completed initial scan of sendreceive folder "Default Folder" (default)
[4I6IG] 2022/07/02 12:14:10 INFO: quic://0.0.0.0:22000 detected NAT type: Full cone NAT
[4I6IG] 2022/07/02 12:14:10 INFO: quic://0.0.0.0:22000 resolved external address quic://156.247.14.1:22000 (via stun.syncthing.net:3478)
[4I6IG] 2022/07/02 12:14:19 INFO: Detected 0 NAT services
[4I6IG] 2022/07/02 12:15:07 INFO: Joined relay relay://45.33.16.96:443
Syncthing 默認監聽以下幾個端口:

22000 (TCP) --節點訪問端口
8384 (TCP) --Web控制端口
21027 (UDP)
44647 (UDP)
37269 (UDP)
開放防火牆端口請根據自己服務器的情況來設置,使用CTRL + C停止運行。修改生成的配置文件,定位到/root/.config/syncthing/config.xml, 將127.0.0.1:8384改成 0.0.0.0:8384 即可。

Syncthing修改配置文件
現在 Linux 版本的 Syncthing 已經搭建完成,輸入syncthing運行它。然後就可以在瀏覽器輸入你的服務器IP:8384訪問管理它了。

Syncthing瀏覽器打開
2.4 Syncthing域名
網站:https://docs.syncthing.net/users/reverseproxy.html
(可選)這一步是可選,畢竟VPS主機用IP地址也可以直接使用Syncthing,但是想要長期使用建議還是上域名+SSL證書,這樣可以保證安全性和便捷性。免費域名申請:免費域名.tk,.ml,.ga,.cf,.gq申請註冊和DNS解析。

首先,在VPS主機上安裝好Nginx,建議使用Oneinstack或者LNMP一鍵安裝包,在安裝時僅選擇安裝Nginx即可。

然後在Oneinstack或者LNMP一鍵安裝包中添加網站,綁定好域名,一鍵設置好SSL證書。最後,打開域名的Nginx配置文件,參考以下反向綁定域名配置文件:

server {
listen 80;
listen [::]:80;
listen 443 ssl http2;
listen [::]:443 ssl http2;
ssl_certificate /usr/local/nginx/conf/ssl/hczj.wzfou.me.crt;
ssl_certificate_key /usr/local/nginx/conf/ssl/hczj.wzfou.me.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_timeout 10m;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_buffer_size 1400;
add_header Strict-Transport-Security max-age=15768000;
ssl_stapling on;
ssl_stapling_verify on;
server_name hczj.wzfou.me;
access_log /data/wwwlogs/hczj.wzfou.me_nginx.log combined;
index index.html index.htm index.php;
root /data/wwwroot/hczj.wzfou.me;
if ($ssl_protocol = "") { return 301 https://$host$request_uri; }

include /usr/local/nginx/conf/rewrite/none.conf;
#error_page 404 /404.html;
#error_page 502 /502.html;

#反向綁定域名部分
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;

proxy_pass http://localhost:8384/;

proxy_read_timeout 600s;
proxy_send_timeout 600s;
}
#反向綁定域名部分

}
Syncthing使用域名+SSL證書訪問如下:

Syncthing使用域名訪問
其它的Web平臺域名反向綁定域名配置如下:

Apache

首先確認開啟Apache module,命令是: a2enmod proxy_http headers.

然後添加以下配置到你的 Apache httpd configuration:

<Location />
ProxyPass http://localhost:8384/
ProxyPassReverse http://localhost:8384/
RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME}
Require all granted
</Location>
Caddy

proxy / localhost:8384 {
transparent
}

timeouts {
read none
write none
header none
}
Caddy v2

handle_path /* {
uri strip_prefix /
reverse_proxy http://localhost:8384 {
header_up Host {upstream_hostport}
header_up X-Forwarded-Host {host}
}
}
三、Syncthing同步設置
3.1 添加同步設備
假設你現在有A、B兩臺設設備要同步。A為本地電腦PC,B為VPS主機服務端,首先在本地電腦PC上設置一個你想要同步的文件夾。

Syncthing添加同步設備
然後點擊右上角,顯示ID。

Syncthing顯示ID
然後,到VPS主機服務器B點擊添加遠程設備。

Syncthing遠程設備Syncthing找到ID
輸入設備ID,確認保存。

Syncthing確認添加
這時在A處可以看到提示,詢問你是否允許添加遠程設備。

Syncthing確認添加
3.2 添加同步文件夾
同意之後,你就可以將本地電腦PC的想要共享出來的文件夾,添加進來,允許共享。

Syncthing添加同步文件夾
現在你在本地電腦PC上任何操作就會自動同步到VPS主機服務端了,當然在VPS主機服務器端的任何操作也會同步到本地電腦PC端了。

Syncthing同步操作
3.3 實現實時同步
在Syncthing可以看到實時同步速度。

Syncthing同步速度
Syncthing同步完成後,你在任意一個客戶端或者服務端能看到文件變化。

Syncthing同步變化
Syncthing的日誌也會詳細記錄你的同步記錄。

Syncthing同步記錄
四、Syncthing使用問題
4.1 設置管理密碼
Syncthing默認的是不需要密碼就可以進入管理的,如果你把Syncthing運行在服務端的話,最好是設置一個密碼。

Syncthing設置密碼Syncthing安全設置
4.2 文件版本控制
Syncthing支持文件版本控制,如果你誤刪除了文件,還可以從這裡找回來。

Syncthing版本控制
4.3 忽略文件同步
“忽略模式”允許用戶排除主文件夾下不想被同步的文件夾或內容,需要用到通配符。

Syncthing忽略同步
通配符如下:

星號 (*) 匹配文件名中的零個或多個字符,但不匹配目錄分隔符。 te*ne 匹配電話、子目錄/電話但不匹配電話/電話。

雙星號 (**) 與上述匹配,但也匹配目錄分隔符。 te**ne 匹配電話、子目錄/電話和電話/子/目錄/電話。

問號 (?) 匹配不是目錄分隔符的單個字符。 te??st 匹配 tebest 但不匹配 teb/st 或 test。

方括號 ([]) 表示字符範圍:[a-z] 匹配任何小寫字符。

花括號 ({}) 表示一組逗號分隔的替代項:{banana,pineapple} 匹配香蕉或菠蘿。

反斜槓 (\) “轉義”一個特殊字符,使其失去其特殊含義。例如,\{banana\} 與 {banana} 完全匹配,並且不表示上面的一組替代項。

4.4 禁止IP訪問
如果你已經成功綁定了域名到Syncthing,想要禁止使用IP訪問Syncthing,那麼把配置文件作如下修改即可。

把端口設置成:0.0.0.0:8384,那麼syncthing可以通過ip進行訪問 。
把端口設置成:127.0.0.1:8384,那麼只能通過域名訪問,這個時候只有通過nginx代*%¥理才能訪問到127.0.0.1這個本地地址。

4.5 加快傳輸速度
如果你的Syncthing終端設備處於局域網內,系統會進行網絡尋址數據流不會經過路由器直接在局域網內同步。如果你的Syncthing終端設備沒在一個局域網也沒有對應的公網 IP ,Syncthing 通過它分佈全球的中繼服務器進行數據同步。

Syncthing加快傳輸速度
但是這樣的話速度會慢了,如果你是用VPS主機架構的Syncthing,我們完全可以讓Syncthing直接使用VPS主機的帶寬來傳輸,這樣可以加快Syncthing傳輸速度了。在設置當中關閉“全球發現”和“NAT服務”。

4.6 Syncthing遷移
官方原裝的Syncthing程序已經可以滿足大部分人的需求了,不過有人會更喜歡軟件版的Syncthing程序,兩者其實是可以相互遷移的。原裝的Syncthing程序的數據一般是保存在以下路徑:

C:\Users\Qi\AppData\Local\Syncthing
Syncthing數據遷移
將這個Syncthing文件夾替換SyncTrayzor這類軟件版的Syncthing程序下的Syncthing文件夾即可。

Syncthing替換數據文件
4.7 保持後臺運行
對於VPS主機運行syncthing如果關閉終端,syncthing也會停止運行,可以將syncthing放在後臺,命令如下:

nohup syncthing &
4.8 開機自動運行
網站:https://docs.syncthing.net/users/autostart.html
採用 Supervisord 開機自動啟動並保持運行

進入 /etc/supervisor/conf.d/ 新建文件命名syncthing.conf  ,用以下內容替換(記得把<USERNAME> 替換成你自己的用戶名,例如root):

[program:syncthing]
autorestart = True
directory = /home/<USERNAME>/
user = <USERNAME>
command = /usr/bin/syncthing --no-browser --home="/home/<USERNAME>/.config/syncthing"
environment = STNORESTART="1", HOME="/home/<USERNAME>"
重新加載 Supervisord:

supervisorctl reload
啟動:

supervisorctl start syncthing
檢查是否正常:

supervisorctl status syncthing
有錯誤可以查看日誌:

supervisorctl tail syncthing
採用 systemd開機自動啟動並保持運行

直接添加一個配置文件:

vim /usr/lib/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/local/bin/syncthing -no-browser -no-restart -logflags=0
Restart=on-failure
SuccessExitStatus=3 4
RestartForceExitStatus=3 4

[Install]
WantedBy=multi-user.target
然後保存退出,之後就可以通過systemd進行啟動和管理了,注意注意把命令裡面的root替換成自己的用戶名:

# 啟動syncthing
systemctl start [email protected]

# 查看syncthing運行狀態
systemctl status [email protected]

# 停止syncthing
systemctl stop [email protected]

# 設置syncthing開機自啟
systemctl enable [email protected]

# 關閉syncthing開機自啟
systemctl disable [email protected]
或者可以用--user參數來運行

1systemctl –root start syncthing
回復

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 加入我們

本版積分規則

备案权重域名预定

QQ|4um創業社區

GMT+8, 2024-5-10 01:57

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回復 返回頂部 返回列表