简介
duplicity是一款开源的备份工具,使用librsync支持增量备份,节约本地存储空间,同时使用GnuPG加密数据。duplicity能将数据轻松的备份到本地、共享存储和云存储等。alicloud-duplicity是基于duplicity、支持OSS存储的开源备份工具,alicloud-duplicity支持duplicity的所有命令和参数。
适用场景
- 重要文档或数据的打包备份,远端容灾。
- 个人Linux主机的系统数据备份。
- 自建WebServer数据的日常或增量备份。
安装
环境
- Linux
- Python 2.7
snap安装
使用以下命令安装alicloud-duplicity。
sudo snap install alicloud-duplicity --edge --devmode
提示:
- snap是类似于yum的包管理工具,详细介绍及安装方法请参看Docs。
源码安装
CentOS
- 安装依赖插件。
sudo yum install https://mirrors.kernel.org/fedora-epel/7/x86_64/e/epel-release-7-10.noarch.rpm -y
sudo yum install python-devel librsync-devel python-pip -y
sudo pip install oss2 fasteners configparser
- 下载。从GitHub下载。
- 安装。执行安装命令,
sudo python setup.py install
。 - 验证。执行命令
alicloud-duplicity -V
安装成功会显示版本号。
Ubuntu
- 安装依赖插件。
sudo apt install librsync-dev python-pip python-dev -y
sudo pip install oss2 fasteners configparser setuptools
- 下载。从GitHub下载。
- 安装。执行安装命令,
sudo python setup.py install
。 - 验证。执行命令
alicloud-duplicity -V
安装成功会显示版本号。
配置
安装alicloud-duplicity之后,您需要配置OSS的访问域名Endpoint和访问密钥AccessKeyId/AccessKeySecret,才能用备份到OSS或从OSS恢复。alicloud-duplicity支持两种配置方式,配置文件和环境变量。
注意:
- 如果配置文件和环境变量都配置了,环境变量的配置将被使用。
配置文件
配置文件为~/.alicloud.cfg
,配置文件内容格式如下:
[oss]
endpoint = http://oss-cn-hangzhou.aliyuncs.com
access_key_id = Jwd12S**********ZBs
access_key_secret = ir8Qt4h0kwx********u1SpmxM5QE
环境变量
在Linux终端执行以下命令,或者在加入用户环境配置文件(~/.bashrc
或~/.bash_profile
)。
export ALICLOUD_OSS_ENDPOINT=http://oss-cn-hangzhou.aliyuncs.com
export ALICLOUD_ACCESS_KEY_ID=Jwd12S**********ZBs
export ALICLOUD_ACCESS_KEY_SECRET=ir8Qt4h0kwx********u1SpmxM5QE
使用
下面对OSS的alicloud-duplicity常用命令进行说明,完整的帮助信息请参看Docs。
备份
- 全量备份
sudo alicloud-duplicity full /etc oss://bucket-name/keyfolder/
- 增量备份
sudo alicloud-duplicity incr /etc oss://bucket-name/keyfolder/
- 自动选择备份类型
sudo alicloud-duplicity /etc oss://bucket-name/keyfolder/
sudo alicloud-duplicity --full-if-older-than 7D /etc oss://bucket-name/keyfolder/ # 对重要数据,应经常做全量备份,用--full-if-older-than指定全量备份时间间隔。
- 定时备份
利用crontab -e
设定每天凌晨3点自定执行脚本timedbackup.sh,写入0 3 */1 * * timedbackup.sh
。脚本timedbackup.sh的内容如下:
sudo alicloud-duplicity --full-if-older-than 7D /etc oss://bucket-name/keyfolder/
- 备份多个目录
alicloud-duplicity --include /etc --include /home/aliyun --exclude '**' / oss://bucket-name/keyfolder/
恢复
- 恢复文件夹
sudo alicloud-duplicity restore oss://bucket-name/keyfolder/ /home/tmp/
- 恢复特定文件
sudo alicloud-duplicity --file-to-restore file1 oss://bucket-name/keyfolder/ /home/tmp/
其它
- 列出备份目录列表
sudo alicloud-duplicity list-current-files oss://bucket-name/keyfolder/
- 查看备份状态
sudo alicloud-duplicity collection-status oss://bucket-name/keyfolder/
注意
alicloud-duplicity的备份文件如果损坏,会导致数据无法恢复。特别是在增量备份时,如果有中间版本损坏,会导致该次之后的数据无法恢复。对重要数据,应经常做全量备份;对于不再修改的数据,应立即做一次全量备份。