Syncthing是一款开源的文件同步工具,可以通过本地网络或互联网实现多台设备之间的文件同步。与其他同步工具不同,Syncthing强调隐私和安全,确保用户的数据始终处于用户的控制之下。
功能与特点
-
开源软件:
- Syncthing是完全开源的,源代码托管在GitHub上,任何人都可以查看、审查和贡献代码。这种透明性增强了用户对软件安全性的信任。
-
去中心化:
- Syncthing采用P2P(点对点)架构,没有中央服务器,所有数据传输直接在设备之间进行。这不仅提高了数据传输速度,还消除了对第三方服务器的依赖。
-
跨平台支持:
- Syncthing支持多种操作系统,包括Windows、macOS、Linux、BSD、Solaris、Android等,能够满足不同用户的需求。
-
安全性:
- 数据在传输过程中使用TLS加密,确保通信的安全性。此外,每个节点都有唯一的设备ID,通过设备ID进行认证和连接,防止未经授权的设备访问。
-
实时同步:
- 文件修改后会立即触发同步操作,实现实时更新。Syncthing能够检测文件的变化,并迅速同步到其他设备上。
-
版本控制:
- Syncthing支持文件版本控制,可以保留多个文件版本,方便用户在需要时恢复到之前的版本。
-
配置灵活:
- Syncthing提供了丰富的配置选项,用户可以根据需要设置同步目录、同步频率、带宽限制等参数,满足不同的使用场景。
-
简单易用:
- 通过一个友好的Web GUI(图形用户界面),用户可以轻松管理和监控同步状态,进行配置修改。
优点
-
隐私保护:
- 因为不依赖于任何中央服务器,用户的数据不会存储在第三方服务器上,完全在用户的掌控之中,极大地保护了隐私。
-
高效的带宽利用:
- Syncthing在同步过程中只传输更改的部分(增量同步),而不是整个文件,从而提高了带宽利用率,节省了传输时间和资源。
-
安全性高:
- 使用TLS加密传输数据,设备之间的通信经过认证,防止中间人攻击和未经授权的访问。
-
无缝集成:
- Syncthing可以在多种操作系统上运行,并且支持多设备同步,用户可以轻松地在家用电脑、工作电脑、手机等多个设备之间同步文件。
-
社区支持:
- 作为开源项目,Syncthing拥有活跃的社区支持,用户可以从社区获得帮助和建议,及时解决使用过程中遇到的问题。
-
定制化:
- 用户可以根据自己的需求进行高度定制,包括选择需要同步的文件夹、设置不同的同步策略和频率、限制带宽使用等。
-
可靠性:
- Syncthing的设计使其在网络断开后能够自动恢复同步操作,并且支持自动解决同步冲突,确保数据的一致性和可靠性。
安装教程
注:博主安装过该工具,下面的安装教程,可能会出现一点点区别,不过按照以下操作进行搭建是可以成功的。
官方下载地址:https://syncthing.net/downloads/
选择对应的版本进行下载。
本文采用两个同步平台为Windows和Ubuntu。可以通过链接:https://wwt.lanzoue.com/b0fomam7g下载本文所对应的安装包。下载密码:hx90
两台电脑能实现文件同步的前提是两台电脑的网络能够相互访问。如果一台电脑在内网中,一台在有公网IP的服务器上。可以用有公网IP的服务器搭建一个frp内网穿透工具,通过内网穿透后,就可以实现两台电脑进行网络通信了。
Windows安装
解压安装包,然后双击syncthing.exe
打开。
出现这个界面后,可以看见web界面访问地址。初次安装应该会直接在浏览器中打开该地址,然后有一个提示对话框,匿名报告相关的,可以选择否。
能出现该界面就说明安装成功了。先不用管界面是否完全一样,下面会介绍如何进行配置。
Ubuntu安装
将Linux版的文件上传到服务器,这里使用xshell配合xftp进行操作。
在xshell中连接成功后,可以点上面图标。
接下来就可以将文件拖拽到Ubuntu中了。
接下来解压文件tar -zxf syncthing-linux-amd64-v1.27.9.tar.gz
。
这里可以修改文件夹的名称。用mv syncthing-linux-amd64-v1.27.9 syncthing
就可以。博主前面安装过了,这点就不修改了。
进入syncthing-linux-amd64-v1.27.9
文件夹。使用./syncthing serve
就可以启动。
这时如果是图形化的Ubuntu,就可以在Ubuntu浏览器中打开http://127.0.0.1:8384/
。博主采用的是腾讯云的vps,直接用ip访问不了。这里需要进行一步操作。
配置远程ip访问
先Ctrl + C
停掉服务。
查看官方文档后,使用命令./syncthing serve --gui-address=0.0.0.0:8384
配置。
这样就可以远程通过ip访问了,不过你的服务器防火墙需要放行端口。
配置同步文件夹
这里需要用到工具的ID,先去服务端查看,启动服务的时候就会显示,现在可以通过web界面进行查看。客户端同理。
刚才复制的是服务端的ID,那么现在就打开客户端的web管理界面。
如果只是局域网操作,这里直接保存即可。
如果想公网访问,就可以内网穿透工具。在服务器搭建内网穿透工具,可以参考这篇文章:https://blog.csdn.net/weixin_42951763/article/details/140420245
只需要将链接中Windows客户端的配置修改即可,这里给出一个参考。
在启动的时候可以看见tcp使用的默认端口。
配置Ubuntu服务端。打开服务端的web界面。
在高级设置中,配置一下地址。
这里再解释一下这个地址。
Windows中的IP不是公网IP,所以Ubuntu服务端不能直接访问到Windows这个客户端。因此才有了frp内网穿透,把Windows映射到公网中。通过映射后的公网IP加上端口,就可以访问到Windows这个内网中的客户端了。
接下来就可以创建共享的文件夹了。
先在Windows这边创建。
文件夹共享给Ubuntu。
文件夹版本控制。官方文档的文件版本控制介绍。
到这点Windows的就配置好了。
这时去到服务端Ubuntu的web界面。
可以看见出现了一个新文件夹,这时点击添加即可。如果没有出现,可能的原因是服务端这边还没有与Windows进行连接。再次检查一下远程设备是否已经同步完成。
这里选择共享给Windows,这样就可以把Ubuntu变化后的文件也同步到Windows里面。
这样就实现了简单的双向同步文件。
Syncthing开机自启
Windows
利用bat文件来实现。
在Syncthing的文件根目录中新建一个bat文件,放在这里是方便管理,也可以放在其他地方。
bat文件内容如下:
@echo off
if "%1"=="h" goto begin
start mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
:begin
cd /d D:\syncthing && syncthing.exe serve --no-browser --no-restart --logflags=0
只需要修改下图红框中的路径为自己的路径即可。
然后保存退出。在bat文件右键创建快捷方式。
使用win + R
打开运行对话框,输入:shell:startup
回车。将刚才创建的快捷方式移动到这个目录里面。
这样就可以了。
Ubuntu
查看syncthing的目录,然后记录一下这个目录。
使用命令:sudo vim /etc/systemd/system/syncthing@ubuntu.service
,@后填写用户名。
下图红框中的路径要修改为你自己对应的,也就是刚才查看的路径。下图绿框的syncthing是表示文件名。
文件内容如下:
[Unit]
Description=Syncthing - Open Source Continuous File Synchronization for %I
Documentation=man:syncthing(1)
After=network.target
StartLimitIntervalSec=60
StartLimitBurst=4
[Service]
User=%i
ExecStart=/home/ubuntu/syncthing/syncthing serve --no-browser --no-restart --logflags=0
Restart=on-failure
RestartSec=1
SuccessExitStatus=3 4
RestartForceExitStatus=3 4
# Hardening
ProtectSystem=full
PrivateTmp=true
SystemCallArchitectures=native
MemoryDenyWriteExecute=true
NoNewPrivileges=true
# Elevated permissions to sync ownership (disabled by default),
# see https://docs.syncthing.net/advanced/folder-sync-ownership
#AmbientCapabilities=CAP_CHOWN CAP_FOWNER
[Install]
WantedBy=multi-user.target
提升文件的权限。
sudo chmod +x /etc/systemd/system/syncthing@ubuntu.service
接下来可以使用这些命令来操作了。
# 启动syncthing@ubuntu
sudo systemctl start syncthing@ubuntu
# 开机自动启动syncthing@ubuntu
sudo systemctl enable syncthing@ubuntu
# 重启syncthing@ubuntu
sudo systemctl restart syncthing@ubuntu
# 停止syncthing@ubuntu
sudo systemctl stop syncthing@ubuntu
# 查看syncthing@ubuntu状态
sudo systemctl status syncthing@ubuntu