duplicity 是成熟可靠的 linux 自动化备份工具,支持端到端加密、块级增量、多后端存储及清晰的备份恢复逻辑。配置需四步:安装、生成 gpg 密钥、测试本地备份与验证,再通过脚本+cron 实现自动化,并强调密钥离线备份、定期清理与手动恢复验证。

Linux 自动化备份用 Duplicity 是个成熟又可靠的选择,尤其适合需要加密、增量、跨平台和远程存储的场景。它不依赖图形界面,命令行驱动,但配置一次就能长期稳定运行。
为什么选 Duplicity 做自动化备份
它不是“最炫”的工具,但解决了几个关键问题:
- 所有数据在本地就完成端到端加密(GPG),上传到远程存储(如 S3、SFTP、Backblaze)的只是密文,服务商无法窥探内容
- 基于 librsync 的块级增量机制,只传变化部分,节省带宽和空间,10GB 数据日常增量可能仅几百 KB
- 支持多种后端:SFTP、SSH、Amazon S3、Google Cloud Storage、Azure Blob 等,不用改脚本就能切换目标
- 备份和恢复逻辑清晰,一条命令可验证完整性、列出文件、清理旧备份
基础配置四步走
先确保环境就绪,再逐步搭建:
-
安装:Ubuntu/Debian 执行
sudo apt install duplicity gnupg;RHEL/CentOS 用sudo yum install duplicity gnupg2 -
生成 GPG 密钥对:运行
gpg --full-generate-key,推荐 RSA 4096 位,设置强密码短语;密钥 ID 后续要用到 -
测试本地备份:比如备份
/home/user/docs到本地目录/backup:duplicity full --encrypt-key YOUR_KEY_ID /home/user/docs file:///backup -
验证首次备份:执行
duplicity verify file:///backup /home/user/docs,确认文件一致性
写一个真正可用的自动化脚本
把备份变成定时任务,关键是处理密钥密码、错误退出和日志留存:
- 用
expect或gpg-agent避免交互式输密码(推荐后者:配置~/.gnupg/gpg-agent.conf启用 pinentry 和缓存) - 脚本开头加
set -e,任意命令失败立即终止,防止误删或跳过关键步骤 - 每次备份后运行
duplicity collection-status file:///backup记录状态,并用logger写入系统日志 - 示例 cron 条目(每天凌晨 2:30 执行):
30 2 * * * /usr/local/bin/backup-docs.sh >> /var/log/duplicity.log 2>&1
安全与维护不能省
备份本身可靠,但管理不当会让它失效:
-
私钥必须离线备份:导出为 ASCII 文件(
gpg --export-secret-keys > backup-key.asc),刻盘或存 USB,切勿只留一份 -
定期清理旧备份:比如保留最近 30 天 + 最近 5 次完整备份:
duplicity remove-all-but-n-full 5 --force file:///backupduplicity remove-older-than 30D --force file:///backup -
每月手动验证一次恢复流程:挑一个备份版本,用
duplicity restore抽样还原几个关键文件,确认解密和路径正确 - 若用云存储,记得检查存储桶策略是否允许未授权访问,S3 上建议启用服务端加密(SSE-S3)作为第二道防线
这套方案不复杂,但每一步都直指实际风险点——加密不是摆设,增量不是噱头,自动化更不是设完 cron 就不管。只要密钥保管得当、脚本有日志有校验、清理策略明确,就能长期守住数据底线。











