【译文精选】Rsnapshot是一个用Perl编写的开源本地/远程文件系统备份实用程序,它充分利用了Rsync和SSH程序的功能,您可以创建计划的增量备份Linux/Unix文件系统,同时只占用一组完整备份(加上更改的数据)的空间,并将这些备份存储在本地驱动器上到不同的硬盘驱动器、外部USB驱动器、安装NFS的驱动器上,或者只是通过SSH通过网络连接到另一台机器。安装Rsnapshot备份工具本文将演示如何安装、设置和使用rsnapshot创建增量的每小时、每天、每周和每月的本地备份,以及创建远程备份。要执行本文中描述的所有步骤,您必须是根用户。第一步:在Linux下安装rsnapshot备份工具如果您使用基于RedHat和Debian的发行版,使用Yum和APT(高级打包工具)安装rsnapshot可能会略有不同。首先在RedHatEnterpriseLinux(RHEL)/CentOS上,您必须安装并启用名为EPEL的第三方软件存储库。请点击此链接在您的RHEL/CentOS系统下安装并启用第三方软件仓库。Fedora用户不需要任何特殊的存储库配置。完成设置后,您可以从命令行安装rsnapshot,如下所示。#yuminstallrsnapshot在Debian/Ubuntu/LinuxMint上,rsnapshot默认包含在Ubuntu的软件存储库中,因此您可以使用apt-get命令安装它,如下所示。#apt-getinstallrsnapshot第2步:设置无密码SSH登录机制要在远程Linux服务器上备份内容,您的rsnapshot备份服务器必须能够通过SSH连接而无需密码。为此,您将需要创建SSH公钥和私钥以使用rsnapshot服务器进行身份验证。请单击下面的链接在您的rsnapshot备份服务器上生成公钥和私钥。《使用SSH密钥生成器,创建无需密码的SSH登录机制》(http://www.tecmint.com/ssh-passwordless-login-using-ssh-keygen-in-5-easy-steps/)第3步:配置rsnapshot现在您需要编辑和配置rsnapshot文件添加一些参数。使用vi或nano编辑器打开rsnapshot.conf文件。#vi/etc/rsnapshot.conf接下来,创建一个备份目录,您希望在其中存储所有备份。以本文为例,我的备份目录位置是“/data/backup/”。找到并编辑下面的参数以设置备份位置。snapshot_root/data/backup/此外,取消注释“cmd_ssh”行以允许通过SSH进行远程备份。如果你想取消这一行的注释,请去掉下一行前面的“#”,这样rsnapshot就可以安全地将数据传输到备份服务器。cmd_ssh/usr/bin/ssh接下来,您决定要保留多少旧备份,因为rsnapshot不知道您要多久拍摄一次快照。您可以指定要保存的数据量、添加保存数据的时间间隔以及每个时间间隔的长度。好吧,默认设置已经足够好了,但我仍然希望您启用“每月”(monthly)间隔,这样您就可以拥有更长的备份时间。请编辑此部分,使其看起来像下面的设置。###########################################备份间隔##必须是唯一的,并按升序排序##即按小时、天、周等方式备份############################################intervalhourly6intervaldaily7intervalweekly4intervalmonthly3您需要编辑的另一件事是“ssh_args”变量。如果将默认SSH端口(22)更改为其他端口号,则必须指定远程备份服务器的端口号。ssh_args-p7851***,添加你要备份的本地和远程备份目录。备份本地目录如果您决定在同一台机器上本地备份目录,备份条目应该看起来像这样。例如,我想备份我的/tecmint目录和/etc目录。backup/tecmint/localhost/backup/etc/localhost/备份远程目录如果你想备份远程服务器目录,那么你需要告诉rsnapshot服务器在哪里,你要备份哪些目录。我是来备份rsnapshot服务器上“/data/backup”目录下的远程服务器“/home”目录的。backuproot@example.com:/home//data/backup/另见:《如何使用Rsync(远程同步)工具,备份/同步目录?》(http://www.tecmint.com/rsync-local-remote-file-synchronization-commands/)《如何使用SCP命令,传送文件/文件夹?》(http://www.tecmint.com/scp-commands-examples/)排除文件和文件夹这里我想排除所有内容,然后专门定义我想要备份的内容。为此,您需要创建一个排除文件。#vi/data/backup/tecmint.exclude首先获取要备份的目录列表,然后添加(-*)以排除所有其他目录。这只会备份您在文件中列出的内容。我的排除文件如下所示。+/boot+/data+/tecmint+/etc+/home+/opt+/root+/usr-/usr/*-/var/cache+/var-/*由于使用rsync递归,使用排除文件选项可能会很棘手。所以,我上面的例子可能不是你要找的。接下来,将排除文件添加到rsnapshot.conf文件。exclude_file/data/backup/tecmint.exclude***,你的初始配置差不多完成了。在继续之前,保存“/etc/rsnapshot.conf”配置文件。有很多选项需要解释,但下面是我的示例配置文件。config_version1.2snapshot_root/data/backup/cmd_cp/bin/cpcmd_rm/bin/rmcmd_rsync/usr/bin/rsynccmd_ssh/usr/bin/sshcmd_logger/usr/bin/loggercmd_du/usr/bin/duintervalhourly6intervaldaily7intervalweekly4intervalmonthly3ssh_arghots-p25000ps4datalog/exclude/varfilevellog/varfilevel备份/tecmint.excludersync_long_args--delete--numeric-ids--delete-excludedlockfile/var/run/rsnapshot.pidbackup/tecmint/localhost/backup/etc/localhost/backuproot@example.com:/home//data/backup/以上所有选项和参数解释如下:config_version1.2=配置文件版本snapshot_root=存储快照的备份目的地cmd_cp=复制命令路径cmd_rm=删除命令路径cmd_rsync=Rsync路径cmd_ssh=SSH路径cmd_logger=系统日志shell命令界面路径cmd_du=磁盘使用命令路径intervalhourly=保留多少小时备份intervaldaily=保留多少每日备份intervalweekly=保留多少每周备份intervalmonthly=保留多少月备份ssh_args=optionalSSHvariables,suchasdifferentports(-p)verbose=noneedtospecifyloglevel=noneedtospecifylogfile=logfilepathexclude_file=excludefilepath(在下面有更详细的解释)lockfile=no需要指定backup=备份项的完整路径,后跟位置的相对路径步骤4:验证rsnapshot配置完成所有配置工作后,您需要验证一切正常预期的。运行以下命令以验证您的配置是否使用了正确的语法。#rsnapshotconfigtestSyntaxOK如果一切配置正确,您应该会收到一条“SyntaxOK”消息。如果您收到任何错误消息,则意味着您需要在运行rsnapshot之前更正这些错误。接下来,让我们测试其中一个快照,以确保生成正确的结果。我们拿“hourly”(每小时)参数,使用-t(测试)参数进行测试。以下命令显示了该命令要执行的一长串操作,但实际上并未执行这些操作。#rsnapshot-thourly示例输出echo2028>/var/run/rsnapshot.pidmkdir-m0700-p/data/backup/mkdir-m0755-p/data/backup/hourly.0//usr/bin/rsync-a--delete--numeric-ids--relative--delete-excluded/home\/backup/hourly.0/localhost/mkdir-m0755-p/backup/hourly.0//usr/bin/rsync-a--delete--numeric-ids--relative--delete-excluded/etc\/backup/hourly.0/localhost/mkdir-m0755-p/data/backup/hourly.0//usr/bin/rsync-a--delete--numeric-ids--relative--delete-excluded\/usr/local/data/backup/hourly.0/localhost/touch/data/backup/hourly.0/注意:以上命令指示rsnapshot创建一个“每小时”备份。如果我们实际执行该命令,它实际上会输出它将执行的命令。第五步:手动运行rsnapshot验证结果后,可以去掉“-t”选项,真正运行命令。#rsnapshothourly上面的命令将运行备份脚本,以及我们在rsnapshot.conf文件中添加的所有配置,创建一个“备份”目录,并在其下创建目录结构来组织我们的文件。运行上述命令后,可以进入备份目录验证结果,然后使用ls-l命令列出目录结构,如下所示。commandassshown.#cd/data/backup#ls-ltotal4drwxr-xr-x3rootroot4096Oct2809:11hourly.0第六步:自动化流程为了自动化这个流程,需要通过Cron计划任务工具来安排rsnapshot在一定的时间间隔运行.默认情况下,rsnapshot在“/etc/cron.d/rsnapshot”下自带一个cron文件;如果此文件不存在,请创建一个并向其中添加以下行。默认情况下,规则被注释,因此您需要删除计划部分前面的“#”以启用这些值。#这是rsnapshot的示例计划任务文件。#使用的值对应/etc/rsnapshot.conf中的例子。#您还可以在那里设置备份点和许多其他选项。#如果你想激活这些计划任务文件,你必须取消注释以下行。#随意更改它以满足您的需要。0*/4***root/usr/bin/rsnapshothourly303***root/usr/bin/rsnapshotdaily03**1root/usr/bin/rsnapshotweekly3021**root/usr/bin/rsnapshotmonthly下面我详细解释一下上面的计划是什么任务规则的作用是:每4小时运行一次,并在/backup目录下创建一个每小时的目录。每天凌晨3点30分运行,在/backup目录下创建daily目录。每周运行一次,具体时间是周一凌晨3:00,在/backup目录下创建weekly目录。每月运行一次,具体时间为凌晨2点30分,在/backup目录下创建monthly目录。要更深入地了解计划任务规则的工作原理,我建议您查看我们的描述文章。第七步:rsnapshot报告rsnapshot提供了一个小型报告Perl脚本,它可以向您发送电子邮件警报,其中包含有关数据备份期间发生的所有详细信息。要创建此脚本,您必须将脚本复制到“/usr/local/bin”下的某处并使其可执行。#cp/usr/share/doc/rsnapshot-1.3.1/utils/rsnapreport.pl/usr/local/bin#chmod+x/usr/local/bin/rsnapreport.pl接下来,把你的“rsnapshot.conf”文件中的“-stats”参数被添加到rsync的长参数部分。vi/etc/rsnapshot.confrsync_long_args--stats--delete--numeric-ids--delete-excluded现在编辑之前添加的crontab规则,调用rsnapreport.pl脚本将报告投递到指定的邮箱地址。#这是rsnapshot的示例计划任务文件。#使用的值对应/etc/rsnapshot.conf中的例子。#您还可以在那里指定备份点和许多其他选项。#要激活这个cron文件,你必须取消注释下面几行。#随意更改它以满足您的需要。0*/4***root/usr/bin/rsnapshothourly2>&1|\/usr/local/bin/rsnapreport.pl|mail-s"HourlyBackup"yourname@email.com303***root/usr/bin/rsnapshotdaily2>&1|\/usr/local/bin/rsnapreport.pl|mail-s"DailyBackup"yourname@email.com03**1root/usr/bin/rsnapshotweekly2>&1|\/usr/local/bin/rsnapreport.pl|mail-s"WeeklyBackup"yourname@email.com3021**root/usr/bin/rsnapshotmonthly2>&1|\/usr/local/bin/rsnapreport.pl|mail-s"MonthlyBackup"yourname@email.com添加后正确设置上述条目后,可以将报告发送到类似于以下地址的电子邮件地址。SOURCETOTALFILESFILESTRANSTOTALMBMBTRANSLISTGENTIMEFILEXFERTIME------------------------------------------------------------------localhost/185734118532889.456179.1840.661second0.000seconds参考链接:rsnapshot的主页暂时写在这里;如果您在安装过程中有任何问题,欢迎在此留言。原文链接:http://www.tecmint.com/rsnapshot-a-file-system-backup-utility-for-linux/
