Linux学习--rsync同步备份实现

本文介绍了如何在Linux环境下配置和使用rsync进行数据同步和备份。在服务端,详细阐述了配置rsyncd.conf文件、创建镜像目录、设置虚拟用户和密码文件以及启动rsync服务的过程。在客户端,演示了如何创建密码文件、同步本地数据到远程服务器以及从远程服务器同步数据到本地。同时,文章提到了rsync的增量同步特性以及使用delete参数可能带来的风险。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

事先的准备,2台Redhat 6.3虚拟机,主机名和IP地址如下:

mylinux     192.168.198.100   rsync服务器端

mylinux2   192.168.198.101   rsync客户端

一、rsync服务端配置


以mylinux为例,查看一下虚拟机的信息,这里看到rsync是已经安装好了的,版本为3.0.6.


在mylinux上编辑rsync的配置文件/etc/rsyncd.conf(该文件默认不存在,需要手工创建),详细信息如图所示,下面是其中配置参数的实际意义。

uid=root                             <span style="word-wrap: break-word;">// </span><span style="word-wrap: break-word;">运行</span><span style="word-wrap: break-word;">RSYNC</span><span style="word-wrap: break-word;">守护进程的用户</span>
gid=root                            <span style="color:#3333ff;"><span style="font-size:12px;"> </span></span><span style="word-wrap: break-word;">// </span><span style="word-wrap: break-word;">运行</span><span style="word-wrap: break-word;">RSYNC</span><span style="word-wrap: break-word;">守护进程的组</span>
use chroot =  no                     <span style="word-wrap: break-word;">// </span><span style="word-wrap: break-word;">不使用</span><span style="word-wrap: break-word;">chroot</span>
max connections = 200                <span style="word-wrap: break-word;">// </span><span style="word-wrap: break-word;">最大连接数200</span>
timeout = 300                        // 超时时长300秒
pid file = /var/run/rsyncd.rid       <span style="word-wrap: break-word;">// pid</span><span style="word-wrap: break-word;">文件的存放位置</span>
lock file = /var/run/rsync.lock      <span style="word-wrap: break-word;">// </span><span style="word-wrap: break-word;">锁文件的存放位置</span>
log file = /var/log/rsyncd.log       <span style="word-wrap: break-word;">// </span><span style="word-wrap: break-word;">日志记录文件的存放位置</span>
[backup]                             <span style="word-wrap: break-word;">// </span><span style="word-wrap: break-word;">这里是认证的模块名</span>
path = /backup/                      <span style="word-wrap: break-word;">// </span><span style="word-wrap: break-word;">需要做镜像的目录</span><span style="word-wrap: break-word;">,</span><span style="word-wrap: break-word;">不可缺少</span>  
ignore errors                        // 忽略错误
read only = false                    // 是否只允许只读
list = false                         // 是否允许列举文件
hosts allow = 192.168.198.0/24       // 允许进行数据同步的主机或地址段
hosts deny = 0.0.0.0/32              // 拒绝进行数据同步的主机或地址段
auth users = rsync_backup            // 认证的rsync用户名
secrets file = /etc/rsync.password   // 对应上面rsync用户的密码文件

创建镜像目录,此处为/backup, 然后创建认证用户rsync_backup的密码文件,这里的rsync_backup是为了使用rsync而设置的虚拟用户,并非系统用户。然后为了提高安全性,需要将密码文件权限设置为600。

这里以守护进程的方式打开rsync服务,可以使用ps -ef|grep rsync检查进程是否正在运行,当然也可以使用netstat命令查看rsync的端口号是否在执行监听来确认,然后通过lsof -i tcp:873我们也可以确认rsync服务正在运行。

如果需要设置rsync开机启动,可以添加以下这条命令,在开机启动脚本中执行启动命令:

echo "/usr/bin/rsync --daemon" >> /etc/rc.local
至此,服务器端的操作已经完成,下面要切换到客户端上进行配置。

二、rsync客户端配置


在mylinux2上切换到root用户下,创建rsync用户密码文件,这里的密码文件中只保存密码即可。注意,创建完成后,最好将密码文件的权限设置为600.


在mylinux2上创建一个用于数据同步的目录/tmp/test/,然后创建文件,完成之后查看该目录下的文件。使用的命令如下:

rsync -avz -P /tmp/test/ rsync_backup@mylinux<span style="color:#ff0000;">::backup/</span> -password-file=/etc/rsync.password


然后执行rsync命令,看到成功将本地目录/tmp/test/目录下的文件同步到远端mylinux中的/backup/目录下,我们也可以到mylinux上进行查看。


可以看到,在mylinux2上创建的文件已经同步过来了。


继续在mylinux2上创建一个新的文件hello,txt, 然后使用rsync同步。这次不使用上面的命令,也就是不用模块定义的方式,而是指定同步的路径,写法如下:

rsync -avz -P /tmp/test/ <span style="color:#ff0000;">rsync://</span>rsync_backup@mylinux:<span style="color:#ff0000;">/backup/</span> -password-file=/etc/rsync.password


从上图中看到,这次rsync只同步了hello.txt这一个文件,这是因为rsync支持增量同步,仅对更新过的文件进行同步,所以同步效率大大提高。


再回到mylinux上,已经看到hello.txt文件了。

上面都是从本地同步数据到远端服务器,下面将数据从远端同步到本地,使用如下命令:

rsync -avz -P rsync_backup@mylinux<span style="color:#ff0000;">::backup/</span> /tmp/ --password-file=/etc/rsync.password


从执行结果看到,已经从mylinux上同步/backup/目录中的文件到本地的/tmp/目录下了。


使用ls命令可以看到,在/tmp/目录下已经同步了远端的数据,将/tmp/test/目录下的文件删除,下面使用另外一种方式从远端同步数据到本地。


这次使用的不是认证模块,而是远程同步目录,命令如下;

rsync -avz -P <span style="color:#ff0000;">rsync://</span>rsync_backup@mylinux:<span style="color:#ff0000;">/backup/</span> /tmp/ --password-file=/etc/rsync.password
同样的,也成功将数据同步到了本地。


上图中,在使用rsync同步从本地同步数据到远端时使用了delete参数,这样就会把远端目标目录中存在而本地目录中不存在的文件删除,强制跟本地目录进行同步,一般不使用该参数;如果需要使用该参数,请小心操作,因为如果同步的是系统目录,如/home/, / 等目录,可能会引起事故。


最后到mylinux上查看/backup/目录,其中hello.txt和abc.txt已经被删除了,所以使用delete参数需要小心操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值