当前位置: 首页>>技术教程>>正文


在Linux上,rsnapshot和增量备份指南

, ,

介绍

rsnapshot是用Perl编写的备份工具,它使用rsync作为其back-end。 rsnapshot允许用户创建自定义的增量备份解决方案。本文将讨论以下内容:增量备份解决方案的优点,rsnapshot的安装,其配置和使用示例。

Back-it起来!

我最近正在与一位同事讨论备份数据的好处。我的同事告诉我她的一位客户最近是怎么丢失了他们一直在写的一篇冗长的文章。我认为这可能是尝试使用上网本和rsnapshot的好机会。在本教程中,我假设您有2件硬件:您的主机和目标设备。我将在本文的大部分内容中使用外部硬盘驱动器。但是,我将简要介绍通过LAN备份文件的用法。

备份数据不是问题,而是我应该如何备份我的东西?最好的方法是什么?那么,您可以采用许多不同的备份途径,包括块级别(dd,partimage),分区级别(RAID及其所有变体),文件级别(rsyncand子应用程序)。我将在基于文件的备份中讨论两种类型的备份。

普通备份或完整备份是不言自明的。普通备份是每次执行备份时备份所有文件的一种方法。利用多重普通备份方案的一个问题是普通备份占用了大量空间。例如,如果您以20%的容量执行250gig硬盘的完整备份,则每天仅一周(假设数据量没有波动)将意味着您仅使用350gig进行了一周的备份。如您所见,从长远来看,这是不可行的。我更喜欢的另一种方法是增量备份方法。增量备份包括一个完整备份,然后执行其他备份。这些额外的备份将只要自上次备份以来已更改的备份文件。除了备份整个硬盘驱动器外,仅备份自上次备份以来已更改的特定文件。可以想象,这是一个效率更高的过程。在* nix上执行此操作的一种工具是rsnapshot。




什么是rsnapshot?

如前所述,rsnapshot是一个增量备份实用程序。在本教程中,我将向您展示如何使用rsnapshot创建一个7天的轮换备份方案。本质上,rsnapshot将创建1个完整备份,然后后续备份将仅备份已更改的文件。 rsnapshot的真正功能是在每个备份之间利用hard-links的能力。每个备份似乎都是完整备份。实际上,每个新备份都由新创建或更新的文件组成。 rsnapshot可以在LAN上使用,也可以从cron运行。在本教程中,我将展示两个用法示例。

安装

rsnapshot的安装非常简单,只需运行以下命令linux命令

在Debian(或Ubuntu)上:

apt-get install rsnapshot

在Fedora上:

yum install rsnapshot

在ArchLinux上:

pacman -S rsnapshot

现在,让我们配置rsnapshot。

组态

看一下/etc,如果/etc/rsnapshot.conf.default存在,则需要将其复制到/etc/rsnapshot.conf。如果.default文件不存在,则创建常规.conf的备份。这在以后需要参考时很有用。

打开rsnapshot.conf并开始根据需要进行编辑。 rsnapshot的配置文件已得到很好的注释。这使得配置更加容易。首先,取消注释配置文件“外部程序依赖项”部分中的所有应用程序。对于初学者,请取消注释以下行:

cmd_rsync /USO/bin/rsync
cmd_d /bin/D
cmd_rsnapshot_diff /USA/bin/rsnapshot-diff

如果rsnapshot找不到rsnapshot-diff,则可能需要更改其位置。为了确保您引用了正确的二进制问题:

whereis rsnapshot-diff

现在,您需要确定如何精确设计备份方案。确定方案后,需要编辑位于”Backup Intervals”下的”interval”行。 rsnapshot可以每小时,每天,每周和每月进行备份。我的系统执行7天的备份方案,但是您可以在此处决定要执行的操作。一个示例可能是创建一个每周六天运行一次的备份。这取决于你。我将以我的设置为例。请参见下面的屏幕截图:

whereis rsnapshot-diff



您需要取消注释的其他两行是snapshot_root(位于脚本的开头)和备份(位于“ BACKUP POINTS /SCRIPTS”下)。

snapshot_root $destination/ #specifies where your backups are stored
.
.
backup $source/ $hastens
#backup specifies what you what to backup, you can backup
#from multiple locations just specify multiple backup lines

备用线包括三个部分。这三个部分包括声明”backup”,源位置和。每个组件都必须由制表符分隔,并且目录必须以/结尾,否则rsnapshot将无法正常运行。值得注意的另外两个功能是日志记录功能和使用rsync的包含/排除文件的功能。取消注释以下三行(并进行相应修改):

verbose 5 #How much information should the 
#actual backup relay to you?
loglevel 5 #How must information
#should be stored in the log file?
logfile $log_file_destination #Where should the logfile be stored?

从阅读.conf文件中的注释时,您可能已经注意到,详细程度的范围是1-5,其中5是最详细的。首先,我将启用此功能以查看一切是否正常。这种控制级别很有帮助。如果遇到任何问题,则可以执行一些调试。

