Syncthing–数据同步利器
简介:
⽆论办公、⽂件共享、团队协作还是家庭照⽚、视频、⾳乐、⾼清电影的存储,我们常常都有⽂件同步和存储的需求。但随着国内各⼤⽹盘的花式阵亡或限速,早已没什么好选择了。好吧,我已经转战使⽤onedriver了,但是在单位⾥⾯,没有互联⽹,开源的软件试试⾃⼰搭建吧。
⾃建⽹盘云储存同步服务的软件有很多, Seafile、NextCloud、ownCloud、BT Sync (Resilio Sync) 等。
⽽ Syncthing 则有着⾃⼰⾮常特别的优点,受到众多⾼⼿们的推荐,被誉为是 Resilio Sync / BT Sync 和 Dropbox 的最佳开源替代品。
Syncthing 最⼤的特⾊是采⽤了与 Resilio Sync (BitTorrent Sync) 类似的 P2P 分布式技术,⽆需中⼼服务器,即可让多台设备互相实时同步⽂件。
Syncthing 官⽅⽀持 Linux、Windows、OS X、FreeBSD、Solaris 等系统,并且有第三⽅的 iOS、Android 应⽤。
我选择它还有⼀个原因就是,它只需要⼀个⽂件就可以了。在linux下只有⼀个⽂件,在windows下也可以只有⼀个⽂件,当然还有⼀个GUI 桌⾯程序。
⼀:官⽹及下载
linux64位就是我主⼒使⽤的,放在⼀个fedora服务器上,不过是跑在docker⾥⾯。
SyncTrayzor是官⽅提供的GUIwindows客户端,⽅便设置开机启动进⾏⾃动同步。可以缩⼩到任务栏。实在是⽅便部署到客户端,让它⾃动上传啊。
Portable是免安装版本。
Setup就是安装版本。
X64 X86,根据你的系统,随便下载吧。
⼆:在linux下进⾏安装
1.下载
随你喜欢wget curl winscp了。解压后只需要⼀个⽂件:
2.配置
2.1复制⽂件
cp syncthing /usr/bin/syncthing
只需要复制这⼀个⽂件,其他的可以删了。
2.2修改权限
chmod +x /usr/bin/syncthing
加上可执⾏权限
2.3运⾏
./usr/bin/syncthing
就这⼀个⽂件,直接执⾏。
它会⾃动⽣成配置⽂件,还不能先改,只好运⾏⼀遍,等它出现
[CKEAY] 17:44:53 INFO: Detected 1 NAT service
[CKEAY] 17:45:39 INFO: Joined relay relay://36.229.223.123:22067
⼤概就是已经⽣成配置⽂件,并运⾏起来了。
ctrl+c 停⽌这个进程。
2.4修改配置⽂件
sed 's/127.0.0.1/0.0.0.0/g' /root/.config/l
默认配置⽂件在/root/.config/l,默认监听⽹络是127.0.0.1,远程不能访问,所以⽤sed命令修改为0.0.0.0 3.运⾏
./usr/bin/syncthing
再次运⾏起来。
4.测试
只要没出乱七⼋糟的错误,就算安装成功了。
⼆:在Docker中安装
1.下载
docker pull syncthing/syncthing
2.运⾏
docker run -it -p 8384:8384 -p 22000:22000
-v /storage/conf/syncthing:/var/syncthing/config
-v /storage/data/syncthing:/var/syncthing
syncthing/syncthing:latest
官⽅给的运⾏参数就是这样了。
/
storage/conf/syncthing,配置⽂件存储位置。
/storage/data/syncthing,数据存储主⽬录。
两个⽬录根据⾃⼰的情况替换。
8384 22000,两个端⼝⼀般不占⽤,直接运⾏。
linux修改文件夹名称3.测试
和linux测试⼀样。
只要没出乱七⼋糟的错误,就算安装成功了。
三:在windows中安装
1.下载
windows下我们就不使⽤linux那样的单⽂件版了。
⽬前最新的应该是这个版本。如果你是32位的系统,请下载。
2.运⾏
解压后到,双击运⾏即可
3.配置
还是⽼问题,默认只有127.0.0.1,localhost可以访问,没有远程访问权限。
照下图,右边的设置,⽤来修改图形界⾯监听地址,并且可以设置随开机⾃动启动
四:基本配置
1.配置简介
我们要配置⾃动同步,那么就要有2台电脑运⾏syncthing,相互要能连通,并配置相同ID的共享⽂件夹。
每台电脑,第⼀次运⾏syncthing时,会⾃动⽣成随机ID,并注册ID,⽹络地址到全球发现服务器。添加远程设备时,去全球发现服务器,来查ID,取得远程设备的⽹络地址。
所以,在windows不要复制解压运⾏过的,只复制压缩包,解压,重新⽣成新的ID。
后⾯的例⼦以2台设备同步⼀个⽂件夹为例讲解。设备1:WORKER(操作机,本地设备),设备2: NUC(家庭服务器,放在路由器边上,没键盘,没⿏标,只接了HDMI到电视,远程设备)同步⼀个⽂件夹,WORKER路径:D:\PythonTest\flasktest ,nuc路
径:/var/syncthing/temp/app。WORKER操作系统windows,NUC操作系统fedora,syncthing运⾏在docker中,映射容器路
径/var/syncthing到物理路径/storage,那么最后的共享⽂件夹,即NUC物理机的/storage/temp/app。对这些不理解的,⾃⼰慢慢补docker的知识。忽略NUC运⾏的DOCKER。
2.配置中⽂.
如下图,先点English,在弹出的下拉框,点击Chinese(china),就变成中⽂了。
3.配置WEB安全
我们输⼊地址:8384,默认设置,syncthing只允许localhost本地登录,但是我们为了⽅便配置,已经给它改了监听0.0.0.0,任意地址都可以访问,貌似不安全啊。
那么我们就配置⼀下web登录密码:
访问web页⾯后在右上⾓,操作--设置--图形⽤户界⾯
图形管理界⾯⽤户名
图形管理界⾯密码
这两项就可以设置图形界⾯登录账户密码了。
使⽤加密连接到图形管理页⾯
如果你怕被监听到,开启加密也可以。
每个运⾏syncthing的机器(WORKER NUC)都要单独设置。
4.配置设备名称
访问web页⾯后在右上⾓,操作--设置--常规--设备名
为了⽅便使⽤,还是设个设备名吧,不然貌似是使⽤ID前⼏位的随机字符串做设备名,机器多了,可真不⽅便。
还是每个设备设置。
五:添加远程设备
1.获取远程设备ID
在WORKER上添加NUC。
你时去NUC抄,还是远程登录看?当然时远程登录看了,安装的时候,我都设置了任意IP监听登录。
访问NUCweb页⾯后在右上⾓,操作--显⽰ID,
BTQMGH2-JBPTQGX-HQWBLLW-EBEQJUC-NMZOUMQ-3TLYVSV--
这⼀长串就是远程设备的ID。下⾯的⼆维码时⽅便android⼿机端使⽤的扫码添加。
2.本地设备添加远程设备
访问WORKERweb页⾯(或SyncTrayzor窗⼝)后在右下⾓,添加远程设备
在设备ID,填上刚复制过来的远程设备ID。
下⾯有两个选项介绍⼀下:
作为中介,syncthing使⽤了P2P技术来实现⽂件同步,现在我们实验的时候时2台设备,同步⼀个⽂件夹,如果加⼊新设备,是要分别给这两台设备配置⼀个新的远程设备。如果开启作为中介,那么,WORKER,会⾃动添加,或称为同步NUC的远程设备(新设备)。
⾃动接受,如果在NUC创建了⼀个共享⽂件夹,并共享给WORKER,⽆需WORKER选择接受,即在默认⽬录,创建共享⽂件夹,并同步。
根据⾃⼰的需要来选择开启吧。我都没开启,因为我实验2台设备,部署也就3-4个设备。
3.等待
因为默认使⽤全球发现服务器,受⽹速影响,还是要等等的。
注意NUC的web界⾯。出现新设备,就是已经连上了,选择添加设备,就会⾃动把WORKER,作为远程设备,连接到NUC。
此时两台设备web页⾯,右下⾓部分,都会出现远程设备(即对⽅)
六:添加同步⽂件夹
1.删除默认⽂件夹
貌似新装,管理页左边都会出现 default ***
点击⽂件夹名--下拉框右下部分--选项--移除--确认
删除是因为路径问题,它们分别⽣成在每台设备的默认共享⽬录下,基本不是我们需要的路径。
2.本地设备添加⽂件夹
管理页中间部分,添加⽂件夹。
⽂件夹路径,估计要你⾃⼰写⼀下了(D:\PythonTest\flasktest ),到资源管理器去复制也可以的。
关键设置⽂件夹ID(app),说明在所有从设备上必须⼀致,也就是在我们这多个设备同步时,都⽤这个ID,来同步这个⽂件夹。下⾯还有共享给远程设备(NUC),勾选远程设备的名字就好了。
其中的⾼级设置,看⼀下也能明⽩。最后保存即可。
七:给远程设备添加同步⽂件夹
1.还是等待,我们使⽤的是全球发现服务器
直到这个在NUC的管理页⾯出现,点击添加即可。
2.配置远程设备共享⽂件夹路径
/var/syncthing/temp/app
这个应该时前期就决定好的,这时填⼀下就可以了,记得勾选下⾯的共享给WORKER。不勾选的时候是单向同步?
3.配置⽂件夹 ID
app
这个也是在本地设备配置⽂件夹时给定的ID
4.查看同步状态
看下⾯两个图,区别是远程设备是否显⽰同步完成,因为使⽤P2P 分布式技术,所以没有中⼼服务器,那么每台设备,都即是客户端,⼜是服务器。
⽂件夹上的同步完成,仅代表本地客户端已经和本地服务器同步了。(两台设备没完成完全同步)
远程设备上的同步完成,代表本地客户端和这个远程服务器同步了。(两台设备完成完全同步)
有的时候那个同步完成,会显⽰同步中。
⼋:内部⽹络使⽤(固定IP),⽆法连接全球发现服务器
1.简介
当我们在内部⽹络使⽤syncthing时,因为没有办法连接全球发现服务器,那么我们该如何配置呢?这章节说明⼀下在固定IP的情况下,我们可以使⽤IP地址来配置互相发现。只要能互相ping通,跨⽹段也没关系的。
我们在官⽅的DOCKER运⾏命令中可以看出映射两个端⼝出来,8384和22000,8384是我们⽤来web控制的,那么22000就是syncthing的监听端⼝了。
2.配置
看下⾯两图,这时编辑已经建⽴连接的远程设备,新建设备时也⼀样,我在地址列表中填⼊了远程设备的协议,IP,端⼝。看说明,host计算机名字也可以,域名应该也可以。
dynamic,就是⾃动发现,也是默认值,难道时⾃动扫描么?删除也可以。
3.验证连通
下⾯两图,都是连接断开的状态,不过,我这两台设备,都能连接互联⽹,估计获取了发现服务器记录的地址。但这并不影响我们做测试。
第⼆张图看出地址多了⼀⾏我们配置的tcp://192.168.1.4:22000
下⾯两图是使⽤dynamic时的连通状态,真不知道时什么IP地址。
下⾯两图就是都配置对⽅地址后的连通状态了。使⽤对⽅的⽹络地址连接。
九:内部⽹络使⽤(动态IP),⽆法连接全球发现服务器
1.简介
上⼀章节我们使⽤固定ip,可以通过填写对⽅的⽹络连接参数来配置远程设备。如果同⽹段动态IP,应该也可以⽤host计算机名来配置远程设备。
那么另⼀个⿇烦⼜跳出来了,如果是不同⽹段,⼜是动态IP,怎么办?连接参数中IP是变动的,计算机名时⽆法⼴播解析的。或许可以建个DNS服务器来实现。
太扯了。⼜可能影响原来的DNS解析。
Syncthing Discovery Server---syncting发现服务器来解救你,你这么复杂的运⾏环境,相信会有⼀个⼩型服务器的,只要有⼀个固定IP,就可以了。⼏⼗台设备,⼏百台设备,都可以注册到这个发现服务器,替代全球发现服务器。
2.命令参考
stdiscosrv [-cert=] [-db-dir=] [-debug] [-http] [-key=] [-listen=
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论