|
出处:https://blog.csdn.net/weixin_429 ... 21699-null-null.142^v100^pc_search_result_base8&utm_term=Syncthing&spm=1018.2226.3001.4187' R0 q* @; o1 ?8 O0 x$ Q- e
7 }( R; W$ B5 G5 E3 e5 A
& u# l6 ~+ v4 J
简介
2 |/ n. {4 D* V4 WSyncthing是一款开源的文件同步工具,可以通过本地网络或互联网实现多台设备之间的文件同步。与其他同步工具不同,Syncthing强调隐私和安全,确保用户的数据始终处于用户的控制之下。& u5 v. q8 `- ]& d0 u/ t
9 e Y% {" I# Q1 I' Y* `功能与特点
1 \. A, H+ @3 e+ ~6 B" s开源软件:' Z9 z2 P! b' v' n
/ Z8 L- s% @0 D: n1 l+ S
Syncthing是完全开源的,源代码托管在GitHub上,任何人都可以查看、审查和贡献代码。这种透明性增强了用户对软件安全性的信任。
/ {; a9 Z0 [% s, Z1 G' P去中心化:
, d( K8 b* {4 L$ y
* g7 @& M: o9 ?+ l- aSyncthing采用P2P(点对点)架构,没有中央服务器,所有数据传输直接在设备之间进行。这不仅提高了数据传输速度,还消除了对第三方服务器的依赖。
1 \, I+ @8 e* _. `9 S& ~跨平台支持:9 X4 m2 ^2 |; |7 S& ]
" |6 q, }. D3 w, @$ i" g5 t
Syncthing支持多种操作系统,包括Windows、macOS、Linux、BSD、Solaris、Android等,能够满足不同用户的需求。
6 I' B3 E" n( ^" W1 w! J安全性:( x% `/ h- o2 e5 Z; X- c& f! M V6 ~1 S% G
6 N7 G {% N+ U数据在传输过程中使用TLS加密,确保通信的安全性。此外,每个节点都有唯一的设备ID,通过设备ID进行认证和连接,防止未经授权的设备访问。' m$ j h, d! I" o: f
实时同步:4 G( Y! ? Y! f- R/ [" `0 f) u
5 W1 F- {7 n1 h- Y% y7 Q文件修改后会立即触发同步操作,实现实时更新。Syncthing能够检测文件的变化,并迅速同步到其他设备上。) g, A+ P5 Y1 Q2 ^* N4 k
版本控制:
2 Q* O+ y- x% z' S- m) C9 m3 K6 T
( N9 E: b9 H, b0 Y/ f' sSyncthing支持文件版本控制,可以保留多个文件版本,方便用户在需要时恢复到之前的版本。
4 ~4 i* f4 V3 B' D* G" }配置灵活:
1 T, `, e/ h1 x9 Z7 O
1 x' s/ D* |& H: OSyncthing提供了丰富的配置选项,用户可以根据需要设置同步目录、同步频率、带宽限制等参数,满足不同的使用场景。
- }( _8 K, Z, ^; l. B9 z+ O, F4 f简单易用:+ d& |/ Y7 _3 e( V4 [3 z6 V
/ N M7 y" v+ ~, J0 |9 T
通过一个友好的Web GUI(图形用户界面),用户可以轻松管理和监控同步状态,进行配置修改。
- z1 Q$ z1 t& Q( s优点6 U9 S R( o( ^. P0 S
隐私保护:
& Z4 f* ~& E( V) z( G8 c' {) p
( i. l, d2 }' m0 G因为不依赖于任何中央服务器,用户的数据不会存储在第三方服务器上,完全在用户的掌控之中,极大地保护了隐私。& A5 o; q* T/ c/ u+ G( D
高效的带宽利用:
9 p# M% z; d, K: `; f6 D* n* X) x
9 y' L% X8 y7 I P$ q4 VSyncthing在同步过程中只传输更改的部分(增量同步),而不是整个文件,从而提高了带宽利用率,节省了传输时间和资源。" h: V$ ]' D) m, x5 S
安全性高:1 {; |4 G, Q6 s( F/ T* s+ t* `
- s, k3 J' F0 ]+ v) D. e4 G
使用TLS加密传输数据,设备之间的通信经过认证,防止中间人攻击和未经授权的访问。
; J9 L. B* P8 @0 P+ u/ p无缝集成:4 S; T% D; z7 \" y: V* X8 T
6 _) z+ T8 ]6 }3 i
Syncthing可以在多种操作系统上运行,并且支持多设备同步,用户可以轻松地在家用电脑、工作电脑、手机等多个设备之间同步文件。8 k8 S5 }+ c2 i6 f- l( |
社区支持:0 v& {7 n9 T) k- }) G" B
$ A Z" d% T4 m' h6 g
作为开源项目,Syncthing拥有活跃的社区支持,用户可以从社区获得帮助和建议,及时解决使用过程中遇到的问题。
! P6 p$ F! U. E Y定制化:
1 e. {+ L/ J n+ T; W
, f9 ?$ ^0 T6 p! n6 {. l用户可以根据自己的需求进行高度定制,包括选择需要同步的文件夹、设置不同的同步策略和频率、限制带宽使用等。& E. X: N7 `' \
可靠性:( D" s5 q0 W( J9 ~0 r" T, b3 v
' {5 e- i; X6 wSyncthing的设计使其在网络断开后能够自动恢复同步操作,并且支持自动解决同步冲突,确保数据的一致性和可靠性。
/ s5 n" ?$ `0 n3 C3 m2 x9 d安装教程
# T% x6 @' G6 p* I0 Z; E* E6 {注:博主安装过该工具,下面的安装教程,可能会出现一点点区别,不过按照以下操作进行搭建是可以成功的。
+ d+ R" B9 x: D2 J7 j
- O7 j2 Q3 T7 z6 `* S5 w' I3 z官方下载地址:https://syncthing.net/downloads/
, [$ E( T$ m }选择对应的版本进行下载。
]( p) `8 s2 o: j" I7 T( L" \$ s r
本文采用两个同步平台为Windows和Ubuntu。可以通过链接:https://wwt.lanzoue.com/b0fomam7g下载本文所对应的安装包。下载密码:hx90" r) ]7 j+ y0 d+ t: G- h/ t
: Q. Q8 g# P+ v7 w. m; o
两台电脑能实现文件同步的前提是两台电脑的网络能够相互访问。如果一台电脑在内网中,一台在有公网IP的服务器上。可以用有公网IP的服务器搭建一个frp内网穿透工具,通过内网穿透后,就可以实现两台电脑进行网络通信了。+ O4 U* H+ z1 E5 G
/ t: z' b: v8 q4 i1 i
Windows安装$ A+ q: L# O9 j3 a
解压安装包,然后双击syncthing.exe打开。4 b: b% Q8 W+ i9 D7 ^
5 l% n8 u! i/ P& B# R+ ^- A6 g出现这个界面后,可以看见web界面访问地址。初次安装应该会直接在浏览器中打开该地址,然后有一个提示对话框,匿名报告相关的,可以选择否。
- [+ U: Y1 f8 [! {6 j: N
; @! A* O! v" j能出现该界面就说明安装成功了。先不用管界面是否完全一样,下面会介绍如何进行配置。
: @( v( Y N& A( H7 [ k; x
' P" h- R# m7 _* y' jUbuntu安装2 O& S4 H; {) Q2 r* K
将Linux版的文件上传到服务器,这里使用xshell配合xftp进行操作。
; I4 j1 X" r4 H/ `4 g1 ^- m9 m( S在xshell中连接成功后,可以点上面图标。
* S% v3 C- ?# `4 T) Z- J+ M6 H% a/ y- i# R9 C
接下来就可以将文件拖拽到Ubuntu中了。
% ] n% O7 u- g1 _& z
; J7 t: E/ [' ?, `, i$ a
7 T2 L" i% o: R W2 }接下来解压文件tar -zxf syncthing-linux-amd64-v1.27.9.tar.gz。3 r3 b( \7 g1 d6 J5 F
8 g4 d9 }& ^# g3 r
这里可以修改文件夹的名称。用mv syncthing-linux-amd64-v1.27.9 syncthing就可以。博主前面安装过了,这点就不修改了。
& H! a9 {6 }! @0 k0 z) C进入syncthing-linux-amd64-v1.27.9文件夹。使用./syncthing serve就可以启动。
7 T0 o; A( x% \6 x* a' J3 `7 r6 J3 a# s# v# ]
这时如果是图形化的Ubuntu,就可以在Ubuntu浏览器中打开http://127.0.0.1:8384/。博主采用的是腾讯云的vps,直接用ip访问不了。这里需要进行一步操作。
1 h/ Q, d2 O% P }9 E3 T' ?5 d' Y# @ l
配置远程ip访问
3 @* m* C( d1 h- `先Ctrl + C停掉服务。3 t2 @' P& \: C! |7 S
查看官方文档后,使用命令./syncthing serve --gui-address=0.0.0.0:8384配置。
8 Y W* q1 B+ {/ `8 _
/ ~1 `6 O5 i1 t9 H这样就可以远程通过ip访问了,不过你的服务器防火墙需要放行端口。$ V' Y/ k) I* d% b. [2 S& D
. G' f% J+ U+ l8 Z. K: c# M2 D' ~2 C9 N
配置同步文件夹' L0 A3 [9 P7 X+ W$ L3 j( b0 z
这里需要用到工具的ID,先去服务端查看,启动服务的时候就会显示,现在可以通过web界面进行查看。客户端同理。
`" |4 h$ X8 m. m/ q- a4 q
. s6 H& u# ~, k0 u, [& q. `刚才复制的是服务端的ID,那么现在就打开客户端的web管理界面。+ V& g$ v0 L& C0 q
; t5 _- `; I) ?6 B6 F7 Q! z. a c# e4 D$ D% `
如果只是局域网操作,这里直接保存即可。" _9 }. R3 v! N7 X/ i0 O
如果想公网访问,就可以内网穿透工具。在服务器搭建内网穿透工具,可以参考这篇文章:https://blog.csdn.net/weixin_42951763/article/details/1404202451 I3 k( ]( T) o
只需要将链接中Windows客户端的配置修改即可,这里给出一个参考。
* I3 i6 ]4 q4 S0 ]3 ]( u0 Y0 u1 x5 o" V! E: f3 p" ^+ Z/ x/ \3 I
在启动的时候可以看见tcp使用的默认端口。
& A+ N8 N+ W9 e2 X, l2 O+ q
) G8 `. ]: p* ^- G) C/ S- |$ b3 j
. Q; i! b& M! m- g, c1 q配置Ubuntu服务端。打开服务端的web界面。' E9 Y, P9 H# ^/ j
4 Q( O' A. v' w1 p' c
在高级设置中,配置一下地址。
, x$ _) F. u u, I) U) [8 p9 M( m
0 ^& r: g: @2 F! w1 T这里再解释一下这个地址。8 v6 ?$ E6 ?- \) b8 C
Windows中的IP不是公网IP,所以Ubuntu服务端不能直接访问到Windows这个客户端。因此才有了frp内网穿透,把Windows映射到公网中。通过映射后的公网IP加上端口,就可以访问到Windows这个内网中的客户端了。
, j' y6 l- P5 H$ m- @( \7 `9 Y, |
接下来就可以创建共享的文件夹了。
2 N* U9 |# l5 f' E7 w9 z: T/ h先在Windows这边创建。
+ n4 R8 B" G" B: X) T
5 B7 y5 z# R6 L$ r @$ k+ t* S1 T7 x- `/ Q
文件夹共享给Ubuntu。
0 S6 E: s4 q, G5 T$ P) y+ |
( \( S% S0 ~. K/ Y0 {+ i文件夹版本控制。官方文档的文件版本控制介绍。
% h3 E) _0 U9 U; O4 u" S) J" U z K( J; v) j( D6 K, m1 N* B/ ?3 m* m
% v% b' F' G& e& L到这点Windows的就配置好了。# ~8 w( \# D. G8 J# V
这时去到服务端Ubuntu的web界面。; r* Q3 A, |9 y, {- ]
$ c$ L8 }8 y. K) y可以看见出现了一个新文件夹,这时点击添加即可。如果没有出现,可能的原因是服务端这边还没有与Windows进行连接。再次检查一下远程设备是否已经同步完成。/ o! F1 K# G" N" g' V4 k }
5 `* C. Q; |" R2 _$ E
这里选择共享给Windows,这样就可以把Ubuntu变化后的文件也同步到Windows里面。$ E3 l, Q# w1 {4 N
1 V6 b; d0 ]! A! s w# I; Z
这样就实现了简单的双向同步文件。
( |7 ^% F/ h1 [4 q
, c9 ?8 L; u- b7 E" iSyncthing开机自启7 e- h* k, i( F* }
Windows+ I3 _# [- {, g/ y
利用bat文件来实现。
+ q L& ~+ @, L! ^在Syncthing的文件根目录中新建一个bat文件,放在这里是方便管理,也可以放在其他地方。
; i+ U( m+ |, f- E9 X* S1 W
# S1 U3 g) F" j* Q# Lbat文件内容如下:, ]3 S. P6 P; k9 |) v8 @( G7 ?
1 M+ O Z7 M2 s" }# p& ?# l/ a6 J
@echo off8 Z/ t" m3 q- q1 y% R
# n) p7 \! ?+ _0 Y J0 Uif "%1"=="h" goto begin$ Y0 K2 S I6 o/ S+ c, L
% U$ b6 D% q# L* ]2 u
start mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit8 G7 V! U' X0 G: O
; U( |! f3 [2 M8 Y0 ~9 M
:begin
# g1 B: ^1 O2 U# O' k
. _: K" I0 C2 i( F ]" ~! scd /d D:\syncthing && syncthing.exe serve --no-browser --no-restart --logflags=06 Y8 L# a; I# c# }
1; l2 L/ A# r3 u& _- R1 R
2$ _: ~/ B! S) D" e% F
3' m; {. u- r5 n
42 }8 G3 p& a r' J \
51 q* }" {" q6 O$ K- Y
6/ r; d& O, y7 D& y0 k2 O- S
75 e" r/ |2 Y6 `+ o8 Y; g1 f
8
/ ~4 N, ?; y: k6 _$ U k92 k4 }! O3 s7 _
只需要修改下图红框中的路径为自己的路径即可。
) G$ ], o2 G2 C1 M( n& W
6 C0 g, G; _4 M( f2 T T! @* u- v. p1 ?7 h
然后保存退出。在bat文件右键创建快捷方式。
4 H/ x! }! v: j' J0 u8 J. S0 u r& ]4 r' D h; S
使用win + R打开运行对话框,输入:shell:startup回车。将刚才创建的快捷方式移动到这个目录里面。% O& V+ v9 G! }# ]+ t3 d% U
. Z- [. n0 }' u6 K5 `
这样就可以了。
9 b3 O/ E4 W- l% d4 h! l) E0 s* j9 l! a1 ]8 m, S% |7 D O: }
Ubuntu
9 Q, f' }4 |5 |% j' {& P查看syncthing的目录,然后记录一下这个目录。3 P% {5 z: m, }: n0 y! p
8 [9 A* H# p- z6 S" V/ s- |
使用命令:sudo vim /etc/systemd/system/syncthing@ubuntu.service,@后填写用户名。) W7 l+ P+ ]" J
3 j! b. f( u* n4 {1 b下图红框中的路径要修改为你自己对应的,也就是刚才查看的路径。下图绿框的syncthing是表示文件名。
3 B Z" d3 j0 c f7 a9 A! P5 t" M. N
( |6 g; M3 h% a) k- ]文件内容如下:
4 S: z* C6 u0 D, {* `7 k- p. ^$ ~
5 M7 R, S1 b* R3 Q+ _6 f[Unit]& M5 y! j$ y+ Q5 x; R% n. A% z
Description=Syncthing - Open Source Continuous File Synchronization for %I# j6 J0 T- l. q% x+ z4 H8 k2 }
Documentation=man:syncthing(1)
' ~& P' \" J7 N; d C0 N: z; h6 fAfter=network.target
9 P8 c. J: I& M0 ~. v+ t( xStartLimitIntervalSec=60
8 T- G5 V+ i% Q8 CStartLimitBurst=4
4 e& [& r; [. n1 v' q: z. m* Q" W
[Service]
7 K3 C+ q- A3 M3 z& ^+ CUser=%i
/ J0 c1 w0 B5 s' n1 W7 t8 k, [+ rExecStart=/home/ubuntu/syncthing/syncthing serve --no-browser --no-restart --logflags=0 --gui-address=0.0.0.0:8384
8 d+ u6 x7 J, p1 A: Y( QRestart=on-failure
# t- F. f3 o( V g9 H9 vRestartSec=1$ y) `* e, H9 j! P
SuccessExitStatus=3 4
& v& K( l1 W$ @; j% N, C+ C: O* KRestartForceExitStatus=3 4
- O9 v/ K/ I X q- d3 L0 G
2 _+ x5 u) R& u: G# Hardening& Q( `0 l3 y9 }) P5 R8 I# Q8 x
ProtectSystem=full* `5 d3 s ?6 I% ]" I V$ S2 n
PrivateTmp=true! E: A$ ~) L5 ]& [! I& `
SystemCallArchitectures=native
[: _; M0 n) iMemoryDenyWriteExecute=true7 b+ S0 e3 [3 p$ I1 @
NoNewPrivileges=true
3 U \8 Q# k& F7 @' U5 j, g
! Y( e: G& l' p/ Z. M4 `# Elevated permissions to sync ownership (disabled by default),+ g, J& B8 K& W% R4 G4 S: [; S* _
# see https://docs.syncthing.net/advanced/folder-sync-ownership+ g8 M0 F& u# \, }) M
#AmbientCapabilities=CAP_CHOWN CAP_FOWNER' ?9 `( v: C a/ _) D2 ?; q4 P2 \
5 `% a. q6 c2 d8 n( a
[Install]
" C( q! P* Q3 sWantedBy=multi-user.target
$ z3 I/ L- `. Z1
* h& k" p0 i$ _2- H! K6 |) V' A- i a6 b; H" D
3
6 L0 D2 r3 }! J V( R! o/ S% C4
+ i9 a5 X' g! N$ r! @! }5
+ K7 U1 M0 k- b# l9 {6 E6! z" K5 g8 A3 O1 _" h4 _7 N: I( K
78 p2 X. @% t# Q
8
0 S* k; D% L/ w: c" u) D" \9) F. `: V. L; T P
10
B% m! o! c$ V11. w/ G$ L: I/ P4 R$ \
12
( D5 v: Q9 \8 W1 z+ |6 r# E' I: F134 t# _0 C \3 ?9 ]4 ?
14
: f3 b4 b: I3 R; N15" E5 n: N! V. Y6 C; z/ i
166 Q- E6 S9 `. U- b
17
* X1 ]- r5 P" S. X18
: Z8 [/ p( G1 w! D" t( k0 b' u19
0 D$ `+ @" C5 v0 n) q20
8 Q+ |, e' W, [* L/ d: i21
% }/ A3 f$ x1 z' v" e- f2 g22
4 `1 i1 M, y) c) f23
4 \& J3 O7 \6 A; s# P! R1 M24& }# T# _! X7 _
257 k& U0 r' e( H' v; z
26
+ c- i. }' T: y# u* {* R0 _; f# s- _. _276 Q# ^* i0 z K- x4 K
28$ F; N+ |9 y/ ~8 H% Y1 J$ P
提升文件的权限。: R8 T7 V& V, o0 X8 D3 ~
& V+ P+ S4 v& \. Dsudo chmod +x /etc/systemd/system/syncthing@ubuntu.service. W! n9 A7 e- _: `/ `8 g9 {2 W
1- J- d7 P0 i. \; ?9 g
! g$ U. |# ?+ g. q
. V! T" a. v# v# v- n7 E接下来可以使用这些命令来操作了。
2 a8 U5 Q$ a" i9 `; z
0 N2 K0 u" E; Q4 l, a6 }# 启动syncthing@ubuntu0 \* }' n: L0 q7 {$ L4 C
sudo systemctl start syncthing@ubuntu
6 H; X, Z/ u7 Y6 j% }5 T# 开机自动启动syncthing@ubuntu
3 v& K' f$ V% Y4 B: a& [sudo systemctl enable syncthing@ubuntu
5 g7 z' j) |/ B. t K. m9 m b) d# 重启syncthing@ubuntu' c1 l3 A' y+ ~: [
sudo systemctl restart syncthing@ubuntu+ @3 U5 j. P8 v6 z
# 停止syncthing@ubuntu/ K6 |$ r6 V9 U, Z. S1 g
sudo systemctl stop syncthing@ubuntu/ y9 K }8 v% N6 A% k. V
# 查看syncthing@ubuntu状态
8 [# I0 d2 C0 v* h9 C) [sudo systemctl status syncthing@ubuntu
: l2 ^- d) x4 O1 ?! g8 b5 i————————————————( j# i$ E$ y( @8 t% _
% ^* E9 j5 [) h5 }& h5 i, S4 f7 ?
: \5 T" [% y6 k; J: C
7 z) }% G" R c |
|