前言

公司业务中使用的备份工具一直是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

阿里云 python3 使用duplicity的更多相关文章

  1. 阿里云 SDK python3支持

    最近的一个项目需要操作阿里云的RDS,项目使用python3,让人惊讶的是官方的SDK竟然只支持python2 在阿里云现有SDK上改了改,文件的修改只涉及aliyun/api/base.py,详见h ...

  2. python3 获取阿里云ECS 实例及监控的方法

    #!/usr/bin/env python3.5 # -*- coding:utf8 -*- try: import httplib except ImportError: import http.c ...

  3. 阿里云 centos7 django + uWSGI+Nginx + python3 部署攻略

    centos7+nginx+python3+django+uwsgi配置Django 项目部署   1.租的服务器(选择centos)的话,需要在阿里云后台控制台开放几个端口,克隆一下已开放的端口,t ...

  4. Python3.6+nginx+uwsgi部署Django程序到阿里云Ubuntu16.04系统

    Python3.6+nginx+uwsgi部署Django程序到阿里云Ubuntu16.04系统 这个是写好的Django程序在本地机运行的情况,一个查询接口. 准备工作 1.首先购买一台阿里云的EC ...

  5. 阿里云 rds python sdk不支持python3处理

    阿里云文档中心的python版本aliyun-python-sdk-rds不支持python3处理 问题:默认情况下文档中心的python版本只支持python2,不兼容python3版本 需要稍微修 ...

  6. python3调用阿里云语音服务

    步骤 1 创建阿里云账号,包括语音服务里的企业实名 为了访问语音服务,您需要有一个阿里云账号.如果没有,可首先按照如下步骤创建阿里云账号: 访问阿里云 官方网站,单击页面上的 免费注册 按钮. 按照屏 ...

  7. 阿里云 oss python3 样例

    阿里云的oss SDK又是不支持python3,头疼头疼. 本想改一改它的SDK,让它支持python2+python3,无奈里面大量的代码使用不带括号的print.工作量恐怖. 幸好oss的使用很e ...

  8. 在阿里云上安装python3.4和pycharm

    一. 安装python3.4 二. 安装pycharm 三. 安装可视化界面和远程桌面连接 四. 启动和配置pycharm 五. 安装更多字体 六. 给pycharm设置桌面快捷方式 一. 安装pyt ...

  9. linux安装配置阿里云的yum源和python3

    一.yum源理解 yum源仓库的地址 在/etc/yum.repos.d/,并且只能读出第一层的repo文件 yum仓库的文件都是以.repo结尾的 二.下载阿里云的.repo仓库文件 ,放到/etc ...

随机推荐

  1. 关于VR(虚拟现实)的探讨

    从外部来看:一个完整的系统由输入和输出组成,人体也不例外.人的输入系统一般称为感官系统,主要由口耳眼鼻舌和皮肤组成,它们对应于味觉.听觉.视觉.嗅觉和触觉.生而为人,我们对于外部世界的感知主要来自于上 ...

  2. 1.12 Linux已经霸占了服务器领域!

    如今的 IT 服务器领域是 Linux.UNIX.Windows 三分天下,Linux 系统可谓后起之秀,特别是"互联网热"以来,Linux 在服务器端的市场份额不断扩大,每年增长 ...

  3. CVE-2021-35042

    CVE-2021-35042 漏洞介绍 Django 是 Python 语言驱动的一个开源模型-视图-控制器(MVC)风格的 Web 应用程序框架. 漏洞影响版本:django 3.1.3.2 202 ...

  4. gitee上传代码到仓库步骤(最简洁图文+命令说明)

    gitee上传代码到仓库步骤(最简洁图文+命令说明) 目录 1.初始化项目 2.将当前目录下所有需要上传的文件代码等资源添加到缓存区 3. 提交缓存区里面的主要内容到本地仓库 4.添加一个远程仓库的地 ...

  5. java高级用法之:绑定CPU的线程Thread-Affinity

    目录 简介 Java Thread Affinity简介 AffinityLock的使用 使用API直接分配CPU 总结 简介 在现代计算机系统中,可以有多个CPU,每个CPU又可以有多核.为了充分利 ...

  6. 1903021121—刘明伟—Java第三周作业—学习在eclipse上创建并运行java程序

    项目 内容 课程班级博客链接 19信计班(本) 作业要求链接 第三周作业 作业要求 每道题要有题目,代码,截图 扩展阅读 eclipse如何创建java程序 java语言基础(上) 扩展阅读心得: 想 ...

  7. for循环+数字类型补充

    一.for循环 1.循环取值 1.1列表类型:  定义l=['a','b','c'],要提取列表中的值  如果采用while循环的话:   print(len(l))   i=0   while i& ...

  8. 关于我学git这档子事

    创建本地分支并切换到该分支 git checkout -b *** 相当于如下2个命令: git branch *** git checkout *** 推送本地开发分支到远程开发分支 git pus ...

  9. 揭秘华为云GaussDB(for Influx)最佳实践:hint查询

    摘要:GaussDB(for Influx)通过提供hint功能,在单时间线的查询场景下,性能有大幅度的提升,能有效满足客户某些特定场景的查询需求. 本文分享自华为云社区<华为云GaussDB( ...

  10. IDEA找不到类但实际存在的问题解决

    不知道某天开始Idea就开始抽风了. 现象: 一个service的接口类,就在同一个包下,但总是找不到,编辑器一直标红 编译可以通过 说明类本身应该是没什么问题的.问题是怎么重新编译重新reload ...