博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
远程文件系统备份工具 Rsnapshot
阅读量:7064 次
发布时间:2019-06-28

本文共 4728 字,大约阅读时间需要 15 分钟。

  hot3.png

安装Rsnapshot备份工具

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

第一步:在Linux下安装rsnapshot备份工具

如果你使用基于红帽和Debian的发行版,那么使用Yum和APT(高级打包工具)安装rsnapshot可能略有不同。在红帽企业级Linux(RHEL)/CentOS上首先,你得安装并启用名为EPEL的第三方软件库。请点击这个链接,在你RHEL/CentOS系统下安装并启用第三方软件库。Fedora用户不需要任何特别的软件库配置。一旦你完成了设置工作,就可以从命令行来安装rsnapshot,如下所示。

# yum install rsnapshot

在Debian/Ubuntu/Linux Mint上

默认情况下,rsnapshot已包含在Ubuntu的软件库中,所以你可以使用apt-get命令来安装它,如下所示。

# apt-get install rsnapshot

第二步:设置无需密码的SSH登录机制

想备份远程Linux服务器上的内容,你的rsnapshot备份服务器就要能够通过SSH来连接,而不需要密码。为了做到这一点,你就需要创建SSH公共密钥和私有密钥,以便在rsnapshot服器上验证身份。请点击下面这个链接,以便在你的rsnapshot备份服务器上生成公共密钥和私有密钥。《使用SSH密钥生成器,创建无需密码的SSH登录机制》(http://www.tecmint.com/sshpasswordless-login-using-ssh-keygen-in-5-easy-steps/

)。

第三步:配置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”(每月)时间间隔,那样你还能拥有更长期的备份。请编辑这个部分,以便看起来类似下面的设置。

############################## 备份间隔 # # 必须具有独特性,而且按照升序排列 # # 即按照每小时、每天、每周等备份 # #############################interval hourly 6 interval daily 7 interval weekly 4 interval monthly 3

另外你还需要编辑的是”ssh_args”这个变量。如果你将默认的SSH端口(22)改成了别的

端口号,就要指定你那台远程备份服务器的那个端口号。

ssh_args -p 7851

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

备份本地目录如果你已决定将目录本地备份到同一台机器上,备份条目应该看起来像这样。比如说,我要

备份我的/tecmint目录和/etc目录。backup /tecmint/ localhost/ 

backup /etc/ localhost/

备份远程目录如果你想备份远程服务器目录,那么你要告诉rsnapshot服务器在哪里、你又想备份哪些目

录。我在这里要备份rsnapshot服务器上”/data/backup”目录下的远程服务器”/home”目录。

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

排除文件和文件夹这里,我要排除一切内容,然后只专门定义我想要备份什么内容。为此,你需要创建一个排除文件。

# 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_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/tecmint.exclude rsync_long_args --delete --numeric-ids --delete-excluded lockfile /var/run/rsnapshot.pid backup /tecmint/ 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 = 系统日志的外壳命令接口路径 cmd_du = 磁盘使用命令路径 interval hourly = 保留多少的每小时备份 interval daily = 保留多少的每天备份 interval weekly = 保留多少的每周备份 interval monthly = 保留多少的每月备份 ssh_args = 可选的SSH变量,比如不同的端口(-p) verbose = 不需要加以说明 loglevel = 不需要加以说明 logfile = 日志文件路径 exclude_file = 排除文件路径(下面会更详细地解释) rsync_long_args = 传递到rsync的长变量 lockfile = 不需要加以说明 backup = 备份项的完整路径,后跟位置的相对路径

第四步:验证rsnapshot配置

一旦你完成了所有的配置工作,就需要验证一切都按预期的那样在运作。运行下面这个命令,验证你的配置使用了正确语法。

# rsnapshot configtest Syntax OK

要是一切配置正确,你会收到”Syntax OK”(语法正确)的消息。要是你收到了任何错误的消息,那就意味着你需要在运行rsnapshot之前,先纠正那些错误。接下来,对其中一个快照测试一番,确保我们在生成正确的结果。我们拿”hourly”(每小时)这个参数,使用-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创建一个”hourly”备份。它实际上输出了我们在实际执行该命令时它会执行的那些命令。

第五步:手动运行rsnapshot

验证了结果后,你可以去除”-t”选项,实际运行这个命令。

# rsnapshot hourly

上面这个命令会运行备份脚本,连同我们添加在rsnapshot.conf文件中的所有配置,创建一个”backup”目录,然后在它下面创建组织管理我们那些文件的目录结构。在运行上面这个命令后,你可以进入到备份目录来验证结果,然后使

用ls -l命令列出目录结构,如下所示。

command as shown. # cd /data/backup # ls -l total 4 drwxr-xr-x 3 root root 4096 Oct 28 09:11 hourly.0

第六步:让过程自动化

为了让这个过程自动化,你就需要通过Cron计划任务工具,安排rsnapshot按某些时间间隔运行。默认情况下,rsnapshot在”/etc/cron.d/

rsnapshot”下随带cron文件;要是这个文件不存在,就创建一个,然后将下面几行添加到该文件。

默认情况下,规则被注释,所以你要去除计划部分前面的”#”,以便启用这些值。

转自 《Linux运维趋势》

转载于:https://my.oschina.net/HankCN/blog/186953

你可能感兴趣的文章
现代软件工程讲义 目录
查看>>
Akka2使用探索6(Futures)——实现并发和异步
查看>>
【持续更新】jQuery 实用技巧
查看>>
大象也能起舞,Citrix X1计划让你对笔记本电脑say good bye
查看>>
Nginx 之常见报错问题解决
查看>>
linux 防爆破方法
查看>>
Elasticsearch的使用场景深入详解
查看>>
day10---paramiko ssh ftp
查看>>
2、通过ipmitool工具修改IPMI的WEB密码
查看>>
云盘关闭,教你用蒲公英搭建私有云
查看>>
Spring Cloud 入门教程5、服务容错监控:Hystrix Dashboard
查看>>
很好的学习平台
查看>>
hibernate学习笔记3
查看>>
SQL Server 2005 日常运维检查操作手册
查看>>
利用jquery和jsonp来获取跨站数据,并实现cookie共享
查看>>
100万并发连接服务器笔记之Java Netty处理1M连接会怎么样
查看>>
表单工作流审核步骤抄送功能介绍
查看>>
JPPF并行计算框架类加载机制研究
查看>>
Spark(四) -- Spark工作机制
查看>>
我的友情链接
查看>>