第2章 使用rsync实现服务器数据备份

rsync原理,采用c/s 客户端/服务器模式,采用rsync命令完成一个点到点的传输,rsync监听端口:873

上图表示了,客户端向服务器发送指令拉取服务器的数据存储在客户端上进行备份的过程。
使用 rsync 来同步是先通过 xinetd 监听 873 号端口,如果 rsync 进来的是 873 号端口,那么 xinetd
就会通知它所管辖的 rsync 服务来做回应,接下来就是 rsync 俩服务之间的通讯

系统用户备份数据

A主机 192.168.0.63

B主机 192.168.0.64

由于 rsync 服务依赖 xinetd 服务,是使用超级服务来管理的,因此需要在目标机器上安装 xinetd、rsync 服务端。

A主机 yum -y install xinetd rsync 
B主机 yum -y install xinetd rsync
B主机 rsync --daemon 
B主机 netstat -antup | grep 873 #查看 873 端口是否监听
A主机 useradd rgetA && echo "123456" |passwd --stdin rgetA
B主机 useradd rgetB && echo "123456" |passwd --stdin rgetB

A主机 mkdir /var/www/html/ -p
A主机 setfacl -R -m user:rget1:rwx /var/www/html/
A主机 setfacl -R -m default:rget1:rwx /var/www/html/
A主机 getfacl /var/www/html

