服务器数据同步:rsync远程同步方式功能介绍+实时同步实验

文章目录

        • 前言:
        • 一、rsync 软件介绍
          • 1.1 rsync概述
            • 1.1.1 全量及增量传输
          • 1.2 rsync 功能及特点
          • 1.3 rsync同类服务
        • 二、rsync 实验部分
          • 2.1 rsync命令
          • 2.2 实验环境
            • 2.2.1 实验拓扑
          • 2.3 实验环境配置
          • 2.4 配置rsync源服务器(master节点)
          • 2.5 客户端配置,本地同步与下行同步(slave节点)
            • 2.5.1 rsync源的免密交互处理
            • 2.5.2 rsync 实现同步

前言:

  • rsync(Remote Sync)远程同步,是linux系统下的数据镜像备份工具。使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH、rsync主机同步。

一、rsync 软件介绍

1.1 rsync概述
  • Remote Sync :简称rsync,是一种远程同步,高效的数据备份的工具。第一次备份完全备份,以后备份就是差异备份。
  • scp:secure copy 同样是用来进行远程复制的命令,但是每次备份数据都是完全备份
1.1.1 全量及增量传输
  • 全量:将全部数据,进行传输覆盖
  • 增量:只传输差异部分的数据
1.2 rsync 功能及特点
  • rsync功能
    • 作为命令:实现本地-远程文件同步
    • 作为服务:实现本地-远程文件同步
  • rsync特点
    • 可以镜像保存整个目录树和文件系统
    • 可以保留原有的权限(permission,mode),owner,group,时间(修改时间,modify time),软硬链接,文件acl,文件属性(attributes)信息等
    • 传输效率高,使用同步算法,只比较变化的
    • 支持匿名传输,方便网站镜像;也可以做验证,加强安全
1.3 rsync同类服务
  • sync 同步:刷新文件系统缓存,强制将修改过的数据块写入磁盘,并且更新超级块。
  • async 异步:将数据先放到缓冲区,再周期性(一般是30s)的去同步到磁盘。
  • rsync 远程同步:remote synchronous

二、rsync 实验部分

2.1 rsync命令
  • ① rsync启动命令:rsync --daemon

  • ② rsync关闭命令:kill $(cat /var/run/rsyncd.pid)

  • 同步本地文件系统数据:rsync [选项] 源位置 目标位置

    例如:

