Linux服务篇-xinetd服务的Rsync+sersync实现数据实时同步

实时同步有问题了,不要看我的

一、xinetd

xinetd介绍

xinetd(eXtended InterNET services daemon) 扩展因特网服务守护进程
xinetd 超级互联网守护进程(telnet tftp rsync…)
作用: 通过xinetd服务来管理一些功能简单小服务。如: telnet、rsync、 tftp服务等。并为这些服务提供安全访问控制功能。
使用xinet下面的服务时,必须安装xinet,否则凉凉,如果不是最小化安装的话,一般都有
安装:

[root@qianshuiliyu ~]# yum -y install xinetd

配置文件
/etc/xinetd.conf

配置文件的最后面,表示加载配置文件时,还会再加载/etc/xinetd.d目录中的配置文件
在这里插入图片描述

[root@qianshuiliyu ~]# ls /etc/xinetd*
xinetd.conf  xinetd.d/ 

xinetd的功能:

#vim /etc/xinetd.conf
#       no_access        =      不能访问xinetd管理的那些服务的...
#       only_from        =      只能从...访问xinetd管理服务
(IP、192.172.100..0、192.172.200.0/24、.example.com)
          cps            = 50 10     超过50个连接时,暂停10秒
          instances      = 50        同时最大连接数
          per_source     = 10        同一来源的最大连接数
#        bind            = IP        监听IP(在哪个IP上提供服务)

安装被xinetd管理的服务

yum -y install telnet-server tftp-server rsync

二、rsync介绍

1、介绍

RSYNC=Remote Sync远程同步高效,结合shell使用
rsync官网
作者:Andrew Tridgell, Wayne Davison, and others
Andrew Tridgell是Samba项目的领导者和主要开发人员,同时还在参与开发rsync、Linux Kernel

在查看版本的时候可以看到与作者有关的信息

[root@qianshuiliyu ~]# rsync --version
rsync  version 3.0.9  protocol version 30
Copyright (C) 1996-2011 by Andrew Tridgell, Wayne Davison, and others.
Web site: http://rsync.samba.org/
Capabilities:
    64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints,
    socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,
    append, ACLs, xattrs, iconv, symtimes

rsync comes with ABSOLUTELY NO WARRANTY.  This is free software, and you
are welcome to redistribute it under certain conditions.  See the GNU
General Public Licence for details.

rsync可以传递大文件数据,边复制 ,边统计,边比较

可以镜像保存整个目录树和文件系统。 可以很容易做到保持原来文件的权限、时间、软硬链接等等。 无须特殊权限即可安装。 快速:第一次同步时, rsync 会复制全部内容,但在下一次只传输修改过的文件。
压缩传输:rsync 在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的带宽。
安全:可以使用scp、ssh等方式来传输文件,当然也可以通过直接的socket连接。 支持匿名传输,以方便进行网站镜象。
选择性保持:符号连接,硬链接,文件属性,权限,时间等

运行模式:C/S模式(客户端/服务端模式)
端口:873

2、备份分类

完整备份,差异备份,增量备份
完整备份:每次备份都是从备份源将所有的文件或目录备份到目的地
差量备份:备份上次完全备份以后有变化的数据(他针对的上次的完全备份,他备份过程中不清除存档属性)
增量备份:备份上次备份以后有变化的数据.(他才不管是那种类型的备份,有变化的数据就备份,他会清除存档属性)

3、发起端和备份源

发起端:负责发起rsync同步操作的客户机叫做发起端,通知服务器我要备份你的数据
备份源:负责相应来自客户机rsync同步操作的服务器脚在备份源,需要备份的服务器
服务端:运行rsyncd服务,一般来说,需要备份的服务器
客户端:存放备份数据

4、数据同步方式

