|
出处:https://blog.csdn.net/weixin_429 ... 21699-null-null.142^v100^pc_search_result_base8&utm_term=Syncthing&spm=1018.2226.3001.4187# R1 j9 T2 a/ k' j4 S" [) E
* P% F0 X! l$ a- j" I8 |4 H6 o1 J
; P; F l% J9 _1 f( J
简介
: Q4 Y$ T9 g: Q4 @2 _2 d4 hSyncthing是一款开源的文件同步工具,可以通过本地网络或互联网实现多台设备之间的文件同步。与其他同步工具不同,Syncthing强调隐私和安全,确保用户的数据始终处于用户的控制之下。
3 A9 o. r% v, W' @
/ p8 l0 }( U# g3 U功能与特点
0 M4 H. h8 Z" v o+ l3 l, `5 R开源软件:2 Z+ I3 v1 c& |% q5 H: e$ K
% m4 b& u2 {$ S+ I2 OSyncthing是完全开源的,源代码托管在GitHub上,任何人都可以查看、审查和贡献代码。这种透明性增强了用户对软件安全性的信任。1 P. C. D. F' ^3 M, E
去中心化:
9 N1 w. W0 _$ O" f, k9 C; A. O0 V4 H5 `9 u
Syncthing采用P2P(点对点)架构,没有中央服务器,所有数据传输直接在设备之间进行。这不仅提高了数据传输速度,还消除了对第三方服务器的依赖。$ { a7 J/ N% i/ Y4 }. B
跨平台支持:
' R/ z4 L. O6 P$ J) r0 K2 ^% V) M2 z
Syncthing支持多种操作系统,包括Windows、macOS、Linux、BSD、Solaris、Android等,能够满足不同用户的需求。
# i" L8 m- g# j0 M: @/ W安全性:
]: Q) Y3 P1 N' F( d( h$ H1 f8 S; b. [" g, B/ M* ]% C1 H
数据在传输过程中使用TLS加密,确保通信的安全性。此外,每个节点都有唯一的设备ID,通过设备ID进行认证和连接,防止未经授权的设备访问。
- ]' ~! C( e8 X; \5 E; \实时同步:
+ |$ N) t* P/ c. x& k$ w: F/ M; \( k8 X
文件修改后会立即触发同步操作,实现实时更新。Syncthing能够检测文件的变化,并迅速同步到其他设备上。
2 U/ i, k4 l& B& b- H版本控制:' [, `6 e+ y$ ?& g; Z# R
; q; Y$ S- X. @, ~( `8 ^
Syncthing支持文件版本控制,可以保留多个文件版本,方便用户在需要时恢复到之前的版本。
8 d- {1 P# b0 o6 N1 T) v配置灵活:
9 Y( M" d/ Y) @- _8 D* t
9 g8 u/ r. l; C: Y' bSyncthing提供了丰富的配置选项,用户可以根据需要设置同步目录、同步频率、带宽限制等参数,满足不同的使用场景。1 U3 `7 f! O8 f- _" h
简单易用:
! t) t; r' p% `' |2 e$ J" ~+ W/ _ X
通过一个友好的Web GUI(图形用户界面),用户可以轻松管理和监控同步状态,进行配置修改。
' b4 J+ R; E6 p0 d, c优点9 C4 C/ K) |' W) l2 ~! m* _
隐私保护:
8 ^+ |! D/ {! ?/ C' `0 s9 q" T8 s$ |0 l# y* C' {8 }; i/ }
因为不依赖于任何中央服务器,用户的数据不会存储在第三方服务器上,完全在用户的掌控之中,极大地保护了隐私。
* M& t- @1 ]: ?: ^- {高效的带宽利用:* z) N( x$ E0 J) _2 B
6 _8 a; h$ d9 W5 _: o5 i3 }. TSyncthing在同步过程中只传输更改的部分(增量同步),而不是整个文件,从而提高了带宽利用率,节省了传输时间和资源。) a2 e! t! c# f2 }0 `0 k+ R
安全性高:* m+ e' {# Q+ {7 v
& z2 t; r* n6 D* u) k; |7 L使用TLS加密传输数据,设备之间的通信经过认证,防止中间人攻击和未经授权的访问。* n; [' P1 Q4 d
无缝集成:
p4 E4 `4 A! H. ]5 |/ A- o/ f
7 P4 [, w8 R1 T5 Z) j; ^3 wSyncthing可以在多种操作系统上运行,并且支持多设备同步,用户可以轻松地在家用电脑、工作电脑、手机等多个设备之间同步文件。1 n" ?1 O6 `' h* _1 W3 b8 X. k3 A
社区支持:
' a% M: Z3 Y( S& H2 g" d2 [- r" g0 Y( x( j' f& }! s
作为开源项目,Syncthing拥有活跃的社区支持,用户可以从社区获得帮助和建议,及时解决使用过程中遇到的问题。" j2 J$ X& g" d
定制化:
/ X8 t4 n! Y& V4 z/ M( V" u. u+ y! |* s
用户可以根据自己的需求进行高度定制,包括选择需要同步的文件夹、设置不同的同步策略和频率、限制带宽使用等。* i5 q% a, H% O7 I3 ^/ W
可靠性:
2 x( h. c# O, {+ O- J. x( [; M6 x- h
; O+ n3 M- {& V9 SSyncthing的设计使其在网络断开后能够自动恢复同步操作,并且支持自动解决同步冲突,确保数据的一致性和可靠性。7 h2 I' f* l3 i, a! F8 D9 X
安装教程
/ W. f, p4 O5 Z$ D& K% Q; K注:博主安装过该工具,下面的安装教程,可能会出现一点点区别,不过按照以下操作进行搭建是可以成功的。
6 W3 }& X: D* I' H: N% ?) \/ I1 _; j
官方下载地址:https://syncthing.net/downloads/9 Z9 L! f+ i& s; m! N
选择对应的版本进行下载。
; [' V4 I K ~9 e1 _: R3 {: J( Z& w/ a: C/ s
本文采用两个同步平台为Windows和Ubuntu。可以通过链接:https://wwt.lanzoue.com/b0fomam7g下载本文所对应的安装包。下载密码:hx905 M3 F7 c% b4 Q u; t
- I- L" |3 H( V两台电脑能实现文件同步的前提是两台电脑的网络能够相互访问。如果一台电脑在内网中,一台在有公网IP的服务器上。可以用有公网IP的服务器搭建一个frp内网穿透工具,通过内网穿透后,就可以实现两台电脑进行网络通信了。0 L" z, T1 X( P& n" d
1 {2 t8 U4 r% v5 k3 ^/ ^Windows安装
: V* b) c" w5 Y4 w解压安装包,然后双击syncthing.exe打开。/ X* w3 m) ^9 d0 J) d/ ~: _
/ F$ J S) m* r) W: N* M- E, B/ k
出现这个界面后,可以看见web界面访问地址。初次安装应该会直接在浏览器中打开该地址,然后有一个提示对话框,匿名报告相关的,可以选择否。! L/ Y7 B6 y I) q/ h" L
, |) H8 O+ Z7 B能出现该界面就说明安装成功了。先不用管界面是否完全一样,下面会介绍如何进行配置。
) M7 _1 Y$ v A! J, b7 a2 t
' ~" w& y# X5 m8 r' y$ L! ]Ubuntu安装
0 S$ S+ g$ f/ w将Linux版的文件上传到服务器,这里使用xshell配合xftp进行操作。
: Y+ E! v3 Q) J1 U ^ X! T7 h在xshell中连接成功后,可以点上面图标。
1 U0 N2 P- e4 k- N( d0 K% y2 I; P0 Y9 o
接下来就可以将文件拖拽到Ubuntu中了。
4 \2 O' Q& ]4 K5 e, h/ c' X
' G7 p# P3 Y8 @; \6 `
/ M/ H4 R' J; \( ~/ Q/ }接下来解压文件tar -zxf syncthing-linux-amd64-v1.27.9.tar.gz。
: {9 v: j. E" _+ ^" |$ w1 W7 \) C
这里可以修改文件夹的名称。用mv syncthing-linux-amd64-v1.27.9 syncthing就可以。博主前面安装过了,这点就不修改了。, G4 K. w. l: ]
进入syncthing-linux-amd64-v1.27.9文件夹。使用./syncthing serve就可以启动。
* t6 s4 K" `- D: M3 f% W5 _" E& q. i" E
这时如果是图形化的Ubuntu,就可以在Ubuntu浏览器中打开http://127.0.0.1:8384/。博主采用的是腾讯云的vps,直接用ip访问不了。这里需要进行一步操作。
% J. ` x8 h+ W) u4 L" ^. F( j7 x6 H* F
配置远程ip访问. I5 b% f1 E) t" T: J3 e
先Ctrl + C停掉服务。
4 {6 X4 N" B! o; E查看官方文档后,使用命令./syncthing serve --gui-address=0.0.0.0:8384配置。 L9 v8 l. }5 F3 ]; K% H- S
. B2 @* x: B! {/ S这样就可以远程通过ip访问了,不过你的服务器防火墙需要放行端口。+ h2 _: v% L5 z) }1 m
9 E7 J1 h, t. z
! e- \+ \2 C. Y8 B3 l配置同步文件夹$ O# |+ P# n& l
这里需要用到工具的ID,先去服务端查看,启动服务的时候就会显示,现在可以通过web界面进行查看。客户端同理。
. k. K3 W- q& C% M0 z. y. K3 t* o: n' }2 h, w( M/ R
刚才复制的是服务端的ID,那么现在就打开客户端的web管理界面。5 E) g2 {2 h, X0 G2 c5 W
; \6 v) ]$ H1 E$ V
" e7 z8 q! j7 _* H$ e! A如果只是局域网操作,这里直接保存即可。
1 a( ^# g0 Z* X5 `如果想公网访问,就可以内网穿透工具。在服务器搭建内网穿透工具,可以参考这篇文章:https://blog.csdn.net/weixin_42951763/article/details/140420245
7 Y* e& `7 I3 e* c只需要将链接中Windows客户端的配置修改即可,这里给出一个参考。
/ h) m# ^- m3 N
6 V B& C9 |8 Z% f5 L7 s, b在启动的时候可以看见tcp使用的默认端口。
% m0 g0 T% c' ~$ h9 y" a/ T2 s c1 _5 g
& ]! @: K% b& Z* | o! g
配置Ubuntu服务端。打开服务端的web界面。
( M k* l! p- J, d( d1 p0 V" [; ]" r! c& l$ _0 v& J
在高级设置中,配置一下地址。# k9 _5 \" ^% U D* U
' {& w6 A* R5 l3 L7 B- Y这里再解释一下这个地址。3 o- g/ e$ Q0 u; s3 F! E1 z" b) {
Windows中的IP不是公网IP,所以Ubuntu服务端不能直接访问到Windows这个客户端。因此才有了frp内网穿透,把Windows映射到公网中。通过映射后的公网IP加上端口,就可以访问到Windows这个内网中的客户端了。0 C+ ?. u A; }) {" u/ ]5 f4 j
3 ?+ c/ Z6 d5 \接下来就可以创建共享的文件夹了。# L) z& T/ G( w/ w2 u
先在Windows这边创建。2 b! e" c1 l* X; F* d3 h1 L
; B& E! X$ P5 @8 v4 R
* w5 h. C. n. P( Q+ \6 a3 I文件夹共享给Ubuntu。1 y1 b( d2 Z" G1 M
# ^. i1 u+ G/ j9 F( t: h/ Z文件夹版本控制。官方文档的文件版本控制介绍。3 ~! j p) y: Y! }: q9 w
$ Y) K/ l- C; G# ?% m, W
0 S1 n+ S8 L* T3 u9 q1 s3 Q. T到这点Windows的就配置好了。# ^, A6 P+ s" r5 O
这时去到服务端Ubuntu的web界面。" n& {* F8 |* v# \& B/ ^3 b T3 C* [
4 t0 e4 \9 X; ^) V& P可以看见出现了一个新文件夹,这时点击添加即可。如果没有出现,可能的原因是服务端这边还没有与Windows进行连接。再次检查一下远程设备是否已经同步完成。' z6 j2 `8 j9 L1 S' v1 C5 U3 K- t
7 i$ e+ J% g/ R
这里选择共享给Windows,这样就可以把Ubuntu变化后的文件也同步到Windows里面。/ ]$ ^& R. ~ K* a1 R. e6 }
" c) `3 t0 B+ W8 H
这样就实现了简单的双向同步文件。9 X% v1 Z; H- a# O; H7 {* @3 {
8 A# k$ H1 Y5 ^( w% y/ c
Syncthing开机自启
& o \4 N r" j. JWindows
/ s, }3 C) t. s2 }利用bat文件来实现。
S/ {" _( e; g4 L在Syncthing的文件根目录中新建一个bat文件,放在这里是方便管理,也可以放在其他地方。% W( a7 e% K9 D- f% l7 F! X( v
2 @% p4 H% S( }7 x: x+ Tbat文件内容如下:4 V7 o' s# w9 {7 f1 P
# M8 o! }- Q" X, [/ d% \
@echo off, ?" V2 _: `9 f, [9 S
3 T* O5 i5 X* \ p+ b) sif "%1"=="h" goto begin
' `. v5 L- y) _/ g2 Q: F; D
4 p% j, ?& U- j9 \8 |. _start mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
6 N0 w- K* _( K! ?: X9 P9 G; o+ G! d2 e6 K* u% l; M: v
:begin8 I) R. C" |+ `
: W' \/ \7 x( i( h0 i* R
cd /d D:\syncthing && syncthing.exe serve --no-browser --no-restart --logflags=0! }. @! P% |& p( \& U
1
: q; `8 g' l7 y" T1 ?$ P F& j' J% l24 {4 D2 ?& A1 g
32 ^8 r0 y' m1 c: y
4
" K; R1 D1 d$ |5$ m4 s+ o+ F) I. G* {% r
6
5 j5 E' H' n3 _* u5 E( I) C7
+ r. t# o5 ^, `9 e- x$ O8
- R' _: x/ J0 Y3 \( M/ R98 F& h5 U/ q% A
只需要修改下图红框中的路径为自己的路径即可。8 Q* K9 C( H- p7 {- r- Y! e6 J0 X0 j
5 T4 W% O0 ~0 h& q3 D4 R3 u
7 Q2 R9 G/ E2 @' n1 V: N然后保存退出。在bat文件右键创建快捷方式。- q7 M/ |$ R* a' @* T1 W( K, M
# E- q* `8 N8 u: C) ?" w2 j2 }
使用win + R打开运行对话框,输入:shell:startup回车。将刚才创建的快捷方式移动到这个目录里面。
: N5 v6 G. i- w! C' q5 Z" n8 k! {9 S
0 j' H, D N+ o5 S1 p; W w这样就可以了。& h [0 U& e6 Z: S& A
4 J1 d- e. s& T4 c! j) u7 L
Ubuntu7 ^; b @% `( X' G/ C
查看syncthing的目录,然后记录一下这个目录。
% s! {8 s. }! t& u# Z$ B$ \7 e7 Y( m" d x- U J
使用命令:sudo vim /etc/systemd/system/syncthing@ubuntu.service,@后填写用户名。8 ]) { q ]3 s/ X" C
/ I/ `% `) h X5 O, g4 k" v$ M下图红框中的路径要修改为你自己对应的,也就是刚才查看的路径。下图绿框的syncthing是表示文件名。
% c/ D( \5 e& F, M# ~0 R( L$ B5 o; s, H
, [# J L' c( i! m
文件内容如下:) {5 u2 X' z7 ^
1 N. K! J# ~. U/ Y1 e) S: F
[Unit]
8 U& D0 Y4 _8 h: ^* b3 |: ~Description=Syncthing - Open Source Continuous File Synchronization for %I ^: j5 E% l1 E/ P# ?$ \4 L
Documentation=man:syncthing(1)" L* K% q% s3 h- c, @% v; A. h
After=network.target
, [4 ?0 K5 P! J9 A" I. ^StartLimitIntervalSec=60
# {! z1 z+ l1 X' p+ ^StartLimitBurst=4
4 y( `4 }9 x$ N
6 |! ^, j# S9 Y[Service]
; T2 P/ `4 V( Y% S; m6 kUser=%i
& p; A$ @+ K+ ~9 DExecStart=/home/ubuntu/syncthing/syncthing serve --no-browser --no-restart --logflags=0 --gui-address=0.0.0.0:8384! g/ c. q% q& @( `+ a- J
Restart=on-failure
) K4 \5 X" U8 {+ URestartSec=10 H+ J& y$ q$ L# V
SuccessExitStatus=3 4! B! W R' \9 _4 }
RestartForceExitStatus=3 4
4 w1 l+ \& m. u. f& ^/ j U: @* R
" V- v. M% N) T* W- U: G# X# Hardening
6 W! P- e0 |: I0 V U6 G8 \ProtectSystem=full
/ M5 _3 p% e' X ?% J u3 iPrivateTmp=true
/ z6 `% i# M1 E4 ^0 [SystemCallArchitectures=native
) ^+ E" |+ Q: g, j5 z9 mMemoryDenyWriteExecute=true
, m6 @, l+ I+ k% kNoNewPrivileges=true7 O6 \/ z3 x! J; \, T9 k7 o' R
2 h# ~# O X- |4 m% ^# Elevated permissions to sync ownership (disabled by default),
x( S' n3 R. J- ^; I6 [! [' A: l# see https://docs.syncthing.net/advanced/folder-sync-ownership
, m- P) e8 H& [5 @3 @8 S" G#AmbientCapabilities=CAP_CHOWN CAP_FOWNER
/ |5 C( v5 @% a4 K* r9 p) c' C; ^2 w' |
[Install]8 n' @$ {3 S+ Q0 K$ t! w' I
WantedBy=multi-user.target
0 e0 @( \$ q3 Q5 q$ S1! l3 g7 \6 l' b3 `- K' ]8 L
2
+ s: }. C0 ^0 l% {7 y8 D3* f y. _; a3 n
4
$ _2 ~1 d. R" c: g% y& Q55 z$ D0 x3 }( I/ N' S1 h* e
62 k' j6 _9 D4 e: H
7; f; ^- c" o$ D; H; O. y
8
. @, T, g; W9 G6 R7 U& H( J9% L; z0 K' S6 [( f) u
107 M0 A5 G1 o. h% S5 _$ x
11
F! I, C7 v% i2 J7 |' w! c# A0 p* J12
: ?. X, i& x+ ]8 Q9 @* r13
4 l" F1 z+ N2 F, S& y14) a0 p1 N/ S3 H7 ]; v2 }
15
& `1 _9 D) @& P. O5 t3 c3 G16
9 V% { k% }3 J% u" q e4 {17
! b) W6 t L4 {; t+ e% R186 q$ J0 G" M2 W: N8 }3 \7 K
19, B) I; {5 L- x5 C) p
20
8 G5 @1 j* z; }+ s4 d6 Y( F21
, P' M' x( Z) Z( W& L$ |22) ^; W9 l% S0 b$ X# m# F9 b8 p
23
, l7 Z3 s8 V$ g! O24
/ M0 V; E+ P' q0 A) U25, v4 i; j" ?/ @
26! `! l! ~* S% n4 u
277 B9 T- U f9 ~! E- M: ~: u4 ]
28, {. B8 Z( E/ z8 k6 l* C3 f) ^# Z$ D
提升文件的权限。
6 ~2 Y4 Z! n8 A( R4 ^3 W/ A8 G5 U' R# q' t; f! K0 S
sudo chmod +x /etc/systemd/system/syncthing@ubuntu.service% u, B: B- E9 L
1# X6 |+ h# x: a5 y; l* z
) W" _) p8 Q, `. C
2 F! L) ^( z! n& E
接下来可以使用这些命令来操作了。
. B( R& x0 `4 m3 Z. d
( k# M# ?, ?# |0 |. d3 N% ]4 m# 启动syncthing@ubuntu
~( i {2 j/ S1 V- N0 @1 H+ ysudo systemctl start syncthing@ubuntu4 ~; o1 k$ E1 o3 W1 F
# 开机自动启动syncthing@ubuntu
3 L }( a* o( B4 ^7 P( Nsudo systemctl enable syncthing@ubuntu
( [4 P# j. w5 l: M# 重启syncthing@ubuntu+ b0 B4 P) F: y! M6 [) K$ q! r
sudo systemctl restart syncthing@ubuntu
1 ^4 s4 x6 u" T4 \ M. x# 停止syncthing@ubuntu3 h( b# l! r$ h' w7 Z' I
sudo systemctl stop syncthing@ubuntu
* G- J; y, O3 G9 E N: @6 w3 b# 查看syncthing@ubuntu状态/ X7 K. f+ q2 t$ v- e
sudo systemctl status syncthing@ubuntu5 B- H( D: V8 z
————————————————
a5 n* x0 p y# r! M9 j
6 t6 @0 D/ G) J0 z; W" G- J w! q: M( Y
" r3 I# a$ a4 V$ D! G, V |
|