rsnapshot是一个开源的本地 / 远程文件系统备份工具是用Perl语言编写这种优势的Rsync的力量和SSH程序来创建, 的 Linux / Unix文件系统的计划增量备份,而只占用了一个单一的完整备份和差异的空间并保持本地 驱动器上的备份,以不同的硬盘 ,外置USB记忆棒,一个NFS安装的驱动器或者干脆使用SSH通过网络到另一台机器。
安装Rsnapshot备份工具
本文将演示如何安装,设置和使用rsnapshot创建增量每小时 , 每天 , 每周和每月 的本地备份,以及远程备份。 要执行本文中的所有步骤,您必须是root用户。
第1步:在Linux中安装Rsnapshot Backup
使用Yum和APT 5月rsnapshot安装略有不同,如果你使用基于Red Hat和Debian发行版 。
在RHEL / CentOS上
首先,你必须安装并启用名为EPEL第三方存储库。 请按照以下链接安装并在你的RHEL / CentOS的系统使。Fedora用户不需要任何特殊的资源库配置。
一旦你得到的东西设置,如图所示的命令行安装rsnapshot。
# yum install rsnapshot
在Debian / Ubuntu / Linux Mint
默认情况下,包含在Ubuntu的仓库rsnapshot,所以使用apt-get命令,如图安装即可。
# apt-get install rsnapshot
第2步:设置SSH无密码登录
要备份远程Linux服务器,你的rsnapshot备份服务器将能够通过SSH不用密码进行连接。 要做到这一点,你需要创建一个SSH公钥和私钥的rsnapshot服务器上进行验证。 请按照以下链接来生成你的rsnapshot备份服务器上的公钥和私钥。
第3步:配置Rsnapshot
现在,你需要编辑和添加一些参数rsnapshot配置文件。 打开rsnapshot.conf文件用vi或纳米编辑器。
# vi /etc/rsnapshot.conf
接下来创建一个备份目录,您要在其中存储所有备份。 在我的情况我的备份目录位置“/ 数据/备份/”。 搜索并编辑以下参数以设置备份位置。
snapshot_root /data/backup/
同时取消对“cmd_ssh”行,以允许进行远程备份通过SSH。 要取消该行删除在前面的下面一行的“#”,这样rsnapshot可将数据安全地传输到备份服务器。
cmd_ssh /usr/bin/ssh
接下来,您需要决定要保留多少旧备份,因为rsnapshot不知道您希望拍摄快照的频率。 您需要指定要保存的数据量,添加要保留的时间间隔以及每个时间段的数量。
那么,默认设置是不够好,但我仍然想你启用了“ 包月 ”的间隔,这样你也可以有长期的备份到位。 请编辑此部分以类似于以下设置。
######################################### # BACKUP INTERVALS # # Must be unique and in ascending order # # i.e. hourly, daily, weekly, etc. # ######################################### interval hourly 6 interval daily 7 interval weekly 4 interval monthly 3
你需要编辑一件事就是“ssh_args”变量。 如果更改默认SSH端口 (22)到别的东西,你需要指定远程备份服务器的端口号。
ssh_args -p 7851
最后,添加要备份的本地和远程备份目录。
备份本地目录
如果您决定在本地将目录备份到同一台计算机,则备份条目将如下所示。 例如,我以我的/ youcl和/ etc目录的备份。
backup /youcl/ localhost/ backup /etc/ localhost/
备份远程目录
如果要备份远程服务器目录,则需要告诉rsnapshot服务器在哪里以及要备份哪些目录。 在这里,我rsnapshot服务器上把我的远程服务器“ 的/ home”目录备份“/数据/备份 ”目录下。
backup root@example.com:/home/ /data/backup/
阅读:
排除文件和目录
在这里,我将排除一切,然后只特别定义我想要备份的内容。 为此,您需要创建排除文件。
# vi /data/backup/youcl.exclude
首先得到你想要备份,并添加目录列表( - *)排除一切。 这只会备份您在文件中列出的内容。 我的排除文件看起来像下面类似。
+ /boot + /data + /youcl + /etc + /home + /opt + /root + /usr - /usr/* - /var/cache + /var - /*
使用排除文件选项可能会非常棘手,由于使用rsync递归。 所以,我上面的例子可能不是你在看什么。 接下来,添加排除文件rsnapshot.conf文件。
exclude_file /data/backup/youcl.exclude
最后,你几乎完成了初始配置。 在“/etc/rsnapshot.conf”配置文件进一步移动之前保存。 有很多选项要解释,但这里是我的示例配置文件。
config_version 1.2 snapshot_root /data/backup/ cmd_cp /bin/cp cmd_rm /bin/rm cmd_rsync /usr/bin/rsync cmd_ssh /usr/bin/ssh cmd_logger /usr/bin/logger cmd_du /usr/bin/du interval hourly 6 interval daily 7 interval weekly 4 interval monthly 3 ssh_args -p 25000 verbose 2 loglevel 4 logfile /var/log/rsnapshot/ exclude_file /data/backup/youcl.exclude rsync_long_args --delete --numeric-ids --delete-excluded lockfile /var/run/rsnapshot.pid backup /youcl/ localhost/ backup /etc/ localhost/ backup root@example.com:/home/ /data/backup/
所有上述选项和参数说明如下:
- config_version 1.2 =配置文件版本
- snapshot_root =备份目标存储快照
- cmd_cp =路径复制命令
- cmd_rm =路径删除命令
- cmd_rsync =路径进行rsync
- cmd_ssh =路径SSH
- cmd_logger =路径外壳命令接口到syslog
- cmd_du =路径磁盘使用命令
- 间隔小时 =多少每小时备份保存。
- 间隔日常 =多少每日备份保留。
- 间隔每周 =多少每周备份保留。
- 间隔每月 =多少每月备份保存。
- ssh_args =可选的SSH参数,例如不同的端口(-p)
- 详细 =不言自明
- 日志等级 =不言自明
- 日志文件 =路径日志文件
- EXCLUDE_FILE =路径排除文件(将在更详细地解释)
- rsync_long_args =长参数传递给rsync的
- 锁定文件 =不言自明
- 备份 =完整路径进行备份之后配售相对路径是什么。
第4步:验证Rsnapshot配置
一旦你完成了你的所有配置,它的时间验证一切正常工作。 运行以下命令以验证您的配置是否具有正确的语法。
# rsnapshot configtest Syntax OK
如果一切配置正确,您会收到一个“ 语法OK”的消息。 如果你收到任何错误讯息,这意味着你需要在运行rsnapshot之前纠正这些错误。
接下来,对其中一个快照执行测试运行,以确保我们正在生成正确的结果。 我们以“ 小时工 ”参数使用-t( 测试 )的说法做了试运行。 这下面的命令将显示一个详细的列表,它会做什么,而不实际做。
# rsnapshot -t hourly
示例输出
echo 2028 > /var/run/rsnapshot.pid mkdir -m 0700 -p /data/backup/ mkdir -m 0755 -p /data/backup/hourly.0/ /usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded /home \ /backup/hourly.0/localhost/ mkdir -m 0755 -p /backup/hourly.0/ /usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded /etc \ /backup/hourly.0/localhost/ mkdir -m 0755 -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创建一个“ 小时工 ”的备份。 它实际上打印出它将执行的命令,当我们执行它真的。
第5步:手动运行Rsnapshot
检查结果后,您可以删除“-t”选项,真正运行的命令。
# rsnapshot hourly
上面的命令将运行与所有我们在rsnapshot.conf文件添加并创建一个“ 备份 ”目录中的配置备份脚本,然后创建其下的目录结构来组织我们的文件。 上面的命令运行后,你可以进入到备份目录验证结果,并使用列出的目录结构的ls -l命令 ,如图所示。
# cd /data/backup # ls -l total 4 drwxr-xr-x 3 root root 4096 Oct 28 09:11 hourly.0
第6步:自动化过程
自动化过程 ,你需要安排rsnapshot在从cron一定的时间间隔来运行。 默认情况下,rsnapshot自带的cron文件“/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
让我解释一下,上面的cron规则:
- 每4小时 ,创建/ backup目录下每小时目录。
- 每日运行在3:30上午创建/ backup目录下每天目录。
- 运行在每个星期一 每周 凌晨3:00和创建/ backup目录下每周一次的目录。
- 运行在凌晨2:30 每个月的创建和/ backup目录下每月的目录。
要在cron的规则是如何工作的更好的理解,我建议你阅读我们的文章描述。
第7步: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”文件到rsync的长篇大论部分添加“-stats”参数。
vi /etc/rsnapshot.conf
rsync_long_args --stats --delete --numeric-ids --delete-excluded
现在编辑较早前补充说,在crontab规则和调用脚本rsnapreport.pl要传递到指定的电子邮件地址的报告。
# 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 2>&1 | \/usr/local/bin/rsnapreport.pl | mail -s "Hourly Backup" yourname@email.com 30 3 * * * root /usr/bin/rsnapshot daily 2>&1 | \/usr/local/bin/rsnapreport.pl | mail -s "Daily Backup" yourname@email.com 0 3 * * 1 root /usr/bin/rsnapshot weekly 2>&1 | \/usr/local/bin/rsnapreport.pl | mail -s "Weekly Backup" yourname@email.com 30 2 1 * * root /usr/bin/rsnapshot monthly 2>&1 | \/usr/local/bin/rsnapreport.pl | mail -s "Montly Backup" yourname@email.com
一旦您正确添加了以上条目,您将收到一个类似于下面的电子邮件地址的报告。
SOURCE TOTAL FILES FILES TRANS TOTAL MB MB TRANS LIST GEN TIME FILE XFER TIME -------------------------------------------------------------------------------------------------------- localhost/ 185734 11853 2889.45 6179.18 40.661 second 0.000 seconds
参考链接
这是现在,如果在安装过程中发生任何问题,请给我一个评论。 至今,然后继续关注youcl对开源世界更有趣的文章。