如何在Ubuntu12.04上安装Rsnapshot

来自菜鸟教程
跳转至:导航、​搜索


状态: 已弃用

本文介绍了不再受支持的 Ubuntu 版本。 如果您当前正在运行运行 Ubuntu 12.04 的服务器,我们强烈建议您升级或迁移到受支持的 Ubuntu 版本:

原因: Ubuntu 12.04 已于 2017 年 4 月 28 日终止生命周期 (EOL) and no longer receives security patches or updates. This guide is no longer maintained.

请参阅:
本指南可能仍可用作参考,但可能不适用于其他 Ubuntu 版本。 如果可用,我们强烈建议使用为您正在使用的 Ubuntu 版本编写的指南。 您可以使用页面顶部的搜索功能来查找更新的版本。


Highlighting 是什么意思

用户需要输入或自定义的行将在本教程中以突出显示! 其余的大部分应该是可复制粘贴的。

介绍

本教程将介绍如何设置和使用 rsnapshot,这是一种基于 rsync 的远程备份解决方案。 Rsnapshot 利用 rsync 的强大功能来创建计划的增量备份。

此过程将演示如何创建本地备份,以及如何使用其他云服务器或您的家庭计算机作为备份空间。 要完成本教程中的过程,您需要以 root 身份登录或在所有命令前加上“sudo”。

第一步:安装 Rsnapshot 并配置 SSH 密钥

备份内容的第一步是在您想用作备份服务器的机器上安装 rsnapshot。

Rsnapshot 在 Ubuntu 的默认存储库中,因此我们可以使用 apt-get 安装它:

sudo apt-get install rsnapshot

为了备份另一个云服务器,您的备份服务器需要能够通过 SSH 连接到您要备份的云服务器。 我们希望 rsnapshot 能够在没有密码的情况下使用 SSH,因此我们需要生成 SSH 密钥来进行身份验证。

要生成公钥和私钥,请在备份服务器上运行此命令:

sudo ssh-keygen -t rsa

我们不需要此密钥的密码,因为我们希望这些计算机能够在没有我们干预的情况下相互连接。 在所有提示中按“ENTER”以接受默认值。

user@backupserver:~#: sudo ssh-keygen –t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
…
The key's randomart image is:
…

我们现在有一个公钥和私钥对,可以让我们从备份服务器登录到其他服务器。 我们需要将我们的公钥转移到我们将要备份的机器上,以便它知道我们被允许访问它。

sudo ssh-copy-id -i /root/.ssh/id_rsa.pub root@example.com 

请务必将“example.com”更改为您将备份的服务器的 IP 地址或域名。

一旦该命令执行,您应该检查您是否能够从备份服务器登录到您的服务器而无需密码。

sudo ssh root@example.com 

确认可以正确连接后,请退出,以便您能够再次在备份服务器上工作。

exit

第二步:配置 Rsnapshot

安装 rsnapshot 后,您需要编辑配置文件。

sudo nano /etc/rsnapshot.conf

使用 rsnapshot 配置文件时要记住的一件事是,每个目录都需要一个尾部斜杠 (/) 才能正确读取。

您需要做出的第一个决定是您想要存储备份的位置。 我们将使用目录“/backup”作为我们的备份位置。 搜索并编辑以下变量以设置备份位置。

snapshot_root           /backup/ 

如果此目录尚不存在,则 rsnapshot 将在运行时创建它。

您还需要取消注释 cmd_ssh 行以允许远程备份。 删除以下行前面的“#”,以便 rsnapshot 可以安全地将您的数据传输到备份服务器。

cmd_ssh            /usr/bin/ssh

从 cmd_du 行之前删除“#”以启用准确的磁盘使用情况报告。

cmd_du             /usr/bin/du

接下来,我们需要考虑要保留多少旧备份。 由于 rsnapshot 使用增量备份,我们可以将旧备份保留一段时间,然后再删除它们。

我们在配置的“备份间隔”部分下设置这些。 我们告诉 rsnapshot 保留每种间隔的特定数量的备份。 出于本指南的目的,默认设置很好,但我们还将取消注释“每月”间隔,以便我们有一些长期备份。 将此部分编辑为如下所示:

