Syncthing的安装与使用
无论办公、文件共享、团队协作还是家庭照片、视频、音乐、高清电影的存储,我们常常都有文件同步和存储的需求。但随着国内各大网盘的花式阵亡或限速,早已没什么好选择了。
除了转战 Office365 (OneDrive) 或 番·羽·土·啬 用 Dropbox、Google Drive 以外,个人认为最靠谱的还是利用 VPS、NAS 或自己的电脑搭建私有同步网盘了!不仅速度快空间足,最重要是所有数据都能握在自己手中不受别人限制干涉。而今天推荐的 Syncthing 可能正是这类工具中的最佳选择……
Syncthing - 开源免费的文件夹同步神器 (Resilio Sync 的替代品)
自建网盘云储存同步服务的软件有很多,异次元就推荐过 Seafile、NextCloud、ownCloud、BT Sync (Resilio Sync) 等。而 Syncthing 则有着自己非常特别的优点,受到众多高手们的推荐,被誉为是 Resilio Sync / BT Sync 和 Dropbox 的最佳开源替代品。
Syncthing 最大的特色是采用了与 Resilio Sync (BitTorrent Sync) 类似的 P2P 分布式技术,无需中心服务器,即可让多台设备互相实时同步文件,用过 Resilio Sync 的朋友都明白这种同步方式的优势了。它们两者的实现方式很相似,区别是 Resilio 属于商业软件,需付费使用,在国内也已被土·啬,而 Syncthing 不仅完全免费且开源,相比 Resilio 还增加了「文件版本控制」、「单向同步」等堪称杀手级的功能特性。
Syncthing 功能上非常接近于 Resilio Sync / BT Sync,不过说它是一款用于搭建网盘的服务器软件或者云存储服务应用似乎并不十分恰当,相较于 Seafile、NextCloud 等服务器工具,Syncthing 实际上更像是一款文件/文件夹同步工具。
你可以非常轻松简单地让同一路由器下的多台 PC 电脑、NAS 设备实现局域网互相同步,也可以在 VPS 服务器或 24 小时不关机且有公网 IP 的电脑上安装和配置 Syncthing,让其成为真正意义上的云同步网盘。
免费、开源、跨平台
Syncthing 免费且开源,跨平台支持 Windows、Mac、Linux、Android 等主流平台,除了 PC、手机以外,在部分路由器、树莓派等硬件上都能轻松运行,它将以网页版的形式呈现,并且 Syncthing 还提供了中文界面的支持。
得益于跨平台,Syncthing 的应用场景和范围非常广泛,可以简单用来备份手机照片视频文档,也可以满足公司、企业、团队、个人的各种复杂的文件/文件夹的同步与共享需求。
比较可惜的是,目前 Syncthing 仅有安卓版的官方客户端,并未发布 iOS 版,只有一个由第三方做的相对简陋的 iOS APP 「fsync」可以暂时顶替。
绿色免安装,使用简单!
大多数同类的网盘软件都需要较为麻烦复杂的安装搭建服务器过程,而 Syncthing 在使用上简直超级简单方便!以 Windows 版本为例,Syncthing 本身就是一款绿色免安装的软件,直接下载解压打开 syncthing.exe 即可运行,启动后通过浏览器访问:http://127.0.0.1:8384 进入 Syncthing 的控制面板。
每台设备都会被分配到一个独立的设备 ID 标识 (一长串的字符),在菜单 "操作"->“显示 ID” 里可以找到。
用户可点击“添加远程设备”,输入其他设备的 ID 来配对 (互相添加对方为可同步设备),然后就可以设定需要同步的文件夹,让它们在这些设备之间互相同步文件了。
Windows 图形界面增强版的 Syncthing 客户端 - SyncTrayzor
由于绿色免安装,因此 Syncthing 使用上非常方便!你可以根据需要长期保持 Syncthing 运行时刻监视文件变化并进行同步,也可以仅在需要同步的时候才手动去启动它,平时完全关闭不占用任何系统资源,这取决于你的使用需求。
默认情况下,Windows 版的 Syncthing 启动后会弹出一个命令行窗口一直保持在那里,想要常驻后台时刻同步就得忍受它的存在,有点烦人。为此,Syncthing 官方还提供了一个图形界面版的「SyncTrayzor」工具,如下图:
SyncTrayzor 不仅内置了 Syncthing 本身,并且还可以帮助你实现将 Syncthing 完全最小化到右下角托盘、保持常驻后台运行、或者设置开机启动。虽然体积稍大了点,还需要 .NetFramework 4.5的支持,但使用上则方便了许多,推荐打算常驻后台同步的 Windows 用户使用它。
文件版本控制,神奇的后悔药
话说人生最痛苦的事情莫过于重要文件被误删除、被覆盖等痛心疾首的经历了,而 Syncthing 支持文件版本控制 (File Versioning) 功能,会自动保留文件的历史版本,每次文件在变化之后都会增加一个版本 (总数量可以由你设置),一旦出现文件被删除、丢失、文件内容被替换、同步出错等情况,用户均能从该文件的历史版本中选一个恢复回来,帮助你挽回无可弥补的损失,简直就像是后悔药一样神奇。
在共享文件夹的“选项”->“高级设置”里即可开启或关闭目录的文件版本控制功能,其中分为「回收站式版本控制」、「简易版本控制」、「阶段版本控制」以及「外部版本控制」,选择其中一项均会有对应的说明,大家可根据需要选择。
版本控制对于数据比较重要的朋友来说,绝对是一大必备功能!起码文件都多了一重保障,可靠性大大增加!
众多优点:无限空间、多文件夹同步、加密传输等
Syncthing 可以支持同步多个文件夹,支持设置单向同步、双向同步、设置扫描文件变化的间隔;不限制文件大小,不限制空间 (仅受限于你设备的存储容量);所有的通讯和传输均会被加密,支持 https,安全性高;而且既能支持局域网同步,也可实现互联网同步。
对比 BT Sync 来看,Syncthing 的功能和可配置选项要多一些,不过感觉同步速度似乎比前者稍差一点,当然这个还没实际对比测试过,仅仅是凭印象猜测的,或许并不准确。
总结:
总的来看,Syncthing 就像是整合了 Resilio Sync 和 Dropbox 的优点后的开源替代品,它的应用范围广,你完全可以利用它轻松打造出属于自己的私有云同步网盘服务。
免费、跨平台、开源、绿色免安装、支持文件版本控制、无需中心服务器,方方面面都让 Syncthing 显得相当优秀,加上开源社区源源不断的更新和维护,相信 Syncthing 将会成为文件同步工具中的佼佼者。
----------------------------------------------------------------------------------------------
现在的网盘,一言不合就被「脱裤」,又或者「根据相关法律法规」要整改,要么干脆就关闭了,你们这样让我非常angry!这样乱搞,还让不让人好好地备份文件啦?本着「自己动手丰衣足食」的理念,今天老司机我带大家用Syncthing
来创建属于自己的同步网盘。
什么是Syncthing
按照惯例应该是要先介绍今天的主角的,下面是摘自Syncthing官网首页的一段介绍
Syncthing replaces proprietary sync and cloud services with something open, trustworthy and decentralized. Your data is your data alone and you deserve to choose where it is stored, if it is shared with some third party and how it's transmitted over the Internet.
一句话说完就是「我们这个东西跟那些云服务不一样,是非常安全可靠值得信赖的,你的数据由你来作主」。
准备
既然要同步文件,当然要有至少两台机器了,我这里用的是一台笔记本电脑和一个CentOS的VPS,笔记本作为本地设备,VPS作为远程设备。这里要说明一点,用作文件同步的设备,可以是任何系统任何设备,并不是限定于必须要有一台服务器,在局域网内的两台电脑都可以建立你自己的同步网盘(网盘这个说法其实并不准确)。除了两台机器外,还需要机器系统对应的Syncthing的二进制文件,具体可以从Syncthing首页的「Syncthing Core (CLI & Web UI)」里找到对应版本的下载地址。
现在需要的东西都已经准备好了:
- Windows 7 32bit
- CentOS 6 64bit
- Syncthing Core Windows 32 bit
- Syncthing Core Linux 64 bit
安装
先从官网下载好Windows 32位版(我本本对应的系统版本)的Syncthing,解压后可以看到如下文件结构
直接运行syncthing.exe
会弹出一个黑框框,里面会有一大堆信息,可以不用管
同时浏览器还会打开http://127.0.0.1:8384/
这个网址,可以看到默认已经创建了一个默认文件夹yct7k-lrebo
,所在路径为C:\Users\Administrator\Sync
本地的机器Windows版本就这么简单搞定啦!接下来给VPS也装上,用Xshell
连上服务器,然后用wget
命令下载Syncthing
的Linux 64位版,版本号对应官网上的最新版,请自行选择:
cd ~
wget https://github.com/syncthing/syncthing/releases/download/v0.14.5/syncthing-linux-amd64-v0.14.5.tar.gz
现在可以把下载到的文件解压,然后进入解压后的目录:
tar xzvf syncthing-linux-amd64-v0.14.5.tar.gz
cd syncthing-linux-amd64-v0.14.5
有个可执行文件syncthing
,我们要把它放到我们的PATH
中,以便直接执行:
cp syncthing /usr/local/bin
之前下载和解压出来的文件可以全部删掉了:
cd ~
rm -rf syncthing*
到这里我们在VPS上的Syncthing已经安装好了,可是直接运行的话,并不能通过外网访问到管理页面,因为Syncthing的管理页面默认是只有本机可以访问的,所以接下来还要进行一点修改,先运行Syncthing:
syncthing
随后就会看到有很多信息,和之前在Windows运行一样,看到类似以下内容的时候就可以按CTRL-C
退出程序了:
[OH4IP] 13:32:15 INFO: Completed initial scan (rw) of folder edatb-zzc5f
[OH4IP] 13:32:15 INFO: Device OH4IPQD-QDCDAZB-YMMZE4F-BAK4BLQ-3EZLPTD-V73J37V-LTW44V6-YSM6JQ7 is "ruter.ga" at [dynamic]
[OH4IP] 13:32:15 INFO: Loading HTTPS certificate: open /root/.config/syncthing/https-cert.pem: no such file or directory
[OH4IP] 13:32:15 INFO: Creating new HTTPS certificate
[OH4IP] 13:32:15 INFO: GUI and API listening on 127.0.0.1:8384
[OH4IP] 13:32:15 INFO: Access the GUI via the following URL: http://127.0.0.1:8384/
[OH4IP] 13:32:16 INFO: Detected 0 NAT devices
我们第一次运行是为了让它创建配置文件,然后我们再进行修改。用以下命令对配置文件进行编辑:
vim ~/.config/syncthing/config.xml
一瞬间是不是懵逼了?不要慌,先找到下面这几行:
<gui enabled="true" tls="false" debugging="false">
<address>127.0.0.1:8384</address>
<apikey>2GeGJK9z6tXKP3nHJYU56ZHoYSYnqQ9S</apikey>
<theme>default</theme>
</gui>
然后把IP127.0.0.1
修改成0.0.0.0
即可保存退出:
<gui enabled="true" tls="false" debugging="false">
<address>0.0.0.0:8384</address>
<apikey>2GeGJK9z6tXKP3nHJYU56ZHoYSYnqQ9S</apikey>
<theme>default</theme>
</gui>
设置好之后执行syncthing
运行,就可以通过http://your_ip_addr:8384
来进行访问管理了,如果直接通过外网ip:端口访问还是无法打开管理页面,那就需要进行防火墙的设置开启8384端口了:
iptables -I INPUT -p tcp --dport 8384 -j ACCEPT
service iptables save
service iptables restart
syncthing
再次打开http://your_ip_addr:8384
就能看见管理页面了
可以很明显地看到一条警告信息,提醒我们设置管理用户及密码,点击「设置」,然后把「用户名」和「密码」填写好,「使用加密连接到图形管理页面」这个是开启HTTPS
,按需勾选
同步
打开本地管理页面http://127.0.0.1:8384/
,然后点击「添加远程设备」将VPS添加到同步列表里,其中「设备ID」需要在VPS的管理页面打开「操作」--「显示ID」查看,将ID复制到「设备ID」一栏中,「地址列表」默认使用dynamic
即可,其他按需修改
保存之后我们可以在VPS端的管理页面上看见连接请求
添加成功后会有共享文件夹的提示
为了测试文件同步是否成功,我在本地同步路径C:\Users\Administrator\Sync
添加了一个文件ROR.txt
,自动同步完成后可以在VPS端管理页面看到「最后接收的文件」显示「已更新 ROR.txt」
进阶
在服务器上使用Syncthing可以修改配置文件后使用外网进行访问管理,本地端也可以如法炮制,如果没有外网IP则需要使用花生壳
之类的进行映射,具体操作请移步Google :)
Syncthing有一些高级的功能前面没有提及,例如每个共享的文件夹都可以在「选项」内打开「高级设置」,进行一些设置,如开启「版本控制」。
通过Syncthing共享的文件夹,被取消共享后,本地已经同步的文件也依然会存在。
除了自己使用,在小圈子内也是很有利用价值,例如共享资源什么的,再也不用忍受各种网盘的龟速上传下载以及删资源啦!
扩展
以上只是简单的安装和设置步骤,还有很多内容没有涉及到,例如开机启动、忽略同步内容、命令行操作等等,具体请查看官方文档,里面有非常详尽的教程。
谢谢阅读(σ′▽‵)′▽‵)σ