推push:一台主机负责把数据传送给其他主机,服务器开销很大,比较适合后端服务器少的情况
拉pull:所有主机定时去找一主机拉数据,可能就会导致数据缓慢
推:目的主机配置为rsync服务器,源主机周期性的使用rsync命令把要同步的目录推过去(需要备份的机器是客户端,存储备份的机器是服务端)(主动交作业)
拉:源主机配置为rsync服务器,目的主机周期性的使用rsync命令把要同步的目录拉过来(需要备份的机器是服务端,存储备份的机器是客户端)(强行收作业)

5、xinetd对rsync管理

在这里插入图片描述
使用rsync来同步是先通过xinetd监听873号端口,如果rsync进来的是873号端口,xinetd就会通知它所对应的服务(rsync)来做回应,之后就是rsync俩服务于之间的通信

6、rsync

[root@qianshuiliyu ~]# vim /etc/xinetd.d/rsync
#没有不管

开启rsync服务

[root@qianshuiliyu ~]#  rsync --daemon
# 启动,以进程的方式启动,端口873
[root@qianshuiliyu ~]# netstat -auntl |grep 873
tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN     
tcp6       0      0 :::873                  :::*                    LISTEN
============================================================
# 6版本
 /etc/xinetd.d/rsync
 将配置文件的disable	= yes	改为disable	= no
 chkconfig rsync on   #开启rsync服务
 查看端口:netstat  -antup | grep 873

7、rsync的命令

常用的参数:avz

参数作用
-a- - archive archive mode 权限保存模式,相当于 -rlptgoD 参数,存档,递归,保持属性等
-v- -verbose 复杂的输出信息
-z- -compress 压缩模式, 当资料在传送到目的端进行档案压缩.
- -port=PORT定义rsyncd(daemon)要运行的port(预设为tcp 873)
- -delete删除那些目标位置有的文件而备份源没有的文件
- -password-file=FILE从 FILE 中得到密码
-r- -recursive 复制所有下面的资料,递归处理
-p- -perms 保留档案权限 ,文件原有属性
-t- -times 保留时间点,文件原有时间
-g- -group 保留原有属组
-o- -owner 保留档案所有者(root only)
-D- -devices 保留device资讯(root only)
-l- -links 复制所有的连接 ,拷贝连接文件
-H- -hard-links 保留硬链接文件
-A- -acls 保留ACL属性文件,需要配合–perms
-p-P参数和 --partial --progress 相同.只是为了把参数简单化,表示传进度
- -version输出rsync版本
-u–update 仅仅进行更新,也就是跳过已经存在的目标位置,并且文件时间要晚于要备份的文件,不覆盖新的文件
- -bwlimit=KBPS限制 I/O 带宽
- -filter “-filename”需要过滤的文件
- -exclude=filname需要排除的文件
- -progress显示备份过程

三、rsync进行数据备份

1、系统用户备份

1、测试:创建一个目录,复制一些数据,将目录进行备份
使用普通用户,没有就创建一个

客户端
[root@qianshuiliyu ~]# mkdir /shuju
[root@qianshuiliyu ~]# cp /etc/passwd /etc/shadow /shuju/
[root@qianshuiliyu ~]# useradd user1;echo user1:123456|chpasswd 
[root@qianshuiliyu ~]# ls /shuju/
passwd  shadow
============================================================
服务端
[root@qianshuiliyu ~]# useradd user1 ;echo user1:123456|chpasswd 
[root@qianshuiliyu ~]# mkdir /shuju/

对目录设置权限
设置ACL权限在不改变属主属组的情况下添加权限
服务器(备份服务器)也要进行目录的权限设置

[root@qianshuiliyu ~]# setfacl -R  -m user:user1:rwx /shuju/
# 利用规则,给这个文件添加user1用户的权限,使用getfacl查看
[root@qianshuiliyu ~]# getfacl /shuju/
getfacl: Removing leading '/' from absolute path names
# file: shuju/
# owner: root
# group: root
user::rwx
user:user1:rwx
group::r-x
mask::rwx
other::r-x
============================================================
在服务器上修改权限
[root@qianshuiliyu ~]# chown user1:user1 -R /shuju/
[root@qianshuiliyu ~]# ll -d /shuju/
drwxrwxr-x+ 2 user1 user1 32 9月  22 17:45 /shuju/

