口是心非——在 Linux 中创建加密增量备份
经验表明,您对系统备份永远不会过于偏执。在保护和保留宝贵数据方面,最好多加努力,确保在需要时可以依赖备份。
即使在今天,当一些云和托管提供商以相对较低的成本提供 VPS 的自动备份时,您最好使用自己的工具创建自己的备份策略,以节省一些资金,然后也许可以用它来购买额外的存储空间或获得更大的 VPS。
听起来不错?在本文中,我们将向您展示如何使用名为Duplicity的工具来备份和加密文件和目录。此外,使用增量备份来完成此任务将有助于我们节省空间。
也就是说,让我们开始吧。
在Linux中安装Duplicity备份工具
要在基于 RHEL 的发行版中安装 duplicity,您必须首先启用 EPEL 存储库(如果您使用 Fedora 本身,则可以省略此步骤):
yum update
yum install epel-release
OR
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
然后运行,
yum install duplicity
对于 Debian 及其衍生版本:
sudo apt update
sudo apt install duplicity
理论上,支持多种连接文件服务器的方法,但目前仅在实践中测试了 ssh/scp/sftp、本地文件访问、rsync、ftp、HSI、WebDAV 和 Amazon S3。
安装完成后,我们将在各种场景中专门使用sftp来备份和恢复数据。
我们的测试环境由一台RHEL 8机器(待备份)和一台Debian 11机器(备份服务器)组成。
创建 SSH 密钥以无密码登录远程服务器
首先,我们在 RHEL 盒子中创建 SSH 密钥并将其传输到 Debian 备份服务器。
如果您在不同的端口上运行 SSH,则以下命令假定 sshd 守护进程正在侦听 Debian 服务器中的端口 XXXXX。将AAA.BBB.CCC.DDD替换为远程服务器的实际IP。
ssh-keygen -t rsa
ssh-copy-id [email
ssh-copy-id -p XXXXX [email
然后您应该确保无需使用密码即可连接到备份服务器:
ssh [email
现在我们需要创建用于加密和解密数据的 GPG 密钥:
gpg2 --full-gen-key
系统将提示您输入:
- 钥匙种类
- 钥匙尺寸
- 密钥的有效期限是多长
- 密码
要创建创建密钥所需的熵,您可以通过另一个终端窗口登录服务器并执行一些任务或运行一些命令来生成熵(否则您将需要等待很长时间才能获得这部分内容)完成的过程)。
生成密钥后,您可以按如下方式列出它们:
gpg --list-keys
上面以黄色突出显示的字符串称为公钥 ID,是加密文件所需的参数。
创建具有口是心非的 Linux 备份
首先,我们只备份 /var/log 目录,/var/log/anaconda 和 /var/log/sa 除外强>。
由于这是我们的第一次备份,因此它将是完整的备份。后续运行将创建增量备份(除非我们在下面的命令中在口是心非旁边添加完整选项且没有破折号):
PASSPHRASE="tecmint" duplicity --encrypt-key 115B4BB13BC768B8B2704E5663C429C3DB8BAD3B --exclude /var/log/anaconda --exclude /var/log/sa /var/log scp://[email //backups/rhel8
OR
PASSPHRASE="YourPassphraseHere" duplicity --encrypt-key YourPublicKeyIdHere --exclude /var/log/anaconda --exclude /var/log/sa /var/log scp://root@RemoteServer:XXXXX//backups/rhel8
确保您没有错过上述命令中的双斜杠!它们用于指示备份框中名为 /backups/rhel8 的目录的绝对路径,并且是存储备份文件的位置。
将 YourPassphraseHere、YourPublicKeyIdHere 和 RemoteServer 替换为您之前输入的密码、GPG 公钥 ID 以及备份的 IP 或主机名服务器,分别。
您的输出应类似于下图:
上图表明总计 86.3 MB 已备份到目标中的 3.22 MB 中。让我们切换到备份服务器来检查我们新创建的备份:
第二次运行相同的命令会产生更小的备份大小和时间:
使用 Duplicity 恢复 Linux 备份
要成功还原文件、目录及其内容或整个备份,目标不得存在(重复不会覆盖现有文件或目录)。为了澄清起见,让我们删除 CentOS 框中的 cron 日志:
rm -f /var/log/cron
从远程服务器恢复单个文件的语法是:
PASSPHRASE="YourPassphraseHere" duplicity --file-to-restore filename sftp://root@RemoteHost//backups/rhel8 /where/to/restore/filename
在哪里,
- filename 是要提取的文件,以及备份目录的相对路径
- /where/to/restore 是本地系统中我们要将文件恢复到的目录。
在我们的例子中,要从远程备份恢复 cron 主日志,我们需要运行:
PASSPHRASE="YourPassphraseHere" duplicity --file-to-restore cron sftp://[email :XXXXX//backups/rhel8 /var/log/cron
cron 日志应该恢复到所需的目的地。
同样,您可以随意从 /var/log 中删除目录并使用备份恢复它:
rm -rf /var/log/mail
PASSPHRASE="YourPassphraseHere" duplicity --file-to-restore mail sftp://[email :XXXXX//backups/rhel8 /var/log/mail
在此示例中,mail 目录及其所有内容应恢复到其原始位置。
口是心非的其他功能
您可以随时使用以下命令显示存档文件的列表:
duplicity list-current-files sftp://[email :XXXXX//backups/rhel8
删除超过 6 个月的备份:
duplicity remove-older-than 6M sftp://[email :XXXXX//backups/rhel8
将 gacanepa 目录中的 myfile 恢复为 2 天零 12 小时前的状态:
duplicity -t 2D12h --file-to-restore gacanepa/myfile sftp://[email :XXXXX//remotedir/backups /home/gacanepa/myfile
在最后一个命令中,我们可以看到时间间隔的使用示例(由 -t 指定):一系列对,其中每个对由一个数字后跟一个字符 < s、m、h、D、W、M 或 Y(分别表示秒、分钟、小时、天、周、月或年)。
概括
在本文中,我们解释了如何使用 Duplicity,这是一种备份实用程序,可为文件和目录提供开箱即用的加密。我强烈建议您访问口是心非项目的网站以获取更多文档和示例。
为了方便您阅读,我们提供了 PDF 格式的口是心非手册页,也是完整的参考指南。
如果您有任何问题或意见,请随时告诉我们。