聊聊文件同步的解决方案,疫情之下居家办公应该会用到
之前有网友问过我Syncthing的用法,一直没有时间写。这段时间受到疫情影响,感觉文件同步对于居家办公而言还是一个比较实用的技能,所以分享一下:
FreeFileSync
FreeFileSync是一个免费软件,适用于本地文件同步。使用FreeFileSync首先要理解三种同步模式,我直接用例子说明:
同步:将A、B两个文件夹不同的内容双向复制,使两个文件夹完全一致;
例子A(1.2.3),B(2.3.4),同步后A(1.2.3.4),B(1.2.3.4)
镜像:让B文件夹内容和A文件夹内容完全一致;
例子A(1.2.3),B(2.3.4),镜像后A(1.2.3),B(1.2.3)
更新:将A文件夹中内容更新到B,并保留B原有内容;
例子A(1.2.3),B(2.3.4),更新后A(1.2.3),B(1.2.3.4)
除了这三种同步模式,FreeFileSync也可以自定义同步规则。当然自定义建立在你已经熟练掌握同步规则的基础之上。
通过同步规则,你可以很方便地在不同驱动器、文件夹间同步数据。
FreeFileSync还有一个RealTimeSync的子软件,用于监控文件夹进行实时同步。
Syncthing
Syncthing适用于不同平台间通过网络进行文件同步。使用Syncthing稍微就复杂一点,尤其是同步设备多可以自己画个同步拓扑图。
Syncthing也有3种模式:
接收和发送:文件夹会同步其他位置文件夹内容,也会把修改内容发送到其他位置
仅发送:文件仅发送修改,而不会随其他位置修改而改变
仅接收:文件仅接收其它位置修改,而不会改变其他位置的文件内容
Syncthing设置分为程序设置和文件夹设置。
程序设置包括查看本机的ID;设置发现服务器和中转服务器。
文件夹设置则用于设置同步文件夹路径,设置文件夹同步规则,这些都不难理解。
明白了程序设置和文件夹设置就可以根据自己的需求部署同步方案了,我举例说明:
1.如果两个文件夹都设置成发送和接收,那么两个文件夹会完全同步。其中一个修改会导致另外一个修改。
2.如果其中一个设置成仅发送,另一个设置成接收,这种可以理解成备份模式。源文件夹文件变更,不会影响被封文件夹的文件。可以用于工作文件,相册备份。
Syncthing麻烦之处在于首先要设备间彼此建立连接,设备一多这个相互添加的过程就稍繁琐。另外是每个文件夹都要设置其更新规则。(其版本管理是否可靠我没有试过)
Syncthing是一个多平台的应用,支持Android/Windows/Linux,安卓版本推荐用F-droid下载。Windows/Linux可以去官网下载。由于支持docker所以大部分Linux主机应该都可以安装。
Docker安装Syncthing
sudo docker run -p 8384:8384 -p 22000:22000/tcp -p 22000:22000/udp
-v /path:/var/syncthing
--hostname=my-syncthing
syncthing/syncthing:latest
用docker-compose部署的话:
version: '3.3'
services:
syncthing:
ports:
- '8384:8384'
- '22000:22000/tcp'
- '22000:22000/udp'
volumes:
- '/path:/var/syncthing'
image: 'syncthing/syncthing:latest'
管理页面地址https:local:8384
Syncthing同步速度收到中继服务器,以及是否能直连的影响。说起来还是有点门槛的。
这就是我常用的两个文件同步方案,毕竟免费嘛。
另外一些配置文件我一般用webdav进行同步,本来在自己的云服务器搭建了一个webdav,后面嫌麻烦还是用了坚果云的免费版。主要用于同步keepass的密码/floccus的浏览器书签/Tempermonkey的脚步和设置。
如果是真的有一定速度要求,可以买个收费的网盘会员,同步速度更加有保障。
或者企业部署SVN或者Git,但这个的门槛似乎又有点高了。
以上供大家参考。
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~




--name=syncthing \
--hostname=j4125-ubuntu-syncthing `#optional` \
--restart unless-stopped \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=Asia/Shanghai \
-p 60828:8384 \
-p 22000:22000/tcp \
-p 22000:22000/udp \
-p 21027:21027/udp \
-v /mnt/sda/syncthing:/var/syncthing \
syncthing/syncthing
我目前用的这个脚本,只能这样执行才能跑通,我想把配置文件和同步目录分开,想把配置文件映射到SSD,同步目录映射到机械盘,但是一分开就同步报错。能发下你的docker syncthing脚本吗!
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
公司 家里 手机上都能同步
只要打开过在云里就能看到
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
--name=syncthing \
--hostname=j4125-ubuntu-syncthing `#optional` \
--restart unless-stopped \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=Asia/Shanghai \
-p 60828:8384 \
-p 22000:22000/tcp \
-p 22000:22000/udp \
-p 21027:21027/udp \
-v /mnt/sda/syncthing:/var/syncthing \
syncthing/syncthing
我目前用的这个脚本,只能这样执行才能跑通,我想把配置文件和同步目录分开,想把配置文件映射到SSD,同步目录映射到机械盘,但是一分开就同步报错。能发下你的docker syncthing脚本吗!
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案