• 阿里云 python3 使用duplicity


    前言

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

  • 相关阅读:
    冒泡排序
    对于Random.Next()生成随机数重复的问题
    二分法查找
    工厂方法模式
    简单的工厂模式
    unity AssetBundle打包及加载
    关于谷歌不然安装除商店之外的拓展应用解决
    【Unity与23种设计模式】抽象工厂模式(Abstract Factory)
    【Unity与23种设计模式】解释器模式(Interpreter)
    【Unity与23种设计模式】原型模式(Prototype)
  • 原文地址:https://www.cnblogs.com/steinven/p/15036523.html
Copyright © 2020-2023  润新知