开源数据备份工具 Duplicati
  分类: 佳软推荐   评论: 0 条

开源数据备份工具 Duplicati

in 佳软推荐 with 0 comment

使用 Duplicati + 腾讯云 COS,完美备份我的服务器数据。

文件备份需求

我有两台腾讯云的服务器,一台部署了博客,一台部署了一些个人项目,虽说云服务器很稳定,基本不会发生丢失数据的问题,但我个人之前经历过数据丢失,俗话说一朝被蛇咬十年怕井绳,所以一直在尝试把博客和项目的数据备份到其他地方。

我自己写过一个备份文件的 Java 程序,通过 crontab 定时任务和 shell 脚本可以把文件定期备份到七牛云。但由于没有可视化界面,配置起来比较麻烦,再加上程序本身也不支持恢复数据,需要去七牛云自行下载数据,所以还是想找一个比较完善的备份工具。

备份工具的选择肯定是开源优先,除了要支持图形化界面配置,还要支持国内的对象存储,并且支持周期性备份和数据恢复。

找了一圈,最终选择了「Duplicati」这款工具,完全符合上述需求。关于存储类型这里多说一句,虽然 Duplicati 支持的国内对象存储只有「Tencent COS」也就是腾讯云的 COS,但是通过使用「S3 兼容」协议,可以支持国内大多数云厂商的对象存储。

Duplicati 使用

Duplicati 开源地址:https://github.com/duplicati/duplicati

部署

首先部署 Duplicati,我选择了 Docker Compose 方式进行部署,使用的镜像是 linuxserver/duplicati

关于 docker 和 docker compose 的安装可以参考「Docker环境搭建(CentOS篇)」。

docker-compose.yml 文件内容如下:

version: "2.1"
services:
  duplicati:
    image: lscr.io/linuxserver/duplicati:latest
    container_name: duplicati
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Shanghai
      - CLI_ARGS= #optional
    volumes:
      - ./appdata/config:/config
      - ./backups:/backups
      - ./source:/source
      - /opt:/opt
    ports:
      - 8200:8200
    restart: unless-stopped

配置文件这里要额外说明一下,docker 方式部署可能会导致某些文件目录读取不到,所以需要在 volumes 节点下增加映射,例如 opt 映射,如果你也遇到文件目录读取不到的问题,参考上述配置增加 volumes 映射即可。如果需要读取 root 目录,需要把 PUID 和 PGID 改为 0,并且设置 rootvolumes 映射。

在 docker-compose.yml 文件同目录下执行 docker compose up -d 启动项目,浏览器访问 http\://:8200 或自行配置域名访问。首次进入会提示设置密码,也可以稍后在设置中进行设置。

首次访问

备份文件

Duplicati 部署好之后,我们来看下如何备份文件。

点击「新增备份」菜单,默认选择的是「配置新文件」,如果需要导入其他地方导出的任务可以选择「从文件导入」。

添加新备份

点击下一步,设置备份的名称、描述和加密方式,我这里选择了不加密。

常规备份设置

点击下一步,配置备份的保存位置,默认是备份到本地磁盘,可以点击下拉菜单选择其他选项。

备份保存位置

这里我选择「S3 兼容」,然后填写如下配置:

S3 兼容

其他选项保持默认,点击测试,弹框提示调整 bucket 名称选择「否」,再次弹框显示测试成功说明配置正确。

点击下一步配置源数据,即要备份的文件或目录,这里我选择备份我的相册目录。

源数据

点击下一步,设置备份计划,我这里修改时间为晚上 23:00。

计划

点击下一步,配置远程卷大小和备份保留策略。远程卷大小可以保持默认,我这里设置了远大于需要备份的文件大小,备份保留策略选择永久保留,你也可以根据自己的需要选择合适的备份保留策略。

常规选项

点击保存,会弹框提示是否继续不启用加密,由于我最开始选择了不加密,所以这里选择继续不启用加密。

不启用加密

保存成功会后跳转到首页,会展示备份任务列表,在这里可以立即执行某个任务,或者点击下拉菜单进行更多选择和设置,例如编辑、导出、删除、查看日志等。

首页

这里我运行了一下备份任务,通过下图的日志可以看到,500M 的文件,40 秒就完成了备份,这速度相当快了。

日志

恢复文件

讲完备份再来说下如何恢复文件,一般有两种场景,一种是已备份的文件不小心删除了,需要恢复到原位置;另外一种是需要把已备份的文件下载到其他设备,Duplicati 都可以满足。

点击「恢复文件」菜单,有三种恢复方式:

恢复文件

具体操作和配置选择可自行查看,这里略过。

使用感受

存储类型选择

我一开始使用的存储类型是七牛云,但是我发现每次备份 Duplicati 都会把已备份的文件下载到服务器,而七牛云的 S3 兼容方式又是付费的,也就是说频繁的周期性备份会导致较高的费用。

经过搜索,我发现腾讯云会给 COS 老用户永久的免费额度,于是就改为使用腾讯云 COS。如果你也是腾讯云客户,可以访问「免费额度资源包」查看是否有免费额度。

免费额度资源包

起初我是选择了「Tencent COS」进行配置,但是发现 Duplicati 的内存占用居高不下,甚至会导致服务崩溃,由于之前使用七牛云的 S3 兼容协议时并未发现此问题,所以我尝试使用 S3 兼容协议配置腾讯云 COS,果然内存占用过高的问题不存在了。

由于我的服务器也是腾讯云,而且跟 COS 是同一地区,这就使得备份走的是内网,也就是说除非我把文件恢复到我的电脑或其他地方,否则是不消耗外网下行流量额度。唯一的限制是存储容量,但是 50G 的免费额度也足够了。

可以按照你自己的服务器厂商选择对应的对象存储,理论上同一家服务器和对象存储之间应该都是支持内网传输的,而且大部分的国内云服务器厂商的对象存储也支持 S3 兼容协议,这样就可以省下不少外网下行流量额度或费用。

备份流程

Duplicati 备份会把文件打包压缩上传,并且在同目录生成对应的配置文件。

文件结构

后面的每次备份都会把文件下载到本地,然后再进行比对,前面也说到了,这部分是可能产生费用的,需要考虑对象存储和备份的频率的选择。

优点

注意事项

客户端

Duplicati 除了可以在服务器上使用,也可以在电脑端使用,访问「Duplicati Download」查看更多系统的客户端下载。

Duplicati 配合腾讯云 COS 完美解决了我的服务器文件备份需求,如果你也有文件备份的需求,可以尝试一下 Duplicati。

欢迎关注我的公众号,及时获取最新文章推送。