首页/数据/备份与容灾速查/duplicity 增量加密备份

duplicity 增量加密备份

把增量归档与加密结合的工具:首次全量、后续增量,输出可直接放到对象存储或远程目录,便于把备份推到云端。

备份与容灾速查数据更新于 2026-10-13

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 确认存在可用的全量。

易错点

  • PASSPHRASE 丢失:备份永远无法解密,口令必须与备份分开保管并纳入交接
  • 手工删除仓库里的历史文件:增量链断裂,之后的恢复全部失效
  • 清理过期数据不用 remove-older-than:手工删导致元数据与文件不一致
  • 只做备份不做恢复验证:链条中任一环节损坏都会让整体不可用

数据来源与参考

  • duplicity 官方手册(full / incr / restore)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