Rsnapshot(基于Rsync) - 用于Linux的本地/远程文件系统备份实用程序

rsnapshot是一个开源的本地/远程文件系统备份实用程序,利用rsync和SSH程序的力量创建计划的增量备份。

rsnapshot是一个开源的本地 / 远程文件系统备份工具是用Perl语言编写这种优势的Rsync的力量和SSH程序来创建, Linux / Unix文件系统的计划增量备份,而只占用了一个单一的完整备份和差异的空间并保持本地 驱动器上的备份,以不同的硬盘 ,外置USB记忆棒,一个NFS安装的驱动器或者干脆使用SSH通过网络到另一台机器。

在Linux中安装rsnapshot备份

安装Rsnapshot备份工具

本文将演示如何安装,设置和使用rsnapshot创建增量每小时每天每周每月 本地备份,以及远程备份。 要执行本文中的所有步骤,您必须是root用户。

第1步:在Linux中安装Rsnapshot Backup

使用YumAPT 5月rsnapshot安装略有不同,如果你使用基于Red HatDebian发行

在RHEL / CentOS上

首先,你必须安装并启用名为EPEL第三方存储库。 请按照以下链接安装并在你的RHEL / CentOS的系统使。Fedora用户不需要任何特殊的资源库配置。

  1. 在RHEL / CentOS 6/5/4中安装并启用EPEL存储库

一旦你得到的东西设置,如图所示的命令行安装rsnapshot。

# yum install rsnapshot
在Debian / Ubuntu / Linux Mint

默认情况下,包含在Ubuntu的仓库rsnapshot,所以使用apt-get命令,如图安装即可。

# apt-get install rsnapshot

第2步:设置SSH无密码登录

要备份远程Linux服务器,你的rsnapshot备份服务器将能够通过SSH不用密码进行连接。 要做到这一点,你需要创建一个SSH公钥和私钥的rsnapshot服务器上进行验证。 请按照以下链接来生成你的rsnapshot备份服务器上的公钥和私钥。

  1. 使用SSH密钥创建SSH无密码登录

第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

最后,添加要备份的本地和远程备份目录。

备份本地目录

如果您决定在本地将目录备份到同一台计算机,则备份条目将如下所示。 例如,我以我的/ howtoing/ etc目录的备份。

backup		/howtoing/		localhost/
backup		/etc/			localhost/
备份远程目录

如果要备份远程服务器目录,则需要告诉rsnapshot服务器在哪里以及要备份哪些目录。 在这里,我rsnapshot服务器上把我的远程服务器“ 的/ home”目录备份“/数据/备份 ”目录下。

backup		 root@example.com:/home/ 		/data/backup/

阅读:

  1. 如何使用Rsync(远程同步)工具备份/同步目录
  2. 如何使用SCP命令传输文件/文件夹
排除文件和目录

在这里,我将排除一切,然后只特别定义我想要备份的内容。 为此,您需要创建排除文件。

# vi /data/backup/howtoing.exclude

首先得到你想要备份,并添加目录列表( - *)排除一切。 这只会备份您在文件中列出的内容。 我的排除文件看起来像下面类似。

+ /boot
+ /data
+ /howtoing
+ /etc
+ /home
+ /opt
+ /root
+ /usr
- /usr/*
- /var/cache
+ /var
- /*

使用排除文件选项可能会非常棘手,由于使用rsync递归。 所以,我上面的例子可能不是你在看什么。 接下来,添加排除文件rsnapshot.conf文件。

exclude_file    /data/backup/howtoing.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/howtoing.exclude
rsync_long_args --delete        --numeric-ids   --delete-excluded
lockfile        /var/run/rsnapshot.pid
backup		/howtoing/		localhost/
backup		/etc/			localhost/
backup		root@example.com:/home/ 		/data/backup/

所有上述选项和参数说明如下:

  1. config_version 1.2 =配置文件版本
  2. snapshot_root =备份目标存储快照
  3. cmd_cp =路径复制命令
  4. cmd_rm =路径删除命令
  5. cmd_rsync =路径进行rsync
  6. cmd_ssh =路径SSH
  7. cmd_logger =路径外壳命令接口到syslog
  8. cmd_du =路径磁盘使用命令
  9. 间隔小时 =多少每小时备份保存。
  10. 间隔日常 =多少每日备份保留。
  11. 间隔每周 =多少每周备份保留。
  12. 间隔每月 =多少每月备份保存。
  13. ssh_args =可选的SSH参数,例如不同的端口(-p)
  14. 详细 =不言自明
  15. 日志等级 =不言自明
  16. 日志文件 =路径日志文件
  17. EXCLUDE_FILE =路径排除文件(将在更详细地解释)
  18. rsync_long_args =长参数传递给rsync的
  19. 锁定文件 =不言自明
  20. 备份 =完整路径进行备份之后配售相对路径是什么。

第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规则:

  1. 4小时 ,创建/ backup目录下每小时目录。
  2. 每日运行在3:30上午创建/ backup目录下每天目录。
  3. 运行在每个星期一 每周 凌晨3:00和创建/ backup目录下每周一次的目录。
  4. 运行在凌晨2:30 每个月的创建和/ backup目录下每月的目录。

要在cron的规则是如何工作的更好的理解,我建议你阅读我们的文章描述。

  1. 11 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

参考链接

  1. rsnapshot主页

这是现在,如果在安装过程中发生任何问题,请给我一个评论。 至今,然后继续关注HowToing对开源世界更有趣的文章。