duplicity 增量加密备份
把增量归档与加密结合在一起的命令行工具:首次做全量,之后每次只记录变化,产物上传到本地目录、SFTP、S3、OSS 等后端。因为是增量链,恢复时按顺序读取所需归档,因此仓库里的历史文件不能随意删除,清理要用工具自身的命令。它适合把数据推到云上而又不希望明文落地的场景。
基本信息
| 适用平台 | Linux/Unix(依赖 librsync 与 gpg 或 openssl) |
|---|---|
| 加密方式 | 默认 gpg 对称加密,口令来自 PASSPHRASE 环境变量 |
| 仓库后端 | file://、sftp://、s3:// 等 URL 前缀 |
| 时间点恢复 | restore -t 支持按时间表达式恢复到指定时刻 |
典型使用场景
- 把服务器数据加密后推到对象存储,满足合规不离线加密要求
- 云主机上的自建服务备份,替代购买额外的备份服务
- 恢复到指定时间点:用 -t 3D 取三天前的版本
- 验证仓库状态:collection-status 查看全量与增量链的组成
- 迁移后端:同一套命令从本地目录切到 s3:// 前缀
全量增量与恢复
全量增量与恢复
export PASSPHRASE='在安全位置保管的口令' # 口令来源要独立于备份本身
duplicity full /data file:///backup/dup # 首次全量
duplicity incr /data file:///backup/dup # 之后每次增量
duplicity collection-status file:///backup/dup # 查看链条组成与时间点
duplicity restore file:///backup/dup /restore # 恢复到最新状态
duplicity restore -t 3D file:///backup/dup /restore # 恢复到三天前
duplicity verify file:///backup/dup /restore --compare-data # 校验数据一致命令与用途
| 命令 | 用途 | 注意 |
|---|---|---|
| full | 建立新的全量基线 | 会开始新的链条,历史增量仍可恢复 |
| incr | 追加增量 | 依赖之前所有归档都存在 |
| collection-status | 列出链条 | 恢复前先用它确认有可用全量 |
| verify | 比对差异 | 加 --compare-data 才逐内容比对,耗时更长 |
对接 S3 等后端时使用对应 URL 形式(如 s3://bucket/prefix),凭据通过环境变量提供,避免写入命令行历史。后端存储类选归档层前先确认取回时间是否满足 RTO。
增量链不宜无限延长:用 --full-if-older-than 1M 之类的参数定期插入新的全量基线,既缩短单次恢复要读取的归档数量,也让链条在某个环节损坏时不至于整条失效。恢复前先跑 collection-status 确认存在可用的全量。