简介:
不管办公、文件共享、团队协做仍是家庭照片、视频、音乐、高清电影的存储,咱们经常都有文件同步和存储的需求。但随着国内各大网盘的花式阵亡或限速,早已没什么好选择了。好吧,我已经转战使用onedriver了,可是在单位里面,没有互联网,找开源的软件试试本身搭建吧。git
自建网盘云储存同步服务的软件有不少, Seafile、NextCloud、ownCloud、BT Sync (Resilio Sync) 等。github
而 Syncthing 则有着本身很是特别的优势,受到众多高手们的推荐,被誉为是 Resilio Sync / BT Sync 和 Dropbox 的最佳开源替代品。web
Syncthing 最大的特点是采用了与 Resilio Sync (BitTorrent Sync) 相似的 P2P 分布式技术,无需中心服务器,便可让多台设备互相实时同步文件。docker
Syncthing 官方支持 Linux、Windows、OS X、FreeBSD、Solaris 等系统,而且有第三方的 iOS、Android 应用。flask
我选择它还有一个缘由就是,它只须要一个文件就能够了。在linux下只有一个文件,在windows下也能够只有一个文件,固然还有一个GUI桌面程序。windows
一:官网及下载
官网地址:https://syncthing.net/安全
linux64位就是我主力使用的,放在一个fedora服务器上,不过是跑在docker里面。
SyncTrayzor是官方提供的GUIwindows客户端,方便设置开机启动进行自动同步。能够缩小到任务栏。实在是方便部署到客户端,让它自动上传啊。
SyncTrayzor维护在github。https://github.com/canton7/SyncTrayzor/releases
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/syncthing/config.xml
默认配置文件在/root/.config/syncthing/config.xml,默认监听网络是127.0.0.1,远程不能访问,因此用sed命令修改成0.0.0.0
3.运行
./usr/bin/syncthing
再次运行起来。
4.测试
http://youip:8384/ 或者 http://hostname:8384/ 均可以访问,记得改你的ip,或者网络名。复制不能用。
只要没出乱七八糟的错误,就算安装成功了。
二:在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,两个端口通常不占用,直接运行。
3.测试
和linux测试同样。
http://youip:8384/ 或者 http://hostname:8384/ 均可以访问,记得改你的ip,或者网络名。复制不能用。
只要没出乱七八糟的错误,就算安装成功了。
三:在windows中安装
1.下载
windows下咱们就不使用linux那样的单文件版了。
https://github.com/canton7/SyncTrayzor/releases/download/v1.1.21/SyncTrayzorPortable-x64.zip
目前最新的应该是这个版本。若是你是32位的系统,请下载x86版。
2.运行
解压后找到SyncTrayzor.exe,双击运行便可
3.配置
仍是老问题,默认只有127.0.0.1,localhost能够访问,没有远程访问权限。
照下图,右边的设置,用来修改图形界面监听地址,而且能够设置随开机自动启动
四:基本配置
1.配置简介
咱们要配置自动同步,那么就要有2台电脑运行syncthing,相互要能连通,并配置相同ID的共享文件夹。
每台电脑,第一次运行syncthing时,会自动生成随机ID,并注册ID,网络地址到全球发现服务器。添加远程设备时,去全球发现服务器,来查ID,取得远程设备的网络地址。
因此,在windows不要复制解压运行过的SyncTrayzorPortable-x64.zip,只复制压缩包,解压,从新生成新的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,
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,就能够了。几十台设备,几百台设备,均可以注册到这个发现服务器,替代全球发现服务器。
发现服务介绍https://docs.syncthing.net/users/stdiscosrv.html 发现服务源码 https://github.com/syncthing/discosrv 发现服务下载:https://github.com/syncthing/discosrv/releases
2.命令参考
stdiscosrv [-cert=<file>] [-db-dir=<string>] [-debug] [-http] [-key=<string>] [-listen=<address>] [-metrics-listen=<address>] [-replicate=<peers>] [-replication-listen=<address>]
-cert=<file>
证书文件(default “./cert.pem”).
-db-dir=<string>
数据存储目录 (default “./discovery.db”).
-debug
debug模式输出
-http
使用http协议还要求在https代理后面 (behind an HTTPS proxy).
-key=<file>
key文件 (default “./key.pem”).
-listen=<address>
监听端口 (default “:8443”).
-metrics-listen=<address>
不知道是什么意思 (default disabled).
-replicate=<peers>
复制另外一台发现服务器?
-replication-listen=<address>
另外一台发现服务器监听端口?
3.运行
syncthing真是良心,也不用复杂的安装,linux下也不用编译,不论linux仍是windows,都是一个文件,直接运行。并且这个发现服务器,看着挺多的运行参数,其实一个也不用写。它和单文件的客户端同样,直接运行就能够了,自动生成各个目录和文件。
windows下是这样
linux下是这样
若是你有本身的证书,那么能够这样运行,把证书路径做为参数,启动发现服务器。
stdiscosrv -cert=/path/to/cert.pem -key=/path/to/key.pem
4.生成节点配置URL
若是您使用的是非CA签名证书,则必须将该设备ID(指纹)交给使用发现服务器URL的客户机。
这个客户机的意思时对发现服务器,全部运行syncthing的节点都是发现服务器的客户机。
非CA签名的证书,自动生成的必定时非CA签名证书。
官方给的示例是这样的
https://disco.example.com:8443/?id=7DDRT7J-UICR4PM-PBIZYL3-MZOJ7X7-EX56JP6-IK6HHMW-S7EK32W-G3EUPQA
看到那串像序列号的东西,就是设备ID,启动发现服务器的时候,它也显示出来了。记下来,用来组合咱们本身的发现服务器地址。
原本就内网了,域名就算了,可使用IP地址。
对应上面启动的两个发现服务器。
windows:IP 192.168.1.4
URL https://192.168.1.4:8443/?id=ZRXXI2M-XEARVGA-SSYYEWO-6QGNNIZ-HPBVH3K-PIR6DCY-HJERGZE-PXF7NAL
linux: IP 192.168.1.3
URL http://192.168.1.3:8443/?id=5OJDGM7-BZ6EJT2-M2BEAIX-MK2SBMY-N4STHNI-MEP3VKO-RI6H27D-PYXTPAB
若是你有CA签名的证书,那么URL就不须要ID参数了。
https://disco.example.com:8443/ https://disco_server_ip:8443/
4.给节点配置URL
管理界面,右上角 操做--设置--链接
全球发现服务器,删除原来的default,填上咱们生成的节点配置URL。
提示重启syncthing,重启一下就能够了。
5.关闭手动指定的远程设备地址
远程设备--选项--地址列表
原来的:tcp://192.168.1.4:22000,dynamic
改成:dynamic
6.测试
其实就是看远程设备的地址,原来咱们使用defalut全球发现服务器的时候,远程设备地址,反正是我不认识的地址。
当咱们配置了远程设备IP地址以后,远程设备地址,是咱们配置的远程设备地址。
如今咱们取消了远程设备地址,使用了咱们本身的发现服务器地址。
也就是syncthing,把本身注册到咱们本身的发现服务器上,并根据ID从咱们本身的发现服务器地址,查找远程设备地址。
若是远程设备地址,是咱们的内部网IP地址,并能够显示同步完成。
那就一切OK了。
结语:
syncthing,使用方便,配置方便,在各大网盘纷纷关停,收费,限速………………因素下。
本身搭建一个,也挺好。或者百度搜索5T onedriver已失效。
个人用途呢,实际上是在进行软件开发的时候。worker编写了源代码,server生成docker,之前用ftp,sftp上传,而后docker build。
文件少的时候还好,文件多的时候,又覆盖,那是一个慢啊。都在一个局域网,又不必使用github的自动构建,用自动构建,还要等docker hub 服务器空暇。
如今是把woker的源码文件夹,同步到server的docker build目录。docker build的时候把源码copy进镜像。编译前还能够到web管理界面扫描同步一下。
尤为时源码只改几个文件的时候,同步很快。方便了我这个伪全栈的开发过程。
我的如今比较喜欢在服务器上使用docker做为服务。官方提供了linux_syncthing的dockre镜像。
我还须要一个linux_stdiscosrv的镜像。这几天写好了,把地址给你们。
写着也挺快,但这篇教程,又臭又长,让我休息一下吧。