A主机 cp -r /boot/* /var/www/html/
B主机 mkdir /web-back
B主机 chown rgetB:rgetB -R /web-back/

A主机 rsync -avz /var/www/html/ rgetB@192.168.0.64:/web-back/
输入yes,输入rgetB用户密码
如果ssh端口改变了,则输入如下格式
A主机 rsync -avz /var/www/html/ -e "ssh -p 端口号" rget1@192.168.0.64:/web-back/
B主机 查看/web-back/目录内容是否同步A主机的/var/www/html相同

rsync  目标主机  本地文件夹位置  为拉
rsync -avz rsyncuser@192.168.0.64::wwwroot /var/www/html --password-file=/etc/rsync.passwd
rsync  本地文件夹位置 目标主机   为推
rsync -avz /var/www/html rsyncuser@192.168.0.64::wwwroot --password-file=/etc/rsync.passwd

--delete:删除那些目标主机有的文件而本地文件夹没有的文件,比如本地没有1.txt,目的主机有1.txt,则删除目的主机的1.txt
rsync -avz --delete /var/www/html/ rsyncuser@192.168.0.64::wwwroot --password-file=/etc/rsync.passwd

使用非系统用户备份数据

使用非系统用户进入备份数据,依靠系统中的 rsync 配置文件/etc/rsyncd.conf 进行备份数据,并创建备份账户,最终把 rsync 以 deamon 方式运行。
配置文件分为两部分:全局参数、模块参数。
全局参数:对 rsync 服务器生效,如果模块参数和全局参数冲突,冲突的地方模块参数最终生效

rsync配置文件 vim /etc/rsyncd.conf ,文件不存在,需手动创建

对中文支持不好,必须把注释删除才可以

A主机客户端 192.168.0.63

B主机服务器 192.168.0.64

以下为B主机服务器的/etc/rsyncd.conf内容

# /etc/rsyncd: configuration file for rsync daemon mode

# See rsyncd.conf man page for more options.

# configuration example:

# uid = nobody
# gid = nobody
# /etc/rsyncd: configuration file for rsync daemon mode

# See rsyncd.conf man page for more options.

# configuration example:

# uid = nobody
# gid = nobody
# use chroot = yes
# max connections = 4
# pid file = /var/run/rsyncd.pid
# exclude = lost+found/
# transfer logging = yes
# timeout = 900
# ignore nonreadable = yes
# dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2

# [ftp]
#        path = /home/ftp
#        comment = ftp export area
uid = root
gid = root
address=192.168.0.64
port=873
hosts allow =192.168.0.0/24
use chroot = yes
max connections =5
pid file =/var/run/rsyncd.pid
lock file =/var/run/rsync.lock
log file=/var/log/rsyncd.log
motd file=/etc/rsyncd.motdc
[wwwroot]
path =/var/www/html/
comment = used for varwwwhtml
read only = false
list = yes
auth users = rsyncuser
secrets file = /etc/rsync.passwd

read only = false 只读权限为假,为真,就是只读了。

hosts allow = 多个IP用空格隔开

max connections=  设置最大连接数,默认0,意思无限制,负值为关闭这个模块

address=  填写本机IP

非系统用户方式进行同步,不受ssh端口影响 ,因为没有使用ssh协议

创建登录提示文件,echo "Welcome to Backup Server" > /etc/rsyncd.motd

创建密码文件,vim /etc/rsync.passwd

服务端要有用户名:密码 rsyncuser:password123

客户端要有密码  password123,--password-file=/etc/rsync.passwd  读取客户端文件里的密码,进行自动输入,如果等于服务端里的密码,代表密码正确,能够登录成功。所以客户端文件里的密码必须等于服务端里的密码。

[root@centos-63 ~]# chmod 600 /etc/rsync.passwd  给密码文件设置权限600

 

B主机服务器启动服务 systemctl start xinetd
B主机服务器 rsync --daemon --config=/etc/rsyncd.conf #加载配置文件 rsyncd.conf 启动 rsync 服务。
B主机服务器 netstat -antup | grep :873  #查看 873 端口是否监听。
rsync 语法:rsync 选项 用户名@备份源服务器 IP::共享模块名 目标目录
A客户端向B服务端进行拉操作  rsync -avz rsyncuser@192.168.0.64::wwwroot /var/www/html
A客户端向B服务端进行拉操作,不用输入密码
rsync -avz rsyncuser@192.168.0.64::wwwroot /var/www/html --password-file=/etc/rsync.passwd

脚本实现定时自动备份
vim autobackup.sh
rsync -avz rsyncuser@192.168.0.64::wwwroot /var/www/html  --password-file=/etc/rsync.passwd
rsync -avz /var/www/html rsyncuser@192.168.0.64::wwwroot   --password-file=/etc/rsync.passwd
chmod +x autobackup.sh
echo "01 3 * * * sh /root/autoback.sh &" >> /var/spool/cron/root

 

sersync +rsync实现数据实时同步

sersync下载安装地址  https://download.csdn.net/download/workey/12709725

数据实时同步不适用于备份的情况,因为A主机删除或修改文件,B主机也会同步删除和修改文件。

主机A 装sersync (数据源,源机器)192.168.0.63

主机B装rsync (备份端,目标机器)192.168.0.64

实验结果:主机A进行新增,修改,删除文件的操作,文件或目录发生了变化,主机B会实时同步发生变化的文件或目录。rsync同步的时候是对整个目录进行同步,数据量大时,效率低,sersync可以监控变化的文件,配合rsync只同步变化的文件,效率提高。

同步过程

  • 在主机A开启sersync服务,配置sersync,sersync会监控配置文件路径中的文件变化
  • A主机调用rsync客户端命令把变化的文件同步到B主机
  • 在B主机配置rsync服务,用来接收A主机的推送命令

A主机解压 tar -xzvf sersync2.5.4.tar.gz -C /opt

把目录改名 mv GNU-Linux-x86 sersync

进入目录 cd /opt/sersync

备份配置文件 cp confxml.xml confxml.xml.bak

修改配置文件  vim confxml.xml

<sersync>
<localpath watch="/var/www/html"> #本地同步数据目录。
<remote ip="B主机ip地址" name="wwwroot"/> #B主机rsync 模块名称
users="B主机/etc/rsyncd.conf配置文件中的auth users值"

passwordfile="B主机/etc/rsyncd.conf配置文件中的secrets file值"

A主机/opt/sersync/confxml.xml配置文件如下图

 

B主机/etc/rsyncd.conf配置文件如下图

A主机 加载配置文件并启动 /opt/sersync/sersync2 -d -r -o /opt/sersync/confxml.xml

A主机检查sersync是否运行  ps aux | grep 'sersync'|grep -v 'grep'

A主机sersync成功运行后,B主机的/var/www/html目录下输入 watch ls -l 进行观察

A主机的/var/www/html目录下新建或删除文件等操作,B主机查看同步效果

设置sersync开机自动执行

vi /etc/rc.d/rc.local

/opt/sersync/sersync2 -d -r -o /opt/sersync/confxml.xml

添加脚本监控 sersync 是否正常运行

vim check_sersync.sh

#!/bin/bash
sersync="/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
echo "$sersync已运行无需再次运行"
exit 0;
fi

给脚本添加执行权限,并添加到定时任务,每周一执行(分,时,日,月,周)

chmod +x /opt /check_sersync.sh

crontab -e

* * * * 1 /opt/check_sersync.sh

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值