前言

公司业务中使用的备份工具一直是alicloud-duplicity,一直也没研究。后来业务出问题了,看了看,原来是基于duplicity开发的,使用了半天,感觉很不错,我感觉他的特点有:

  • 加密备份
  • 支持多种协议
  • 内置了主流的存储商的backendsAzureAWS S3onedrive
  • 支持增量备份

问题

  • duplicity官方没提供阿里云OSSbackends,所以才有了alicloud-duplicity,但alicloud-duplicity项目已经停更好久了,但也仅限于Python2,所以我在alicloud-duplicity

    基础上适配了Python3,目前没什么问题,项目地址duplicity

  • 恢复时的小问题:恢复没有“增量”恢复的概念(至少我没找到),只能恢复到一个本地空目录,如果是非空目录,需要加上参数--force。这个我感觉是个最大的不足,举例来说:增量备份一个小文件small.file,在另一台机子上你想获取最新的备份数据(除了这个小文件,其余文件在本地都已经存在),恢复时,会全量从远端下载所有的文件,虽然你只是想得到small.file这个小文件。

安装

  • 安装依赖:apt install gettext librsync-dev python3-dev -yyum install librsync-devel python3-dev gettext -y
  • pip依赖:pip install future fasteners oss2
  • 克隆代码:git clone https://github.com/steinvenic/duplicity慢的话用加速源git clone https://github.com.cnpmjs.org/steinvenic/duplicity.git
  • 安装:python setup.py install
  • 验证: duplicity -V

使用

因为支持的协议和厂商太多了,这里只拿阿里云OSS和亚马逊的S3举例

阿里云

  • 鉴权
echo "\
[oss]
endpoint=oss-cn-shanghai.aliyuncs.com
access_key_id=YOUR KEY ID
access_key_secret=YOUR KEY SECTER">~/.alicloud.cfg
  • 加密秘钥

    export PASSPHRASE=YOUR PASSWORT,这个是自己的加密密码,解密的时候需要用到

  • 全量备份:duplicity full /etc/ oss://nj-test/etc_bak

  • 增量备份:duplicity incre /etc/ oss://nj-test/etc_bak

  • 恢复:duplicity restore oss://nj-test/etc_bak /etc/

  • 恢复到指定时间点 :duplicity restore --force -t 2021-07-21T13:15:00 oss://nj-test/etc_bak ./etc

  • 恢复到相对时间点 :duplicity restore --force -t 20D oss://nj-test/etc_bak ./etc,恢复20天前的数据,D表示天,M表示分钟

  • --volsize=200,指定卷大小为200MB

  • 排除某个目录:duplicity full /root/tmp/ --exclude '/root/tmp/frp*' boto3+s3://cf-nj,备份的路径要用绝对路径

亚马逊S3

  • 鉴权

    mkdir ~/.aws
echo "\
[default]
region=cn-north-1
aws_access_key_id = YOUR KEY ID
aws_secret_access_key = YOUR KEY SECTER">~/.aws/credentials
  • 安装依赖pip install boto3

  • 全量备份:duplicity full /etc/ boto3+s3://nj-test/etc_bak

后面的用法就一样了,不写了

恢复数据到个人NAS

我用的nextcloud,支持webdav协议,所以只要使用davfs2将文件挂载到本地,改成自己的webdav地址就可以了

安装davfs2 :apt-get install davfs2 -y && mkdir /nc

挂载:mount -t davfs http://nc.824809799.xyz:8000/remote.php/dav/files/eric /nc

恢复:duplicity restore --force oss://nj-test/tmp /nc/tmp

最新文章

  1. 将.NET dll注册到GAC(Global Assembly Cache)中
  2. 在Linux上编写C#程序
  3. Java:基于LinkedList实现栈和队列
  4. MVC缓存02,使用数据层缓存,添加或修改时让缓存失效
  5. 从两个平方算法到分治算法-java
  6. eclipse编码格式设置教程、如何为eclipse设置编码格式?
  7. Ladda – 把加载提示效果集成到按钮中,提升用户体验
  8. MySQL 使用explain查看执行计划
  9. poj 2187 Beauty Contest (凸包暴力求最远点对+旋转卡壳)
  10. php下使用phpmailer发送邮件
  11. ReferenceError: Error #1069: 在 spark.components.RadioButtonGroup 上找不到属性 label,且没有默认值
  12. 配置FMS发布/HDS/HLS流
  13. supermap开发webgis的经验
  14. 使用bitset实现毫秒级查询
  15. Django多级评论
  16. xpath分析 html文件抽正文的过程
  17. [CTSC2012]熟悉的文章 (后缀自动机 单调队列)
  18. leetcode937-java
  19. Beta版本讨论
  20. rtx 导出所有部门和用户

热门文章

  1. python学习-Day36
  2. 代码管理工具-Git基础介绍及常用技巧
  3. 劳动节快乐!手写个核心价值观编码工具 - Python实现
  4. 团队Beta1
  5. call()、apply()、arguments
  6. C++进阶-3-6-map/multimap容器
  7. 2┃音视频直播系统之浏览器中通过 WebRTC 拍照片加滤镜并保存
  8. swagger在线api文档搭建指南,用于线上合适么?
  9. 从标准输入流中读取并执行shell指定函数
  10. MongoDB 分片集群