专栏首页气象学家Syncthing就是我要的同步备份软件

Syncthing就是我要的同步备份软件

对于日常科研之中的数据和代码备份的方式有很多种,但是日积月累之后,会发现没有统一的规划会存在很大的问题。因此,Syncthing为免费开源同步工具,相比于云存储版本控制的“精贵”服务,能够利用课题组已有的服务器或者个人存储设备自动备份重要的数据和代码不失为性价比较高的选择,且使用起来也稳定可靠。

引言

数据无价,平时不注意备份,电脑突然翻车就追悔莫及啦。

最开始的时候,我在路由器上开启 Samba,每次编辑完项目就手动拷贝到路由器硬盘里,麻烦程度可想而知,后来又用了 Google Drive/One Drive,又因为它们的网络不理想,就又放弃使用了。其实就是很简单的需求,自动备份、速度快,然后去找了一下,发现一堆人推荐用 Rsync,这货我只在 VPS 上用过,拿来做镜像同步,但是要做实时同步,不好配置。

我就想,这需求应该有一大堆人有吧,就去 github 搜索 sync,发现 Syncthing 这么个好东西,截止 2018-06-13 已经得到 20k+ 的 star,并且更新很活跃

介绍

Syncthing 是一个文件连续同步软件

项目地址:

https://github.com/syncthing/syncthing

它有以下特性:

  • 跨平台:使用 Golang 开发,几乎能在所有平台上使用,包括常见的安卓手机和路由器平台
  • 易于使用:只需要下载运行,打开浏览设置本地目录和远程主机,其他的不需要管
  • 安全:管理页可以设置密码,可以设置 https,设置备份需要两边都确认,使用唯一设备标识进行确认

安装

Syncthing 有多种安装方式

有一定 Linux 基础的人,可以使用下面的配置来设置启动服务

https://github.com/syncthing/syncthing/tree/master/etc

Windows,Mac,Linux 和安卓手机可以在这里下载有 GUI 界面的程序使用

https://docs.syncthing.net/users/contrib.html#gui-wrappers

其他方法可以自己决定,我是直接下载安装包命令行启动的

在 macOS 上安装

我用的是 macOS,可以直接使用 homebrew 安装启动,并且可以开机自动启动,你也可以到这里 QSyncthingTray 下载 macOS 的 GUI 版

brew install syncthing

启动服务(同时设置开机启动)

brew services start syncthing

停止服务(同时关闭自启)

brew services stop syncthing

手动启动(不会开机自启)

syncthing

启动进程后,可以用浏览器打开 http://localhost:8384/ 来查看 web 管理页

在 Windows 上安装

Windows 直接在这里 SyncTrayzor 下载软件运行

在 Linux VPS 上安装

大多数发行版和不同 CPU 平台的安装包,可以在这里 Syncthing 找到,把它下载到你想要放在的目录然后设置权限,使用命令运行

文章开头有 GUI 版本的链接,不过我要装在没有 GUI 的 VPS 上,所以直接用命令行运行,系统用的是 Debian 9,然后用 supervisor 进程守护来启动的

碰巧前几天之前的一个客户,他的 VPS 做迁移,阿里云送了张代金券,然后客户就送给我了

然后续费 9 个月的阿里云学生机,美滋滋?

虽然带宽比较低,但是对于这种连续同步的备份来说,在第一次备份之后,后面都是增量备份了,除非你都是备份大文件,要不对带宽的要求不是很高,另外 40G 的盘,完全够我备份用了,阿里云最主要就是稳定,很适合做我的备份机

下载 Syncthing

下载最新的包,解压,移动到 /bin/ 里,改权限

wget https://github.com/syncthing/syncthing/releases/download/v0.14.49-rc.1/syncthing-linux-amd64-v0.14.49-rc.1.tar.gz

tar xzvf ./syncthing-linux-amd64-v0.14.49-rc.1.tar.gz

mv ./syncthing-linux-amd64-v0.14.49-rc.1/syncthing /bin/

chmod +x /bin/syncthing

进程守护

安装 supervisor

apt-get install supervisor

配置守护

vi /etc/supervisor/conf.d/syncthing.conf

填入以下内容

[program:syncthing]
command = /bin/syncthing -no-browser -home="/root/.config/syncthing"
directory = /root
autorestart = True
user = root
environment = STNORESTART="1", HOME="/root"

注意,我例子里使用的是 root 用户,所以响应的目录是 /root,你要是使用其他用户,应该是 /home/用户名,就是你登录时默认所在的目录

现在就可以使用 supervisorctl 命令来管理进程了

启动

supervisorctl start syncthing

重启

supervisorctl restart syncthing

停止

supervisorctl stop syncthing

启动进程后,可以用浏览器打开 http://你的IP:8384/ 来查看 web 管理页

如果无法打开页面,需要修改 /.config/syncthing/config.xml 里的 127.0.0.1:8384 字段为 0.0.0.0:8384,或者你可以和我一样使用 nginx 做反向代理,前提是你知道怎么做

在路由器上安装

目前 Entware 源里已经有这个包了,但是我发现它是个旧版本,并且有问题,所以这里我选择手动安装