#########################################
#           BACKUP INTERVALS            #
# Must be unique and in ascending order #
# i.e. hourly, daily, weekly, etc.      #
#########################################

retain      hourly  6
retain      daily   7
retain      weekly  4
retain      monthly 3

另一个可能需要编辑的项目是 ssh_args 变量。 如果您按照 SSH 教程中的建议更改了要备份的云服务器上的端口号,您需要取消注释 ssh_args 部分并在此处使用相同的设置。

ssh_args           -p 25000

最后,您需要决定要备份的内容。 如果您在本地备份到同一台机器,这就像指定要保存的目录并在其后面加上“localhost/”一样简单,这将是您之前设置的 snapshot_root 中的一个子目录。

我们将选择备份主目录和 etc 目录。

backup     /home/      localhost/
backup      /etc/       localhost/

如果您要备份远程服务器或其他 Droplet(云服务器),也可以在此处进行配置。 您只需要告诉 rsnapshot 服务器在哪里以及您要备份哪些目录。

backup      root@example.com:/home/         remote-droplet/

rsnapshot 是基于拉取的。 这意味着,如果没有其他解决方法和配置,您无法将备份推送到远程服务器。 相反,使用 SSH 密钥,它们将被拉入安装了 rsnapshot 的服务器。

您需要将“example.com”部分更改为您要备份的服务器的 IP 地址或域名。 在您的服务器名称/IP 地址之后,您需要放置一个冒号“:”,然后是您要备份的目录路径。 “remote-droplet”部分是存储备份的子目录。 你可以随意命名它。

我们现在完成了 rsnapshot 的初始配置。 在继续之前保存 /etc/rsnapshot.conf 文件。 如果您使用 nano 进行编辑,请按“Ctrl-X”退出并在提示时回答“是”以保存更改。

测试您的配置

在设置自动化之前,我们要测试一切是否按预期工作。 要测试您的配置是否具有正确的语法,请运行:

sudo rsnapshot configtest

如果您的文件没有错误,您将收到“语法正常”消息。 如果您没有收到此消息,则需要返回并修复它告诉您的错误。

接下来,我们要对其中一个快照进行试运行,以确保我们产生了预期的结果。 我们使用“每小时”参数,因为每小时备份是其他间隔将建立的基本快照类型。 这意味着我们将从“每小时”获得比选择“每天”或“每周”更多的信息。

sudo rsnapshot -t hourly

如果生成的输出看起来正确,您可以删除“-t”选项以第一次尝试您的设置。

sudo rsnapshot hourly

这将运行我们在配置文件中设置的备份。 对于本教程,rsnapshot 创建了一个 /backup 目录,然后在其下创建了用于组织我们文件的目录结构。

自动化流程

随着 rsnapshot 正常工作,剩下要做的就是安排它以特定的时间间隔运行。 我们将使用 cron,一个 linux 调度程序来实现这一点。

幸运的是,rsnapshot 包含一个默认的 cron 文件,我们可以根据自己的喜好对其进行编辑。 我们将再次使用 nano 编辑此文件。

sudo nano /etc/cron.d/rsnapshot

该计划目前已被注释掉。 我们将从调度部分的开头删除“#”字符以激活这些值。

# This is a sample cron file for rsnapshot.
# The values used correspond to the examples in /etc/rsnapshot.conf.
# There you can also set the backup points and many other things.
#
# To activate this cron file you have to uncomment the lines below.
# Feel free to adapt it to your needs.

0 */4         * * *           root    /usr/bin/rsnapshot hourly
30 3          * * *           root    /usr/bin/rsnapshot daily
0  3          * * 1           root    /usr/bin/rsnapshot weekly
30 2          1 * *           root    /usr/bin/rsnapshot monthly

这些设置将运行每四个小时将快照添加到我们的“/backup/”目录中的“hourly”目录,每天凌晨 3:30 添加每日快照,每周一凌晨 3:00 添加每周快照,然后添加每月第一天凌晨 2:30 的每月快照。

错开备份并首先运行更大的备份间隔非常重要。 这意味着首先运行每月备份,然后按顺序从那里逐步缩短间隔,正如我们在本教程中所做的那样。 这是必要的,这样程序就不会因为试图同时进行多个备份而陷入困境,这可能会导致问题。

贾斯汀·艾林伍德