如前所述,您还可以使用rsync包含和排除文件,以下是排除文件的示例。

#EXCLUDE
#not to backup alongside ~
- /home/javier/data/
- /home/javier/$dest/

包含文件本质上是相似的。代替’-‘使用’+’表示要包括的数据。如果您决定要使用包含或排除文件,请查看include_file /exclude_file行。这是我在rsnapshot.conf的部分,介绍了这些选项。

include_file /home/javier/backup/include.lst
exclude_file /home/javier/backup/exclude.lst

如果您到目前为止一直在关注rsnapshot,则已经对其进行了很多配置。如果要在rsnapshot完成之前或之后运行任何内容,请查看cmd_preexec和cmd_postexec行。您可以取消注释这些行,并根据需要指定要在备份完成之前或之后运行的脚本。如果没有,则完成编辑配置文件。现在运行以下命令linux命令

rsnapshot configtest

屏幕截图如下:

rsnapshot configtest

该命令运行rsnapshot,并告诉它对rsnapshot.conf进行完整性检查。如果一切正常,那么您应该获得以下输出:“语法正常”。如果未读取输出,它将为您提供并根据需要编辑rsnapshot.conf。



使用范例

我将讨论使用rsnapshot的三种形式。这些形式包括本地,远程及其自动化(通过cron)。本地或远程执行之间的用法没必要有所不同。相反,我将指出配置文件中的差异

在本地使用rsnapshot

对于本地备份,两条重要的线是:

snapshot_root $dest/
backup $source/ $hostname/

您可以通过仅创建要引用每个目录的多行来指定多个备份源。
要实际运行备份,请执行以下操作linux命令

rsnapshot daily

您还可以选择每小时,每周和每月。每个命令将根据指定的操作创建一个备份目录。如果浏览到备份位置,将看到以下内容:

[some_user@hostname backupdir]# ls
daily.0 daily.1 log

上面的输出显示我创建了一个为期7天的备份方案的两个备份。

远程备份

要利用rsnapshot的远程备份功能,只需将远程位置指定为您的备份源(要启用远程备份,必须为服务器启用ssh。基于密钥的身份验证将是您的最佳选择):

backup This email address is being protected from spambots. You need JavaScript enabled to view it.
	document.getElementById('cloak1f8291c6eb8ad3fb8c4505ac25d9dac0').innerHTML='';var prefix='ma'+'il'+'to';var path='hr'+'ef'+'=';var addy1f8291c6eb8ad3fb8c4505ac25d9dac0='root'+'@';addy1f8291c6eb8ad3fb8c4505ac25d9dac0=addy1f8291c6eb8ad3fb8c4505ac25d9dac0+'example'+'.'+'com';var addy_text1f8291c6eb8ad3fb8c4505ac25d9dac0='root'+'@'+'example'+'.'+'com';document.getElementById('cloak1f8291c6eb8ad3fb8c4505ac25d9dac0').innerHTML+=''+addy_text1f8291c6eb8ad3fb8c4505ac25d9dac0+'';:/home/ example.com/

将远程源指定为备份位置后,只需运行rsnapshot。下面的例子:

rsnapshot hourly

Cron自动化

如果您对cronthen有任何经验,则添加带有快照的条目仅包括添加特定命令,例如”rsnapshot hourly”和cron上的相关语法。这里有些例子:

20 23 * * * /usr/bin/rsnapshot daily # daily backup is ran at 11:20 pm
05 23 * * 7 /usr/bin/rsnapshot weekly # weekly backup is ran at 11:05 pm
# on Sunday

建议您在较小的备份之前安排较大的备份(如上所示),以防止与备份之间的轮换产生冲突。另外,建议在较大的备份和较小的备份之间留出一定的距离,以避免每个作业之间发生冲突。




rsnapshot的其他用途

rsnapshot具有其他一些有用的功能。例如,您可以运行以下命令linux命令

rsnapshot du

查看正在使用的磁盘空间(必须在/etc/rsnapshot.conf中取消注释du)。屏幕截图如下:

rsnapshot diskusage syntax

您可以运行以下命令来比较备份之间的更改:

rsnapshot diff daily.0 daily1

您应该看到类似于以下屏幕截图的输出:

rsnapshot diff daily.0 daily1

有关其他功能,请参见rsnapshot的手册页。

故障排除

如果您遇到有关Lchown的任何问题,请运行以下命令linux命令

perl -MCPAN -e 'install QC(Lchown)'

结论

成功完成本教程后,您现在应该已经有了高质量的备份方案。有关其他文档,请查看rsnapshot的手册页及其主页。它包含一个出色的how-to,有多种格式可用。另外,我建议您检查其他备份程序,包括rsync(rsnapshot的后端),rdiff-backup,partimage和dd。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/8173.html,未经允许,请勿转载。