这里的例子是 LEDE x64 但是也适合一切安装了 Entware 的路由器

在这里 Syncthing 下载对应 CPU 平台的安装包,可以用 uname -m 查看,我这里是 x86_64 所以选择 amd64

下载 syncthing

下载最新的包,解压,移动到 /opt/bin/ 里,改权限

wget https://github.com/syncthing/syncthing/releases/download/v0.14.49-rc.1/syncthing-linux-amd64-v0.14.49-rc.1.tar.gz

tar xzvf ./syncthing-linux-amd64-v0.14.49-rc.1.tar.gz

mv ./syncthing-linux-amd64-v0.14.49-rc.1/syncthing /opt/bin/

chmod +x /opt/bin/syncthing

添加启动命令

创建并编辑 /opt/etc/init.d/S92syncthing

vi /opt/etc/init.d/S92syncthing

在里面填上下面所有字段

#!/bin/sh
ENABLED=yes
PROCS=syncthing
ARGS="-home=/opt/etc/syncthing"
PREARGS=""
DESC=$PROCS
PATH=/opt/sbin:/opt/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

if [ ! -d /opt/etc/syncthing ]; then
   /opt/bin/syncthing -generate="/opt/etc/syncthing"
   sed -i 's|127.0.0.1:8384|0.0.0.0:8384|' /opt/etc/syncthing/config.xml
elif [[ -f /opt/etc/syncthing/config.xml -a "127.0.0.1:8384"=="127.0.0.1:8384" ]]; then
   sed -i 's|127.0.0.1:8384|0.0.0.0:8384|' /opt/etc/syncthing/config.xml
fi

. /opt/etc/init.d/rc.func

然后给权限

chmod +x /opt/etc/init.d/S92syncthing

用法:

 /opt/etc/init.d/S92syncthing (start|stop|restart|check)

启动服务就能在浏览器打开 路由器IP:8384 例如 192.168.1.1:8384 打开管理页了

使用方法

易于使用是 Syncthing 的一个重要特性,打开管理页,一目了然

首次打开管理页,所有平台上都是一样的

然后你需要做的就是

设置用户名、密码

设置文件夹

删除默认的同步文件夹,添加新同步文件夹

添加远程设备

然后稍微等一分钟,两边就能连接上了

最终效果

结语

Syncthing 作为一款跨平台同步软件,它简单易用、功能完善强大,具有很高的稳定性,很容易让人想出各种使用场景,而且它还是开源的,感谢那上百位贡献者

本文简单介绍了初级使用方法,还未提及其他的诸如版本控制等功能,其他功能应用,如果以后我觉得值得一说,再更新了。

参考

  • https://zhih.me/syncthing-the-best/

本文分享自微信公众号 - 气象学家(Meteorologist2019),作者:冰水加劲Q

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-06-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 气象编程|值得收藏的Numpy小抄表(含主要语法、代码)

    NumPy(Numeric Python)提供了许多高级的数值编程工具,如:矩阵数据类型、矢量处理,以及精密的运算库。专为进行严格的数字处理而产生。多为很多大型...

    气象学家
  • 复合型极端气候:机器学习,统计方法和动力模拟

    最近Frontiers in Earth Science期刊组织一个专刊/专题 “复合型极端气候:机器学习,统计方法和动力模拟”。主要关注洪水,干旱,热浪,极端...

    气象学家
  • 气象编程 | 常见算法的Python实现(Github标星7.6W+)

    这个仓库用python语言实现了绝大部分算法,主要是用于教学目的,因此效率稍微低于工业界。

    气象学家
  • 不定高多行溢出文本省略

    大家应该都知道用text-overflow:ellipsis属性来实现单行文本的溢出显示省略号(…)。当然部分浏览器还需要加宽度width属性。

    空空云
  • YOLO—实时对象检测的新视角

    近几年,在深入学习的帮助下, 目标检测领域取得了巨大的进步。对象检测是标识图像中的对象并在其周围绘制边界框的任务, 也就是定位它们。在计算机视觉由于其众多的应用...

    AiTechYun
  • LightOj_1408 Batting Practice

      击球训练中, 你击中一个球的概率为p,连续击中k1个球, 或者连续击空k2个球, 则训练结束。

    若羽
  • Gym 100952J&&2015 HIAST Collegiate Programming Contest J. Polygons Intersection【计算几何求解两个凸多边形的相交面积板子题

    J. Polygons Intersection time limit per test:2 seconds memory limit per test:64 ...

    Angel_Kitty
  • 「POJ-3608」Bridge Across Islands (旋转卡壳--求两凸包距离)

    饶文津
  • 从10W个数中随机抽走2个数,求出那两个数是多少

    从1到10w(共10w个数)中随机抽走2个数,然后打乱剩下的数的顺序,问如果从这剩下的数中快速的找出抽走的是哪2个数?

    meteoric
  • 【程序源代码】论坛社区开源版本

    使用java作为后端开发 使用springboot、mysql、druid、 mybatis、pagehelper、javamail、redis、beetl、h...

    程序源代码

扫码关注云+社区

领取腾讯云代金券