rsync的软件包:
官方网站: http://rsync.samba.org/
软件包:rsync,rsync-daemon(CentOS 8)
服务文件:/usr/lib/systemd/system/rsyncd.service
配置文件:/etc/rsyncd.conf
端口:873/tcp
两种方式实现rsync服务器
rsync便可以作为服务器端,也能够作为客户端程序。
方式一:通过rsync守护进程的方式实现rsync服务
#在备份服务器启动 rsync 进程
[root@bakup_server ~]# rsync –daemon #–daemon选项表示启动为守护进程
Failed to parse config file: /etc/rsyncd.conf #一定要要有这个配置文件才能启动成功
[root@bakup_server ~]# touch /etc/rsyncd.conf #需要创建这个配置文件才能正常启动
[root@bakup_server ~]# rsync –daemon #启动rsync守护进程
[root@bakup_server ~]# ss -ntl #守护进程启动后会监听873端口
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 5 0.0.0.0:873 0.0.0.0:*
#设置rsync服务器的同享信息
[root@bakup_server ~]# cat /etc/rsyncd.conf #等号之间可以有空格
[backup] #定义寄存数据同享的名字
path = /bakup #真实的路径,寄存同享文件的路径 (利用rsync将这个目录同享出去,同享出去的名字叫做bakup)
read only = no #指定可读写,默许只读
[root@bakup_server ~]# rsync –daemon #更改问配置文件以后需要重新开启守护进程才会生效
[root@bakup_server ~]# setfacl -m u:nobody:rwx /bakup/ #指定目录给nobody权限,默许用户以nobody访问此目录
使用客户端连接rsync备份服务器:
#格式 rsync rsync://host 或 rsync host::
客户端查看服务器的情况:
[root@data_server ~]# rsync rsync://10.0.0.12 #以协议的情势访问
backup #同享出来的名字
[root@data_server ~]# rsync 10.0.0.12:: #以服务的情势访问
backup
#实现客户端将文件拷贝到rsync同享的目录中
注意:传输的时候不管以谁的身份,都会映照为nobody,所以不用写用户名都行
[root@data_server ~]# rsync /root/anaconda-ks.cfg root@10.0.0.12::backup
[root@bakup_server bakup]# ll
total 8
-rw——- 1 nobody nobody 1526 Oct 24 17:48 anaconda-ks.cfg
-rw-r–r– 1 nobody nobody 658 Oct 24 17:49 fstab
以独立服务方式运行rsync并实现验证功能
rsync-daemon:安装这个软件包以后会提供一个service服务,它会监听自己的独立端口
[root@bakup_server ~]# yum install rsync-daemon
Installed:
rsync-daemon⑶.1.3⑼.el8.noarch
[root@bakup_server ~]# systemctl enable rsyncd.service
Created symlink /etc/systemd/system/multi-user.target.wants/rsyncd.service → /usr/lib/systemd/system/rsyncd.service.
说明:
rsync默许传输文件的时候不需要验证
启用rsync的验证功能的方法:
[root@backup-centos8 ~]#dnf -y install rsync-daemon
#安装服务的时候自动创建rsync服务器的配置文件
[root@centos8 ~]#vi /etc/rsyncd.conf
uid = root #远程用户映照到本机的用户,默许为nobody 指定以哪一个用户来访问同享目录,将之指定为生成的文件所有者,默许为nobody
gid = root #默许为nobody
#port = 874 #可指定非标准端口,默许873/tcp
#use chroot = no
max connections = 0 #不限制最大连接数
ignore errors #如果有些毛病,就跳过这些毛病
exclude = lost+found/ #跳过指定的目录,不去复制
log file = /var/log/rsyncd.log # 日志所在位置
pid file = /var/run/rsyncd.pid # 寄存进程的pid文件
lock file = /var/run/rsyncd.lock # 寄存锁文件
reverse lookup = no # 谢绝反向解析,不把ip解析为主机名
#hosts allow = 10.0.0.0/24 # 允许连接的主机
[backup] #每一个模块名对应一个区别的path目录,如果同名后面模块生效 同享名
path = /data/backup/ #同享的真实路径
comment = backup dir #描写信息
read only = no #默许是yes,即只读
auth users = rsyncuser #默许anonymous可以访问rsync服务器 用于验证的账号,只有这个账号才能去访问
secrets file = /etc/rsync.pas #寄存密码的文件 格式: 用户名: 密码
例如:实现密码验证
[root@CentOS8 ~]# yum install rsync-daemon
[root@CentOS8 ~]# systemctl enable rsyncd –now
[root@CentOS8 ~]# cat /etc/rsyncd.conf
uid = root
gid = root
max connections = 0
ignore errors
exclude = lost+found/
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
reverse lookup = no
[backup]
path = /data/backup/
comment = backup dir
read only = no
auth users = tom
secrets file = /etc/rsync.pas
[root@CentOS8 ~]# systemctl restart rsyncd.service
[root@CentOS8 ~]# mkdir /data/backup/ -p
[root@CentOS8 ~]# echo “tom:redhat” > /etc/rsync.pas
[root@CentOS8 ~]# chmod 600 /etc/rsync.pas
#一定要要修改密码文件权限,不然客户端访问的时候会提示密码毛病
客户端访问:
[root@CentOS8 ~]# rsync /etc/fstab tom@10.0.0.12::backup
Password: #交互输入tom的密码
或:
[root@CentOS8 ~]# rsync /root/anaconda-ks.cfg rsync://tom@10.0.0.12/backup
Password:
注意:不指定用户名默许就是当前系统的用户
可以提早建立一个文件,将密码放在文件中
#非交互式查看同享目录
[root@CentOS8 ~]# echo “redhat” >/etc/rsync.pas #客户端寄存rsync的密码信息
[root@CentOS8 ~]# chmod 600 /etc/rsync.pas #密码文件权限修改(一定要,不然会报错)
测试:
[root@CentOS8 ~]# rsync –password-file=/etc/rsync.pas /root/file111 rsync://tom@10.0.0.12/backup
inotify+rsync+shell 脚本实现实时数据同步
工作原理:
- 要利用监控服务(inotify),监控同步数据服务器目录中信息的变化
- 发现目录中数据产生变化,就利用rsync服务推送到备份服务器上
范例:inotify+rsync+shell 脚本实现实时数据同步
数据服务器:寄存数据信息的服务器 10.0.0.11
备份服务器:寄存备份信息的服务器 10.0.0.12
思路:利用inotidy监控事件会不会产生变化,
[root@CentOS8 ~]# cat inotify_rsync.sh
#!/bin/bash
SRC=’/data/www/’ #需要同步的目录文件 #注意最后的/
DEST=’tom@10.0.0.12::backup’ #同步到备份数据器的指定位置
rpm -q rsync &> /dev/null || yum -y install rsync #如果不存在rsync这个工具就安装它
inotifywait -mrq –exclude=”.*\.swp” –timefmt ‘%Y-%m-%d %H:%M:%S’ –format ‘%T %w %f’ -e create,delete,moved_to,close_write,attrib ${SRC} | while read DATE TIME DIR FILE; do
FILEPATH=${DIR}${FILE} #需要同步的文件
rsync -az –delete –password-file=/etc/rsync.pas $SRC $DEST && echo “At ${TIME} on ${DATE}, file $FILEPATH was backuped up via rsync” >> /var/log/changelist.log
done
#通过DATE TIME DIR FILE 这四个变量记录产生的变化 日期 事件 目录 文件
到此这篇关于Linux利用inotify和rsync服务实现数据实时同步的文章就介绍到这了,更多相关Linux数据实时同步内容请搜索之前的文章或继续浏览下面的相关文章希望大家以后多多支持!
文章来源:丸子建站
文章标题:Linux利用inotify和rsync服务实现数据实时同步的原理解析
https://www.wanzijz.com/view/61536.html