进行备份

[root@qianshuiliyu shuju]#  rsync -avz --delete /shuju/ user1@192.172.168.200:/shuju/
user1@192.172.168.200's password: 
sending incremental file list
./
passwd
shadow

sent 1377 bytes  received 53 bytes  260.00 bytes/sec
total size is 3120  speedup is 2.18

查看(在服务端)

[root@qianshuiliyu ~]# ls /shuju/
passwd  shadow

拉模式

[root@qianshuiliyu shuju]# rsync -avz user1@192.172.168.200:/shuju/ /shuju/
user1@192.172.168.200's password: 
receiving incremental file list
./
ni/

sent 27 bytes  received 139 bytes  36.89 bytes/sec
total size is 3278  speedup is 19.75

2、非系统用户备份配置文件说明

系统通过rsync的配置文件。/etc/rsync来进行数据备份,创建备份账户,最后把rsync以deamon(后台)方式运行,配置文件里面是一个模板,我们需要手动去写入配置,如果配置文件不存在就得手动创建
配置分为:全局参数,局部参数
全局参数通常是在上面的,局部的参数以“[名字]”格式,其下面是参数,服务器同步的数据是通过 path 来指定的,必须要有
在这里插入图片描述

全局参数说明
port指定后台程序使用的端口号,默认为873
uid该选项指定当该模块传输文件时守护进程应该具有的uid,配合gid选项使用可以确定哪些可以访问怎么样的文件权限,默认值是" nobody"
gid该选项指定当该模块传输文件时守护进程应该具有的gid。默认值为" nobody"
max connections指定该模块的最大并发连接数量以保护服务器,超过限制的连接请求将被告知随后再试。默认值是0,就是没有限制
use chroot是否囚牢,锁定家目录,rsync被黑之后,黑客无法再rsync运行的家目录之外创建文件,选项设置为yes
lock file指定支持max connections参数的锁文件,默认值是/var/run/rsyncd.lock
motd file" motd file"参数用来指定一个消息文件,当客户连接服务器时该文件的内容显示给客户,默认是没有motd文件的,需要手动创建
log file" log file"指定rsync的日志文件,而不将日志发送给syslog
pid file指定rsync的pid文件,通常指定为“/var/run/rsyncd.pid”,存放进程ID的文件位置
hosts allow单个IP地址或网络地址 ,允许访问的客户机地址
局部参数说明
comment给模块指定一个描述,该描述连同模块名在客户连接得到模块列表时显示给客户。默认没有描述定义
Path指定该模块的供备份的目录树路径,该参数是必须指定的
read onlyyes为只允许下载,no为可以下载和上传文件到服务器,设置服务端文件读写权限
exclude用来指定多个由空格隔开的多个文件或目录(相对路径),将其添加到exclude列表中。这等同于在客户端命令中使用―exclude或----filter来指定某些文件或目录不下载或上传(既不可访问)
exclude from指定一个包含exclude模式的定义的文件名,服务器从该文件中读取exclude列表定义,每个文件或目录需要占用一行
include用来指定不排除符合要求的文件或目录。这等同于在客户端命令中使用–include来指定模式,结合include和exclude可以定义复杂的exclude/include规则
include from指定一个包含include模式的定义的文件名,服务器从该文件中读取include列表定义
auth users该选项指定由空格或逗号分隔的用户名列表,只有这些用户才允许连接该模块。这里的用户和系统用户没有任何关系。如果" auth users"被设置,那么客户端发出对该模块的连接请求以后会被rsync请求challenged进行验证身份这里使用的challenge/response认证协议。用户的名和密码以明文方式存放在" secrets file"选项指定的文件中。默认情况下无需密码就可以连接模块(也就是匿名方式)。
secrets file该选项指定一个包含定义用户名:密码对的文件。只有在" auth users"被定义时,该文件才有作用。文件每行包含一个username:passwd对。一般来说密码最好不要超过8个字符。没有默认的secures file名,注意:该文件的权限一定要是600,否则客户端将不能连接服务器
hosts allow指定哪些IP的客户允许连接该模块。定义可以是以下形式: 单个IP地址,例如:192.168.0.1,多个IP或网段需要用空格隔开 ,整个网段,例如:192.168.0.0/24,也可以是192.168.0.0/255.255.255.0,“*”则表示所有,默认是允许所有主机连接
address监听地址
hosts deny指定不允许连接rsync服务器的机器,可以使用hosts allow的定义方式来进行定义。默认是没有hosts deny定义
list该选项设定当客户请求可以使用的模块列表时,该模块是否应该被列出(是否允许查看模块信息yes/no也行)。如果设置该选项为false,可以创建隐藏的模块。默认值是true
timeout通过该选项可以覆盖客户指定的IP超时时间。通过该选项可以确保rsync服务器不会永远等待一个崩溃的客户端。超时单位为秒钟,0表示没有超时定义,这也是默认值。对于匿名rsync服务器来说,一个理想的数字是600

