rsync是一个远程数据同步工具,可通过lan/wan快速同步多台主机间的文件。它使用所谓的“rsync演算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。所以通常可以作为备份工具来使用。
运行rsync server的机器也叫backup server,一个rsync server可同时备份多个client的数据;也可以多个rsync server备份一个client的数据。rsync可以搭配ssh甚至使用daemon模式。rsync server会打开一个873的服务通道(port),等待对方rsync连接。连接时,rsync server会检查口令是否相符,若通过口令查核,则可以开始进行文件传输。第一次连通完成时,会把整份文件传输一次,下一次就只传送二个文件之间不同的部份。
inotify介绍
inotify是一种强大的、细粒度的、异步的文件系统事件监控机制,Linux内核从2.6.13开始引入,允许监控程序打开一个独立文件描述符,并针对事件集监控一个或者多个文件,例如打开、关闭、移动/重命名、删除、创建或者改变属性。
实验
拓扑
服务器端(数据接收方)的配置
[root@backupserver ~]# vim /etc/sysconfig/selinux #关闭selinux
SELINUX=disabled
[root@backupserver ~]#reboot #重启
[root@backupserver ~]# yum -y install rsync #安装rsync,默认情况下已经安装
[root@backupserver ~]# vim /etc/rsyncd.conf #编辑rsync配置文件
log file = /var/log/rsyncd.log #日志文件位置,启动rsync后自动产生这个文件,无需提前创建
pid file = /var/run/rsyncd.pid #pid文件的存放位置
lock file = /var/run/rsync.lock #支持max connections参数的锁文件
secrets file = /etc/rsync.password #用户认证配置文件,里面保存用户名称和密码
motd file = /etc/rsyncd.motd #启动时欢迎信息页面文件位置(文件内容自定义)
[web_log] #定义模板,自定义名称
path = /rsydata/ #rsync服务端数据目录路径,自定义
comment = web_log #模块名称与[web_log]自定义名称相同
uid = root #设置rsync运行权限为root
gid = root #设置rsync运行权限为root
port=873 #默认端口
use chroot = false #默认为true,修改为false,增加对目录文件软连接的备份
read only = false #设置rsync服务端文件为只读权限
list = false #不显示rsync服务端资源列表
max connections = 200 #最大连接数
timeout = 600 #设置超时时间
auth users = backuser #执行数据同步的用户名,可以设置多个,用英文状态下逗号隔开
hosts allow = ip地址 #允许进行数据同步的客户端IP地址,可以设置多个,用英文状态下逗号隔开
hosts deny = IP地址 #禁止数据同步的客户端IP地址,可以设置多个
[root@backupserver ~]# mkdir /rsydata #创建备份目录
[root@backupserver ~]# vim /etc/rsync.password #编辑用户认证配置文件
backuser:RedHat
root@backupserver ~]# chmod 600 /etc/rsync.password #一定要把用户认证配置文件的权限改成600
[root@backupserver ~]# /usr/bin/rsync --daemon & #后台运行rsync服务
[1] 3392
[root@backupserver ~]# systemctl enable rsyncd.service #设置rsync服务开机自启
[root@backupserver ~]# firewall-cmd --permanent --add-port=873/tcp #配置防火墙
[root@backupserver ~]# firewall-cmd --reload
客户端(数据发送方)的配置
[root@backupclient ~]# yum -y install rsync #安装rsync,默认情况下已经安装
[root@backupclient ~]# vim /etc/rsync.password #编辑认证文件,只保存密码
redhat
[root@backupclient ~]# chmod 600 /etc/rsync.password #一定要把认证文件权限修改成600
[root@backupclient~]#wget
#下载inotify源码包
[root@backupclient ~]# tar -xzvf inotify-tools-3.14.tar.gz -C /usr/local/ #解压到/usr/logcal目录
[root@backupclient ~]# mkdir /usr/local/inotify #创建安装目录
[root@backupclient ~]# cd /usr/local/inotify-tools-3.14/
[root@backupclient inotify-tools-3.14]# ./configure --prefix=/usr/local/inotify #指定安装目录为/usr/local/inotify
[root@backupclient inotify-tools-3.14]# make &&make install #编译安装
[root@backupclient ~]# systemctl restart rsyncd
[root@backupclient ~]# systemctl enable rsyncd
验证
[root@backupclient ~]# mkdir /tmp/test
[root@backupclient ~]# cd /tmp/test
[root@backupclient test]# touch a{1..9}
[root@backupclient test]# ls
a1 a2 a3 a4 a5 a6 a7 a8 a9