|
出处:https://blog.csdn.net/weixin_429 ... 21699-null-null.142^v100^pc_search_result_base8&utm_term=Syncthing&spm=1018.2226.3001.4187
9 Y; `6 J3 B6 R+ Z7 Y8 F7 C1 u# K# _6 w5 c
% M* f9 ?, J& U9 f' N& U2 g/ s* E
简介5 K6 y# [5 E; B8 _
Syncthing是一款开源的文件同步工具,可以通过本地网络或互联网实现多台设备之间的文件同步。与其他同步工具不同,Syncthing强调隐私和安全,确保用户的数据始终处于用户的控制之下。
0 Q1 u( N% H+ ?% o! U& N$ T# @( [3 @! K9 J" D
功能与特点! G9 I2 C$ I1 G8 e
开源软件:
& g' ?0 [& i9 x) X& B9 p: @! F( D( T6 ?3 }2 \+ {% y
Syncthing是完全开源的,源代码托管在GitHub上,任何人都可以查看、审查和贡献代码。这种透明性增强了用户对软件安全性的信任。$ \1 l) [/ t7 @& n& R
去中心化:
! P; d3 b( P4 f1 I' r: M- @9 }
, Q, Q, J1 X& b: N% oSyncthing采用P2P(点对点)架构,没有中央服务器,所有数据传输直接在设备之间进行。这不仅提高了数据传输速度,还消除了对第三方服务器的依赖。5 q: h& S* Y- b% N J
跨平台支持:" f" P* `9 b5 Z8 t, f u
C; }- F7 `' Q9 T# kSyncthing支持多种操作系统,包括Windows、macOS、Linux、BSD、Solaris、Android等,能够满足不同用户的需求。: S- b' C6 i# }# j* j6 E+ q7 U
安全性:
( [4 p0 H% d2 m
- K0 p& X; R4 B+ d/ f" y数据在传输过程中使用TLS加密,确保通信的安全性。此外,每个节点都有唯一的设备ID,通过设备ID进行认证和连接,防止未经授权的设备访问。. S$ {" W& ?- m0 d
实时同步:
) ?( i9 b& c" }# q
1 x N' w2 J# [* t' o) w5 ^文件修改后会立即触发同步操作,实现实时更新。Syncthing能够检测文件的变化,并迅速同步到其他设备上。& A7 t' `9 U- m+ q
版本控制:
# C& Z" y( v) |6 [- B; x( b( C$ [
2 J( h: M7 r `6 ^* |; q5 lSyncthing支持文件版本控制,可以保留多个文件版本,方便用户在需要时恢复到之前的版本。4 w* d; i* V9 { b. |# I$ g+ a- k V
配置灵活:2 L( I H7 Q; F& L
9 ^1 L5 E9 T. Y+ Q$ Q+ ?/ W k* u7 B+ nSyncthing提供了丰富的配置选项,用户可以根据需要设置同步目录、同步频率、带宽限制等参数,满足不同的使用场景。
6 h: j1 o+ @# e" ]! s7 v简单易用:, V, S* N8 u% A. O9 A; ~
; V9 o8 D( r, H; `1 d8 l
通过一个友好的Web GUI(图形用户界面),用户可以轻松管理和监控同步状态,进行配置修改。
" M- W P# ?$ i2 ?优点
[$ N6 ~& [6 M5 F隐私保护:
# [( q, I3 K* h$ j) j* [. g, ~7 h+ q
因为不依赖于任何中央服务器,用户的数据不会存储在第三方服务器上,完全在用户的掌控之中,极大地保护了隐私。
$ y' z. u* E# G5 N高效的带宽利用:* \0 W" e" S3 H: j% e
$ y0 Z& ^$ G+ `) P; XSyncthing在同步过程中只传输更改的部分(增量同步),而不是整个文件,从而提高了带宽利用率,节省了传输时间和资源。
; _! k8 Y6 {% w7 l安全性高:
& _5 F$ }" ]6 p$ L: g4 C. w) y+ G1 B2 p
使用TLS加密传输数据,设备之间的通信经过认证,防止中间人攻击和未经授权的访问。% d0 U+ r" |6 a {4 D! K) ^
无缝集成:5 w" R# e6 ~6 l* v: b: q u
# I/ c" \. }# a: n, K: B8 LSyncthing可以在多种操作系统上运行,并且支持多设备同步,用户可以轻松地在家用电脑、工作电脑、手机等多个设备之间同步文件。. v# g' X) ]7 j5 P' L* C
社区支持:* C/ \7 ?* S" ], |4 X8 X
8 x8 @: ?5 U. K- p+ N
作为开源项目,Syncthing拥有活跃的社区支持,用户可以从社区获得帮助和建议,及时解决使用过程中遇到的问题。
# A; s/ E7 V+ y! h( X定制化:
( W0 G3 u# g! [4 j# K
9 d! T! A% M# U$ _用户可以根据自己的需求进行高度定制,包括选择需要同步的文件夹、设置不同的同步策略和频率、限制带宽使用等。
# T7 _* @# o9 F) {可靠性:
% j! N4 ?. E' L2 H
. b% X$ A/ O" B8 DSyncthing的设计使其在网络断开后能够自动恢复同步操作,并且支持自动解决同步冲突,确保数据的一致性和可靠性。$ E, F$ [9 z7 C
安装教程; X2 F5 i% }$ @2 ?3 |
注:博主安装过该工具,下面的安装教程,可能会出现一点点区别,不过按照以下操作进行搭建是可以成功的。2 i5 {' h# ]" o' s- E
+ Y9 R5 g6 y/ P# Y$ f
官方下载地址:https://syncthing.net/downloads/ M3 T8 R: h! c5 C; g6 {" l
选择对应的版本进行下载。
- X% b3 e3 U: J( |: { ~
) Y& b" H" k1 E) Q6 W7 N4 U- }% ?& [7 F" r本文采用两个同步平台为Windows和Ubuntu。可以通过链接:https://wwt.lanzoue.com/b0fomam7g下载本文所对应的安装包。下载密码:hx908 e3 H5 G4 [+ ], i
: A* J( ^5 i% k7 e
两台电脑能实现文件同步的前提是两台电脑的网络能够相互访问。如果一台电脑在内网中,一台在有公网IP的服务器上。可以用有公网IP的服务器搭建一个frp内网穿透工具,通过内网穿透后,就可以实现两台电脑进行网络通信了。/ ^/ q1 L% p; X& \& V. c
: X/ v3 V- @" L8 j. o
Windows安装
$ r* @ d2 u3 B2 m% J5 z解压安装包,然后双击syncthing.exe打开。
4 ^3 r6 H5 s: D" C) h4 p: X, G6 ?9 z
出现这个界面后,可以看见web界面访问地址。初次安装应该会直接在浏览器中打开该地址,然后有一个提示对话框,匿名报告相关的,可以选择否。# L/ J' b( [, {$ q/ Y1 A0 Q
& U. w1 X; m8 k; y- W* C3 v2 X ?能出现该界面就说明安装成功了。先不用管界面是否完全一样,下面会介绍如何进行配置。3 g& D" e. }8 I* X# n0 T# U
1 u1 y+ x3 v. _9 L5 N9 Q7 c& D! j! T. c
Ubuntu安装
7 n( r7 ~8 t" x; ^2 a! v0 N将Linux版的文件上传到服务器,这里使用xshell配合xftp进行操作。
3 f& z0 T q9 E8 Q5 e在xshell中连接成功后,可以点上面图标。0 U _1 w- S5 {2 F
' b3 `9 u! g9 T x* z& O8 w2 S接下来就可以将文件拖拽到Ubuntu中了。; F( d! E% ?8 F; E- _- f& \3 q) `( m
/ z _. O+ J$ w* p
0 P: O# e9 i- F+ }# t4 S
接下来解压文件tar -zxf syncthing-linux-amd64-v1.27.9.tar.gz。$ r; L" z. i, n+ m# i4 Z
. l+ ~/ G3 J% d& ~% D
这里可以修改文件夹的名称。用mv syncthing-linux-amd64-v1.27.9 syncthing就可以。博主前面安装过了,这点就不修改了。
4 r- \" t6 l0 p2 G% _进入syncthing-linux-amd64-v1.27.9文件夹。使用./syncthing serve就可以启动。
' Z; K& T7 e, { `$ i$ x. m+ n6 ^1 Y" ?; U" F
这时如果是图形化的Ubuntu,就可以在Ubuntu浏览器中打开http://127.0.0.1:8384/。博主采用的是腾讯云的vps,直接用ip访问不了。这里需要进行一步操作。
" T- Z0 Y2 h' c% {0 w+ o! h c G! J5 d% r% I2 W
配置远程ip访问
" }, l9 d8 g5 V先Ctrl + C停掉服务。$ M; }3 m& W# b9 U4 R2 S. ?6 ^
查看官方文档后,使用命令./syncthing serve --gui-address=0.0.0.0:8384配置。* B" V3 {- r, D* j
' i8 o' n& @4 r5 K+ {! Q
这样就可以远程通过ip访问了,不过你的服务器防火墙需要放行端口。
* B/ W( u/ A: }. O+ q
- e4 c( q; h# g! p' _# `
3 B, h+ k3 A% A$ S5 G; ?- l5 d' b1 o配置同步文件夹
/ P% r: p( n1 W6 m: {这里需要用到工具的ID,先去服务端查看,启动服务的时候就会显示,现在可以通过web界面进行查看。客户端同理。
: b1 c% D. u* S$ O' W: N; Y! z- l8 e$ e2 Q1 r5 }+ M7 O
刚才复制的是服务端的ID,那么现在就打开客户端的web管理界面。: E; G0 S' f# ?) O- O( Q# W* x
1 G; D5 B8 ~+ N6 @
, @& k# `) t" J: l) Y如果只是局域网操作,这里直接保存即可。: l/ V8 t: ?" c* l' I
如果想公网访问,就可以内网穿透工具。在服务器搭建内网穿透工具,可以参考这篇文章:https://blog.csdn.net/weixin_42951763/article/details/140420245% _0 D- q/ x: e [4 y. |
只需要将链接中Windows客户端的配置修改即可,这里给出一个参考。' J; I1 r B' w; ?1 o+ e
5 D/ E" } r! h在启动的时候可以看见tcp使用的默认端口。( z6 t0 @1 y% }
: X5 X9 J- W& }$ r+ S
# Q) x6 a- A% q( Z% P6 q; {! K z配置Ubuntu服务端。打开服务端的web界面。
8 s% c7 b# X9 }1 u% y1 r5 i! f4 ]( `0 C) _) a8 j$ q; J n4 K
在高级设置中,配置一下地址。
' ]$ I2 S- I) D" P0 J/ o+ z( Y0 L/ {# v) p2 N
这里再解释一下这个地址。
7 t: K$ T# G$ ~* v+ Q4 M9 K+ NWindows中的IP不是公网IP,所以Ubuntu服务端不能直接访问到Windows这个客户端。因此才有了frp内网穿透,把Windows映射到公网中。通过映射后的公网IP加上端口,就可以访问到Windows这个内网中的客户端了。
0 W2 M6 Z8 [4 e: X8 ^8 H
! H3 X7 r6 X4 i/ j9 `$ ^# ] }接下来就可以创建共享的文件夹了。
* h! f6 L Y. l0 r! d0 t! m# X先在Windows这边创建。
; k2 {% D! H& U- u& `- U8 Y+ `/ b/ b" P8 \4 T9 u
- j" w( G' t6 U6 f0 y* o文件夹共享给Ubuntu。" H5 w4 \) ?! |; i
- u% `7 }, C" u" E) m文件夹版本控制。官方文档的文件版本控制介绍。
5 J) _& |6 o- c3 G2 m) K; }0 y8 w+ q& f' e' W" i2 b" ]
2 |% I' l; w o8 X到这点Windows的就配置好了。
2 G' \6 |! v$ i' }+ `& B2 w2 v0 e这时去到服务端Ubuntu的web界面。* F; M% j" P: f6 T3 r
4 G, r( ]; f& x+ m
可以看见出现了一个新文件夹,这时点击添加即可。如果没有出现,可能的原因是服务端这边还没有与Windows进行连接。再次检查一下远程设备是否已经同步完成。
! s3 f2 o6 f& @& l9 @* N- d+ k n1 S1 X
这里选择共享给Windows,这样就可以把Ubuntu变化后的文件也同步到Windows里面。4 j) v8 p$ C: k: W6 ^8 w0 a0 F
- I# |' j( V% b9 ]3 a
这样就实现了简单的双向同步文件。
& T+ e* _6 Z n3 S: x/ t+ r
$ G9 l' }4 @. oSyncthing开机自启
6 H( c! C8 U! ~; e2 j5 `Windows3 w2 c/ I/ z8 D9 Y# ~' l5 L
利用bat文件来实现。
# k( a' R! k r# c+ z$ b: r在Syncthing的文件根目录中新建一个bat文件,放在这里是方便管理,也可以放在其他地方。
8 J. [& S) t1 L- e, Y6 s9 o1 S# m
bat文件内容如下:7 E- v+ I1 A+ R- G
- ]; M: z9 J- q% U4 d@echo off
: M) ~8 i, X8 Z
( g- U9 n$ y: U4 ~' p6 B: oif "%1"=="h" goto begin7 B# m, x. c. R& P3 ?8 w4 \
* o0 A0 o& g$ N8 d( ustart mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
' O; _% I4 C4 f6 h7 F' ~5 x
& v5 Z- v3 t V7 \:begin
9 ?& g! U$ ?+ A1 p4 Y2 C3 D. M* z& @6 S+ w: J
cd /d D:\syncthing && syncthing.exe serve --no-browser --no-restart --logflags=0+ q( \$ U. d7 f4 i `
1
2 H7 j! P3 r9 c5 E& [2* J( j, v; h, ~. d3 s$ y5 D
3' z5 J$ k1 I( J3 O( S1 J0 J. ]. D+ I
4
9 s8 z. ?8 e4 F5 u: k) ~5
0 h1 `8 U# l5 \# q2 @6 [* d9 @5 q/ q
7
; o' s1 \: j$ W: g- q3 B81 w+ I2 h% W& X& C
9! |5 j. h$ {1 d) j/ |4 D) c" c+ y- U" Y- q
只需要修改下图红框中的路径为自己的路径即可。
3 @) L5 o4 a- s4 ] R
- F0 Z7 t) h. A! l) B* ?' U. U& l# m
0 f" x/ R$ ?5 t7 |然后保存退出。在bat文件右键创建快捷方式。
9 }8 K0 k, b/ u8 `9 R' I; U5 J& Q
使用win + R打开运行对话框,输入:shell:startup回车。将刚才创建的快捷方式移动到这个目录里面。 R4 }( G9 t' |0 L4 Y/ T
' f+ y" _& m" |( G
这样就可以了。
7 P; G3 R( S9 w1 U3 z6 L, _* }1 w8 h, C& F" s; i, r
Ubuntu
6 T5 X* }. a$ K+ ~查看syncthing的目录,然后记录一下这个目录。& C: | q6 D; g$ n1 q, W
8 @# p+ J3 R: J' h0 P
使用命令:sudo vim /etc/systemd/system/syncthing@ubuntu.service,@后填写用户名。3 S- h# @* @2 n8 }5 @7 N" \
2 |) z+ o; u D下图红框中的路径要修改为你自己对应的,也就是刚才查看的路径。下图绿框的syncthing是表示文件名。
. r" z: X' u$ O" C1 v* Q! a" _5 i' C0 f
5 m4 P/ Y ~4 D7 F5 {文件内容如下:$ v% X2 Q r+ r' ]/ R$ V
$ G6 a' ^. P+ p; n7 e. c[Unit]
3 A# M, _; @( H$ P- bDescription=Syncthing - Open Source Continuous File Synchronization for %I
0 d8 e! d3 j6 v. z( [% EDocumentation=man:syncthing(1)
" [: b4 x! Y9 J6 ]2 ~7 I/ `! l; kAfter=network.target
) N9 I3 t4 a8 K0 c* Q# mStartLimitIntervalSec=60
* D& |6 m6 y5 [ ^) E @StartLimitBurst=48 G6 |3 }5 y n/ u; k/ r
# X( {# Z. b3 K! m& C: Q
[Service]' o* K/ s3 @3 |! t
User=%i
! L0 [8 O3 D/ f5 s- x6 b- D+ k9 OExecStart=/home/ubuntu/syncthing/syncthing serve --no-browser --no-restart --logflags=0 --gui-address=0.0.0.0:8384
U* h' J1 a2 ?6 fRestart=on-failure
Q7 j+ n% [* y6 p2 @RestartSec=1: U* O9 L; G- C$ s& B4 Z/ ?# T
SuccessExitStatus=3 4
* Y3 Q6 B9 F- `, ]RestartForceExitStatus=3 4
. f* z: K7 O5 i- v7 `3 j: A% E% [. h( K2 X2 L4 n( k2 ]
# Hardening
8 S. B1 g5 @6 Z# ?# Y' ]ProtectSystem=full
5 F$ {+ ]% Z0 D2 s2 x$ f9 LPrivateTmp=true2 |# P z. ]( f$ f6 ?3 _
SystemCallArchitectures=native) N: J3 \* r `) Y
MemoryDenyWriteExecute=true
; z. z9 f N0 b7 n; u8 [3 oNoNewPrivileges=true6 S" B" s$ G$ Q' @; i" e
; }, r8 m0 q, [$ m) K3 P0 s# Elevated permissions to sync ownership (disabled by default),
2 S, Y# w3 J7 T7 Q3 n& B' e/ \- B# D& B6 E# see https://docs.syncthing.net/advanced/folder-sync-ownership
4 Y9 ]% Y$ y" C8 F- _#AmbientCapabilities=CAP_CHOWN CAP_FOWNER
5 }. |( B+ v$ _
+ Z( _4 ~# a% C1 r" D0 o[Install]
* C6 g/ r6 \4 M2 l. [2 I' e* DWantedBy=multi-user.target
) t- Q8 b0 c; H( u1 E' U5 P. i( g( k& r
2* T8 P; }+ T1 E
3: x, I+ g* f9 ]' N
42 g9 ~( k1 j$ A6 @
5
* q% W& T/ s3 k6
1 k: M2 t$ o* p% }* l8 J76 \: u, _2 k1 L* u
8
) T: Z( w* V& ?* p. \9
# D; f/ i) |# u8 @106 q6 f5 D4 K1 c3 `1 F c) @
11
# l7 U# K! g& x* U! K129 W9 v7 U3 N g9 `3 _: o( g0 u
135 o' Q) E- z. Z/ @2 S
14# {, ?2 P) D0 \( _2 C
15* m3 G! H5 t# o) F9 \
167 j! \% ]8 L! w+ _* Z' ?
170 F% @+ B% O& H) K
18
' |( y7 {6 ^5 W' M5 D1 r19
; b6 c: H# @! q1 w) i1 L: p20
% L8 a. K9 r# b& [; `3 p21
$ Q5 S/ U$ v# X* j226 Z& [1 N# ~$ H' |
23 I$ e9 {( h, E2 U! u
247 k" [2 [4 l5 F: G. F
25/ ^) m i o! F5 Q+ h0 S# X7 X% L
26
* u/ o; S7 l; @+ [/ U27
4 r3 x: J- f, m2 q2 [% _286 v' O3 Y1 R' f$ w( }; e; k
提升文件的权限。6 o. V7 h2 z! k0 @7 K6 O) ?- q+ s
, \, K' I. g) b$ C0 ~$ \/ o
sudo chmod +x /etc/systemd/system/syncthing@ubuntu.service
2 ]7 S& n' ?) z" z1
% R% t) ~5 v8 }; ^' Y# S0 [/ k; k- o6 w$ j% _1 X( \+ D) ^
* r9 z9 o; w7 N- b/ I5 Y接下来可以使用这些命令来操作了。
5 @/ {3 E/ |$ h/ L; X1 _: j0 m! B. }# {& e' W4 h. Q3 l! D
# 启动syncthing@ubuntu
3 V: V4 ^( s. R; Q& d3 ~sudo systemctl start syncthing@ubuntu' U( r/ Y. G. c9 z4 l9 ^" S
# 开机自动启动syncthing@ubuntu
) C" `; D; s( W5 K8 r8 jsudo systemctl enable syncthing@ubuntu
* E; K/ I: u$ t& O+ I/ B& ~9 |) d# 重启syncthing@ubuntu1 M6 _0 B0 K% j
sudo systemctl restart syncthing@ubuntu
8 K/ a) e' s: ^) h D# j1 r# 停止syncthing@ubuntu
( K1 _. M- l( Q1 N& I& z6 _4 nsudo systemctl stop syncthing@ubuntu$ X; n' W% Y. K+ Q- u2 u& b
# 查看syncthing@ubuntu状态
) g1 B. B% _2 _8 msudo systemctl status syncthing@ubuntu
6 ^8 v, @1 o% o————————————————
3 C$ K3 k9 Y' l; R0 r9 S1 s# f$ c) @3 @' }9 k; B! e
) v" D* G- j5 u, W9 h8 {/ T
# @3 ~: Q& A2 E3 z! `* d |
|