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

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

mylinux     192.168.198.100   rsync服务器端

mylinux2   192.168.198.101   rsync客户端

一、rsync服务端配置

Linux学习--rsync同步备份实现_第1张图片

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

Linux学习--rsync同步备份实现_第2张图片

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

uid=root                             // 运行RSYNC守护进程的用户
gid=root                             // 运行RSYNC守护进程的组
use chroot =  no                     // 不使用chroot
max connections = 200                // 最大连接数200
timeout = 300                        // 超时时长300秒
pid file = /var/run/rsyncd.rid       // pid文件的存放位置
lock file = /var/run/rsync.lock      // 锁文件的存放位置
log file = /var/log/rsyncd.log       // 日志记录文件的存放位置
[backup]                             // 这里是认证的模块名
path = /backup/                      // 需要做镜像的目录,不可缺少  
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用户的密码文件
Linux学习--rsync同步备份实现_第3张图片

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

Linux学习--rsync同步备份实现_第4张图片

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

Linux学习--rsync同步备份实现_第5张图片

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

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

二、rsync客户端配置

Linux学习--rsync同步备份实现_第6张图片

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

Linux学习--rsync同步备份实现_第7张图片

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

rsync -avz -P /tmp/test/ rsync_backup@mylinux::backup/ -password-file=/etc/rsync.password

Linux学习--rsync同步备份实现_第8张图片

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

Linux学习--rsync同步备份实现_第9张图片

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

Linux学习--rsync同步备份实现_第10张图片

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

rsync -avz -P /tmp/test/ rsync://rsync_backup@mylinux:/backup/ -password-file=/etc/rsync.password

Linux学习--rsync同步备份实现_第11张图片

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

Linux学习--rsync同步备份实现_第12张图片

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

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

rsync -avz -P rsync_backup@mylinux::backup/ /tmp/ --password-file=/etc/rsync.password

Linux学习--rsync同步备份实现_第13张图片

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

Linux学习--rsync同步备份实现_第14张图片

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

Linux学习--rsync同步备份实现_第15张图片

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

rsync -avz -P rsync://rsync_backup@mylinux:/backup/ /tmp/ --password-file=/etc/rsync.password
同样的,也成功将数据同步到了本地。

Linux学习--rsync同步备份实现_第16张图片

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

Linux学习--rsync同步备份实现_第17张图片

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

你可能感兴趣的:(Linux,基础,rsync,同步,镜像,scp,linux)