在Ubuntu系统中配置duply进行加密备份,核心是解决两个问题:一是如何自动化执行增量备份并加密敏感数据,二是如何确保备份文件能安全存储到远程服务器。具体做法是安装并配置duply前端工具与后端duplicity,创建加密配置文件,然后通过cron定时执行备份任务。
理解duply与duplicity的协同工作关系
duply本身并不是一个独立的备份工具,它是一个简化duplicity复杂命令的前端脚本。duplicity则是一个强大的增量备份工具,支持本地、SFTP、S3等多种存储后端,并内置GPG加密功能。duply通过创建和管理配置文件,让你用简单的命令(如duply [profile] backup)来执行原本需要一长串参数的duplicity操作。这种分工意味着,你配置duply的本质,就是在配置duplicity的备份策略和加密选项。
系统环境准备与核心组件安装
首先确保你的Ubuntu系统是最新的。打开终端,执行以下命令安装必要的软件包。duplicity和GPG是核心,duply则提供了便捷的管理方式。
sudo apt update sudo apt install duplicity duply gnupg
验证安装是否成功,可以分别运行duplicity --version和duply --version查看版本信息。GPG的安装至关重要,因为后续所有的加密密钥对都将由它生成和管理。
生成并管理GPG加密密钥对
加密是安全备份的基石。你需要创建一对GPG密钥(公钥和私钥)用于加密备份文件。在终端中输入以下命令并按照提示操作:
gpg --full-generate-key
密钥类型选择默认的RSA and RSA,密钥长度建议4096位以增强安全性。设置一个强密码来保护你的私钥。创建完成后,通过gpg --list-secret-keys --keyid-format LONG列出密钥,并记录下以“sec”开头的行中,rsa4096/后面的那一长串密钥ID(例如:1A2B3C4D5E6F7890)。这个ID将用于配置duply。
创建并详细配置duply备份配置文件
duply使用“配置文件”来管理不同的备份任务。创建一个名为“mybackup”的配置:duply mybackup create。这会在~/.duply/mybackup/目录下生成一个conf文件。用文本编辑器(如nano)打开它,关键配置项如下:
nano ~/.duply/mybackup/conf
你需要修改以下几个核心部分:
GPG密钥与加密选项: 将GPG_KEY=''设置为你的密钥ID,例如GPG_KEY='1A2B3C4D5E6F7890'。建议设置GPG_PW='your_strong_password'以自动化输入,但注意这会将密码明文存储在配置文件中。更安全的方法是稍后通过环境变量或交互式输入传递。
备份源与目标: SOURCE='/'表示备份整个根目录,但通常我们排除系统临时文件和某些目录。你可以设置为SOURCE='/home /etc /var/important-data'来备份特定目录。TARGET是存储位置,例如本地路径file:///mnt/backup,或远程SFTP路径sftp://user@backup.server.com//backup/path(注意双斜杠)。
排除规则与备份周期: 在conf文件末尾或单独的exclude文件中定义排除项,如- /proc、- /tmp、- /sys、- *.tmp。通过MAX_AGE设置完整备份的保留周期(如6M),MAX_FULL_BACKUPS设置保留的完整备份集数量(如2)。
执行首次完整备份并进行验证
配置完成后,执行第一次完整备份。在终端中运行:duply mybackup backup。这个过程可能会很长,取决于数据量大小。duplicity会先使用你的公钥加密数据,然后传输到目标位置。
备份完成后,必须验证其完整性和可恢复性。使用duply mybackup status查看备份链状态,它会列出所有增量备份点。更重要的验证是尝试列出备份中的文件:duply mybackup list。为了进行终极测试,可以在一个临时目录执行恢复测试:duply mybackup restore /path/to/test/restore,检查文件是否完整且可读。
配置自动化定时备份任务
手动备份不可靠,使用cron实现自动化。通过crontab -e命令编辑当前用户的cron计划。例如,添加以下行实现每周日凌晨2点执行增量备份,并每月第一天执行一次新的完整备份:
0 2 * * 0 export GPG_PW="your_password"; /usr/bin/duply mybackup backup >> ~/duply.log 2>&1 0 2 1 * * export GPG_PW="your_password"; /usr/bin/duply mybackup backup --full >> ~/duply.log 2>&1
这里通过环境变量GPG_PW传递密码,比写在配置文件中更安全。务必确保duply.log文件存在并有写入权限,以便跟踪备份日志和错误。
高级配置与故障排查要点
当备份到远程SFTP服务器时,配置基于密钥的SSH无密码登录能极大简化流程。将本地SSH公钥添加到远程服务器的~/.ssh/authorized_keys文件中。在duply配置中,TARGETURL无需包含密码,安全性由SSH密钥对保障。
常见的故障点包括:GPG密码错误、目标路径权限不足、磁盘空间已满、网络连接中断。排查时首先检查~/duply.log日志文件。可以使用duply mybackup verify命令检查备份文件与当前源文件的差异。如果备份链损坏,可能需要使用duply mybackup purge --force清理旧备份并重新建立完整备份。
安全实践与密钥离线存储建议
真正的安全在于密钥管理。用于加密备份的GPG公钥可以放在备份服务器上,但私钥及其密码绝不能与备份数据存放在同一处。最佳实践是:将GPG私钥导出到一个加密的USB驱动器或离线存储介质中,并与备份服务器物理隔离。仅在执行恢复操作时,才将其导入到安全的恢复环境中。
此外,定期(如每季度或每半年)进行一次完整的“灾难恢复演练”至关重要。在一个全新的、干净的系统环境中,仅使用备份文件、GPG私钥和duply/duplicity工具,尝试恢复整个业务系统。这是检验你的加密备份方案是否可靠的唯一标准。