3、实战:非系统用户备份

配置文件修改

修改配置文件
uid = root
gid = root
address = 192.172.168.100
port = 873
hosts allow = 192.172.168.0/24
use chroot = yes
max connections = 4
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lockd.lock
log file =  /var/log/rsyncd.log
motd file = /etc/rsync.motd

[backa] #客户端根据模块名字进行查找
path = /shuju/
comment = feiXiTongBeiFen #描述
read only = false
list = yes
auth users =feixitong #备份的用户,与系统用户无关
secrets file = /etc/rsync.passwd #密码文件

设置打印信息以及密码和权限,权限特别重要,有问题就凉凉

[root@qianshuiliyu ~]# echo "欢迎来到备份服务" > /etc/rsync.motd
[root@qianshuiliyu ~]# vim /etc/rsync.passwd
feixitong:123456
[root@qianshuiliyu ~]# chmod 600 /etc/rsync.passwd 
# 权限不设置是不行的,身份验证会是失败的 ,600或700

重启

[root@qianshuiliyu ~]# systemctl restart xinetd.service
[root@qianshuiliyu ~]# systemctl enable xinetd.service   

此时的配置文件没有加载,需要手动加载
在这里插入图片描述

拿掉这个进程在加载
[root@qianshuiliyu ~]# kill -9 3525
[root@qianshuiliyu ~]# rsync --daemon --config=/etc/rsyncd.conf

在这里插入图片描述
在这里插入图片描述
在客户端进行操作
测试,rsync
语法: rsync [选项参数] [用户名@备份源服务器IP::共享模块名] [目标目录]
如果出现问题,根据日志去查看,找问题

[root@qianshuiliyu ~]# rsync -avz --delete /shuju/ feixitong@192.172.168.100::backa
欢迎来到备份服务

Password: 
sending incremental file list
./
hosts
passwd

sent 996 bytes  received 52 bytes  299.43 bytes/sec
total size is 3278  speedup is 3.13

不输入密码进行登录,在客户端操作,使用–password-file指定密码路径
创建密码文件

[root@qianshuiliyu ~]# vim /etc/rsync.passwd 
123456789
修改权限
[root@qianshuiliyu ~]# chmod 600 /etc/rsync.passwd 

[root@qianshuiliyu ~]# rsync -avz /shuju/ feixitong@192.172.168.100::backa --password-file=/etc/rsync.passwd
欢迎来到备份服务

sending incremental file list
# 因为没有数据更新,所以没显示数据
sent 89 bytes  received 8 bytes  194.00 bytes/sec
total size is 3278  speedup is 33.79

添加脚本使用

创建脚本
[root@qianshuiliyu ~]# vim back.sh
#!/bin/bash
rsync -avz --delete /shuju/
feixitong@192.172.168.100::backa --password-file=/etc/rsync.passwd

在这里插入图片描述

给脚本添加权限,执行

[root@qianshuiliyu ~]# chmod +X back.sh 


[root@qianshuiliyu ~]# bash back.sh 
欢迎来到备份服务

sending incremental file list
./
hosts

