阿里云 python3 使用duplicity
前言
公司业务中使用的备份工具一直是alicloud-duplicity
,一直也没研究。后来业务出问题了,看了看,原来是基于duplicity
开发的,使用了半天,感觉很不错,我感觉他的特点有:
- 加密备份
- 支持多种协议
- 内置了主流的存储商的
backends
:Azure
、AWS S3
、onedrive
- 支持增量备份
问题
duplicity
官方没提供阿里云OSS
的backends
,所以才有了alicloud-duplicity
,但alicloud-duplicity
项目已经停更好久了,但也仅限于Python2
,所以我在alicloud-duplicity的
基础上适配了Python3,目前没什么问题,项目地址duplicity恢复时的小问题:恢复没有“增量”恢复的概念(至少我没找到),只能恢复到一个本地空目录,如果是非空目录,需要加上参数
--force
。这个我感觉是个最大的不足,举例来说:增量备份一个小文件small.file
,在另一台机子上你想获取最新的备份数据(除了这个小文件,其余文件在本地都已经存在),恢复时,会全量从远端下载所有的文件,虽然你只是想得到small.file
这个小文件。
安装
- 安装依赖:
apt install gettext librsync-dev python3-dev -y
或yum 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的更多相关文章
- 阿里云 SDK python3支持
最近的一个项目需要操作阿里云的RDS,项目使用python3,让人惊讶的是官方的SDK竟然只支持python2 在阿里云现有SDK上改了改,文件的修改只涉及aliyun/api/base.py,详见h ...
- python3 获取阿里云ECS 实例及监控的方法
#!/usr/bin/env python3.5 # -*- coding:utf8 -*- try: import httplib except ImportError: import http.c ...
- 阿里云 centos7 django + uWSGI+Nginx + python3 部署攻略
centos7+nginx+python3+django+uwsgi配置Django 项目部署 1.租的服务器(选择centos)的话,需要在阿里云后台控制台开放几个端口,克隆一下已开放的端口,t ...
- Python3.6+nginx+uwsgi部署Django程序到阿里云Ubuntu16.04系统
Python3.6+nginx+uwsgi部署Django程序到阿里云Ubuntu16.04系统 这个是写好的Django程序在本地机运行的情况,一个查询接口. 准备工作 1.首先购买一台阿里云的EC ...
- 阿里云 rds python sdk不支持python3处理
阿里云文档中心的python版本aliyun-python-sdk-rds不支持python3处理 问题:默认情况下文档中心的python版本只支持python2,不兼容python3版本 需要稍微修 ...
- python3调用阿里云语音服务
步骤 1 创建阿里云账号,包括语音服务里的企业实名 为了访问语音服务,您需要有一个阿里云账号.如果没有,可首先按照如下步骤创建阿里云账号: 访问阿里云 官方网站,单击页面上的 免费注册 按钮. 按照屏 ...
- 阿里云 oss python3 样例
阿里云的oss SDK又是不支持python3,头疼头疼. 本想改一改它的SDK,让它支持python2+python3,无奈里面大量的代码使用不带括号的print.工作量恐怖. 幸好oss的使用很e ...
- 在阿里云上安装python3.4和pycharm
一. 安装python3.4 二. 安装pycharm 三. 安装可视化界面和远程桌面连接 四. 启动和配置pycharm 五. 安装更多字体 六. 给pycharm设置桌面快捷方式 一. 安装pyt ...
- linux安装配置阿里云的yum源和python3
一.yum源理解 yum源仓库的地址 在/etc/yum.repos.d/,并且只能读出第一层的repo文件 yum仓库的文件都是以.repo结尾的 二.下载阿里云的.repo仓库文件 ,放到/etc ...
随机推荐
- Spring 源码(6)BeanFactoryPostProcessor怎么执行的?
上一篇文章 https://www.cnblogs.com/redwinter/p/16167214.html 解读了如何进行自定义属性值的编辑器的解析器,并且还介绍了BeanFactory的准备过程 ...
- vue - git
今天差不多从中午开始下午一点才开始学的,把git学了一大半了,还好任务不是很多,但是我上午用的时间挺值的,因为我去搞了个cnblogs的背景主题,就是你们现在所看到的这套,这个没搞明白有一通研究的,只 ...
- 超耐心地毯式分析,来试试这道看似简单但暗藏玄机的Promise顺序执行题
壹 ❀ 引 就在昨天,与朋友聊到JS基础时,她突然想起之前在面试时,遇到了一道难以理解的Promise执行顺序题.由于我之前专门写过手写promise的文章,对于部分原理也还算了解,出于兴趣我便要了这 ...
- ucore lab8 文件系统 学习笔记
最后一战果然过瘾.代码量够多,新机制够复杂度,都管饱.做这一课就像从高山上往下走,坡急且路险,还不知自己的方位,琢磨不透系统的架构.待到下了山,回头一看豁然开朗,原来方才自己所下的山是这般模样.在这里 ...
- 利用腾讯云函数部署.Net 5米游社原神每日签到功能
自从GitHub批量禁止滥用Action功能后,项目不得不考虑另外方案执行应用.其中腾讯云函数被大家作为不错的选择(虽然马上也要收费了). 但对于.Net的部署目前资源很少,而且我也没学过bash.在 ...
- CentOS开机流程详解
一个执着于技术的公众号 开机流程 BIOS: (Basic Input Output System)基本输入输出系统,它是一组固化到计算机内主板上一个ROM芯片上的程序,保存着计算机最重要的基本输入输 ...
- Android 12(S) 图像显示系统 - SurfaceFlinger GPU合成/CLIENT合成方式 - 随笔1
必读: Android 12(S) 图像显示系统 - 开篇 一.前言 SurfaceFlinger中的图层选择GPU合成(CLIENT合成方式)时,会把待合成的图层Layers通过renderengi ...
- 98. 验证二叉搜索树 前序遍历解法以及后续遍历解法(go语言)
leetcode题目 98. 验证二叉搜索树 前序遍历 最简洁的答案版本,由于先判断的是根节点,所以直接判断当前root的值v,是否满足大于左子树最大,小于右子树最小,然后再遍历左子树,右子树是否是这 ...
- 协议层安全相关《http请求走私与CTF利用》
0x00 前言 最近刷题的时候多次遇到HTTP请求走私相关的题目,但之前都没怎么接触到相关的知识点,只是在GKCTF2021--hackme中使用到了 CVE-2019-20372(Nginx< ...
- 关于『HTML5』:第二弹
关于『HTML5』:第二弹 建议缩放90%食用 咕咕咕咕咕咕咕!!1 (蒟蒻大鸽子终于更新啦) 自开学以来,经过了「一脸蒙圈的 半期考试」.「二脸蒙圈的 体测」的双重洗礼,我终于有空肝 HTML5 辣 ...