#同步本机的fstab文件到/opt目录
rsync /etc/fstab /opt
#同步本地的grub目录到/opt目录
rsync -rl /boot/grub /opt
#如果想要在/opt目录下也创建一个/boot目录,则命令为:
rsync -R rl /boot/grub /opt
  • 下行同步的两种方式(使用客户端将rsync服务器下载的wwwroot共享模块下的内容同步到本地的/opt目录下(共享模块下的真实共享路径需要对other用户具有读取 +r 的权限

    ① 命令格式: 用户名@主机地址::共享模块名,例如:

    ② 命令格式:rync://用户名@主机地址/共享模块名,例如:

  • rsync通过ssh的方式同步

    • 命令与scp命令类似

    • 例如:将本地/opt/test.txt上传到目标服务器/opt目录:

      rsync -avz /opt/test.txt [email protected]:/opt

    • 例如:将目标服务器/opt/test2.txt文件下载到本地/opt目录:

      rsync -avz [email protected]:/opt/test2.txt /opt

2.2 实验环境
  • 准备两个节点
  • master节点 IP地址:192.168.226.128
    • 安装服务:rsync、httpd
  • slave节点 IP地址:192.168.226.132
    • 安装服务:rsync、inotify-tools
2.2.1 实验拓扑

服务器数据同步:rsync远程同步方式功能介绍+实时同步实验_第1张图片

2.3 实验环境配置
  • 修改两个节点的网卡信息
[root@master ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="aaedeee1-b47c-42b0-93be-b7dc40e486e3"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=192.168.226.128
NETMASK=255.255.255.0
GATEWAY=192.168.226.2
DNS1=8.8.8.8

#slave节点IP地址修改为192.168.226.132
  • 关闭防火墙、增强性安全功能
[root@master ~]# systemctl stop firewalld
[root@master ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@master ~]# setenforce 0
[root@master ~]# sed -i  "7s/enforcing/disabled/" /etc/selinux/config
SELINUX=disabled
  • 配置本地yum源(所有服务器)
[root@master ~]# cd /etc/yum.repos.d
[root@master yum.repos.d]# mkdir backup
[root@master yum.repos.d]# mv * backup/
mv: cannot move ‘backup’ to a subdirectory of itself, ‘backup/backup’
[root@master yum.repos.d]# ls
backup
[root@master yum.repos.d]# vim local.repo
[mnt]
name=mnt
baseurl=file:///mnt
gpgcheck=0
enbaled=1
------》wq

[root@master yum.repos.d]# vi /etc/fstab
/dev/cdrom /mnt iso9660 defaults 0 0
[root@master yum.repos.d]# reboot
[root@master yum.repos.d]# yum clean all
[root@master yum.repos.d]# yum makecache
2.4 配置rsync源服务器(master节点)
  • 安装httpd与rsync服务
[root@master yum.repos.d]# yum install httpd rsync -y
  • 修改rsync配置文件
[root@master yum.repos.d]# vi /etc/rsyncd.conf 
uid = nobody
gid = nobody
use chroot = yes						#限制root用户(禁锢在源目录)
address = 192.168.226.128				#监听地址
port 873								#端口号
log file = /var/log/rsyncd.log			#日志文件位置
pid file = /var/run/rsyncd.pid			#pid(运行进程号)文件存放位置
hosts allow = 192.168.226.132			#允许访问的客户端地址(可设置为网段:192.168.226.0/24)
[wwwroot]								#共享模块名称
path = /var/www/html					#源目录的工作路径
comment = Document Root of www.51xit.top
read only =yes     						#开启只读功能
dont comperss = *.gz *.bz2 *.tgz *.zip *.rar *.z	#同步时不在压缩的文件类型
auth users = slave						#授权账户
secrets file = /etc/rsyncd_users.db		#存放账户信息的数据文件
-----》wq
  • 创建用户密码文件
#创建存放账户信息的数据文件
[root@master etc]# vim /etc/rsyncd_users.db
#使用 “用户:密码”的记录形式,每行一个用户记录独立的账户数据,不依赖于系统账号
slave:slave123


#给与权限(root用户读写的权限)
[root@master etc]# chmod 600 /etc/rsyncd_users.db

#查看下源目录的文件权限
[root@master etc]# ll -ld /var/www/html
drwxr-xr-x. 2 root root 6 Aug  4  2017 /var/www/html
  • 启动rsync服务
[root@master etc]# rsync --daemon
[root@master etc]# netstat -natp | grep rsync
tcp        0      0 192.168.226.128:873     0.0.0.0:*               LISTEN      44119/rsync 
  • 在 /var/www/html目录新建文件
[root@master etc]# cd /var/www/html
[root@master html]# touch aaa.html bbb.html
[root@master html]# ls
aaa.html  bbb.html
[root@master html]# echo "aaa.web" >> aaa.html 
[root@master html]# echo "bbb.web" >> bbb.html 
[root@master html]# cat aaa.html 
aaa.web
[root@master html]# cat bbb.html 
bbb.web
2.5 客户端配置,本地同步与下行同步(slave节点)
  • 安装rsync服务
[root@slave yum.repos.d]# yum -y install rsync
  • 在本地文件系统上实现同步
[root@slave yum.repos.d]# cd /opt
[root@slave opt]# ls
rh
#将本机的/etc/fstab文件同步到本机/opt下
[root@slave opt]# rsync /etc/fstab /opt
[root@slave opt]# ls
fstab  rh

#将本机的/boot/grub目录同步到本机/opt下    
[root@slave opt]# rsync -rl /boot/grub /opt
[root@slave opt]# ls
fstab  grub  rh
  • 下行同步的两种方式,密码为slave123
[root@slave opt]# mkdir myweb
#方式一:
[root@slave opt]# rsync -avzH --delete [email protected]::wwwroot /opt/myweb
Password: 
receiving incremental file list
./
aaa.html
bbb.html

sent 99 bytes  received 231 bytes  31.43 bytes/sec
total size is 16  speedup is 0.05
[root@slave opt]# ls /opt/myweb/
aaa.html  bbb.html
[root@slave opt]# cat /opt/myweb/aaa.html 
aaa.web

#方式二:
[root@slave opt]# rsync -avz rsync://[email protected]/wwwroot /root
Password: 
receiving incremental file list
./
aaa.html
bbb.html

sent 99 bytes  received 231 bytes  73.33 bytes/sec
total size is 16  speedup is 0.05
[root@slave opt]# ls /root
aaa.html         bbb.html              下载  图片  桌面  视频
anaconda-ks.cfg  initial-setup-ks.cfg  公共  文档  模板  音乐

2.5.1 rsync源的免密交互处理
  • rsync源的免密交互处理
[root@slave opt]# vim /etc/server.pass
slave123

#密码文件目录指定我们刚刚创建的密码文件,可以实现免密交互[root@slave opt]# rsync -az --delete --password-file=/etc/server.pass [email protected]::wwwroot /opt/myweb
[root@slave opt]# ls myweb/
aaa.html  bbb.html
2.5.2 rsync 实现同步
  • 源端配置
[root@master html]# vim /etc/rsyncd.conf
#关闭只读
read only = no

#关闭rsync服务
[root@master html]# kill `cat /var/run/rsyncd.pid`
[root@master html]# netstat -natp | grep rsync
#开启服务
[root@master html]# rsync --daemon
[root@master html]# netstat -natp | grep rsync
tcp        0      0 192.168.226.128:873     0.0.0.0:*               LISTEN      73382/rsync         
[root@master html]# chmod 777 /var/www/html

#客户机同步的/opt/myweb也需要给与777权限
root@slave opt]# chmod 777 myweb
  • 客户端配置
#查看监控队列大小
[root@master html]# cat /proc/sys/fs/inotify/max_queued_events 
16384
#查看最多监控实例数
[root@master html]# cat /proc/sys/fs/inotify/max_user_instances 
128
#每个实例最多监控文件数
[root@master html]# cat /proc/sys/fs/inotify/max_user_watches 
8192

#调整inotify内核参数
[root@master html]# vim /etc/sysctl.conf 
[root@master html]# sysctl -p
fs.inotify.max_queued_events = 32768
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576
  • 上传inotify内核工具
[root@slave ~]# tar zxvf inotify-tools-3.14.tar.gz -C /opt
[root@slave ~]# cd /opt/inotify-tools-3.14/
[root@slave inotify-tools-3.14]# ls
aclocal.m4    config.h.in   COPYING     libinotifytools  man      src
AUTHORS       config.sub    depcomp     ltmain.sh        missing
ChangeLog     configure     INSTALL     Makefile.am      NEWS
config.guess  configure.ac  install-sh  Makefile.in      README
[root@slave inotify-tools-3.14]# yum install gcc gcc-c++ -y
[root@slave inotify-tools-3.14]# ./configure
[root@slave inotify-tools-3.14]# make && make install
  • 使用远程连接工具新打开一个终端,作为持续监控、实时输出结果
#inotifywait 用于持续监控,实时输出结果
#inotifywatch 用于短期监控,任务完成后再出结果
[root@slave ~]# inotifywait -mrq -e modify,create,move,delete  /opt/myweb

    
#我们可以在客户机上/opt/myweb创建一个文件,然后查看监控信息
[root@slave ~]# vim ccc.html
ccc web
此时可以查看到监控信息中会生成创建ccc.html的操作
  • 源服务器新建持续监控的脚本
[root@slave inotify-tools-3.14]# vim /opt/inotify.sh
[root@slave inotify-tools-3.14]# cat /opt/inotify.sh 
#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e create,delete,move,modify,attrib /opt/myweb/"
RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /opt/myweb/ [email protected]::wwwroot"
 
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
    if [ $(pgrep rsync | wc -l) -le 0 ] ; then
        $RSYNC_CMD
#       echo "${FILE} was rsynced" >>/opt/inotify_rsync.log

    fi
done
----->wq
[root@slave inotify-tools-3.14]# cd /opt/
[root@slave opt]# chmod +x inotify.sh 
#开启脚本,持续监控
[root@slave opt]# ./inotify.sh 
  • 在客户机上的/opt/myweb中创建一个新文件,查看源服务器数据有无上传
#客户机服务器
[root@slave myweb]# vim ddd.html
[root@slave myweb]# cat ddd.html 
ddd web

#源服务器
    
[root@localhost html]# ll
total 16
-rw-r--r--. 1 root   root   8 Mar 27 19:54 aaa.html
-rw-------. 1 nobody nobody 8 Mar 27 20:34 bbb.html
-rw-------. 1 nobody nobody 8 Mar 27 20:34 ccc.html
-rw-------. 1 nobody nobody 8 Mar 27 20:34 ddd.html
[root@localhost html]# cat ddd.html 
ddd web
    
#同步成功 

你可能感兴趣的:(Web集群)