sent 190 bytes  received 30 bytes  146.67 bytes/sec
total size is 3278  speedup is 14.90

四、Rsync+sersync实现数据实时同步

介绍:sersync是基于inotify开发的,类似于inotify-tools的工具
sersync可以记录下被监听目录中发生变化的(包括增加、删除、修改)具体某一个文件或者某一个目录的名字,然后使用rsync同步的时候,只同步发生变化的文件或者目录

原理

rsync+inotify-tools与rsync+sersync架构的区别?

rsync+inotify-tools
inotify只能记录下被监听的目录发生了变化(增,删,改),只知道发生了变化,不知道是哪里,
rsync在同步的时候,并不知道具体是哪个文件或目录发生了变化,每次都是对整个目录进行同步,当数据量很大时,整个目录同步非常耗时(rsync要对整个目录遍历查找对比文件),因此效率很低

rsync+sersync
sersync可以记录被监听目录中发生变化的(增,删,改)具体某个文件或目录的名字;
rsync在同步时,只同步发生变化的文件或目录(每次发生变化的数据相对整个同步目录数据来说很小,rsync在遍历查找对比文件时,速度很快),因此效率很高。

原理

同步过程

  1. 在同步服务器上开启sersync服务,sersync负责监控配置路径中的文件系统事件变化;
  2. 调用rsync命令把更新的文件同步到目标服务器;
  3. 需要在主服务器配置sersync,在同步目标服务器配置rsync server(注意:是rsync服务)

同步过程和原理:

  1. 用户实时的往sersync服务器上写入更新文件数据;
  2. 此时需要在同步主服务器上配置sersync服务;
  3. 在另一台服务器开启rsync守护进程服务,以同步拉取来自sersync服务器上的数据; 通过rsync的守护进程服务后可以发现,实际上sersync就是监控本地的数据写入或更新事件;然后,在调用rsync客户端的命令,将写入或更新事件对应的文件通过rsync推送到目标服务器

通俗点说就是sersync服务端当做客户端来使用,另一端(目标机)(rsync服务端)当服务器来使用

2、安装

需要在网上下载一个sersync的安装包上传到系统之中,解压进行安装

解压

在这里插入图片描述
解压目录
在这里插入图片描述

解压的目录里面的内容,只有配置文件和启动文件
在这里插入图片描述

备份处理

[root@qianshuiliyu GNU-Linux-x86]# cp confxml.xml confxml.xml.bac

3、配置文件

密码的权限设置重中之重,没设置会出问题的
配置文件
在这里插入图片描述
修改文件
描述
可以复制设置多个配置文件目录进行不同服务的同步,然后执行

4、同步启动执行

在执行的时候注意当前目录,你的位置和服务的位置,不在就从根目录开始写起
在这里插入图片描述

实施实时同步
使用watch命令查看实时同步变化

[root@qianshuiliyu shuju]# watch ls -l

在这里插入图片描述

5、开机启动

[root@qianshuiliyu shuju]# vim /etc/rc.d/rc.local 
# 添加下面的内容
/usr/local/sersync/sersync2 -d -r -o  /usr/local/sersync/confxml.xml

可以复制设置多个配置文件目录进行不同服务的同步,根据不同的需求进行同步所对应的文件
比如web

[root@qianshuiliyu ~]# /usr/local/sersync/sersync2  -d -o /usr/local/sersync/web_confxml.xml

检查sersync

检查是否正常

[root@qianshuiliyu ~]# vim chech-sersync.sh
ersync="/opt /sersync/sersync2"
confxml="/opt /sersync/confxml.xml"
status=$(ps aux |grep 'sersync2'|grep -v 'grep'|wc -l)
if [ $status -eq 0 ];
then
$sersync -d -r -o $confxml &
else
exit 0;
fi

添加权限,执行

[root@qianshuiliyu ~]# chmod +x chech-sersync.sh 

[root@qianshuiliyu ~]# bash chech-sersync.sh 

可以添加到计划任务里面,进行定期维护

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浅水鲤鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值