每日课堂笔记day36

实时复制实践:

前提:backup rsync服务端部署好。

1)部署NFS客户端

echo 'export RSYNC_PASSWORD=密码' >>/etc/bashrc##将rsync的密码生成变量追加到bashrc中

source /etc/bashrc##刷新bashrc

echo $RSYNC_PASSWORD##检查变量是否生成

rsync -avz /data [email protected]::backup/##测试推送

inotify实时同步

1)查看inotify支持情况

 uname -r

3.10.0-957.5.1.el7.x86_64

 ls -l /proc/sys/fs/inotify/

总用量 0

-rw-r--r-- 1 root root 0 4月  19 09:45 max_queued_events

-rw-r--r-- 1 root root 0 4月  19 09:45 max_user_instances

-rw-r--r-- 1 root root 0 4月  19 09:45 max_user_watches

2)安装inotify-tools

yum install epel-release -y

yum install inotify-tools -y

3)参数

inotifywait

-m  监听    -r  递归监视目录    -d  变为守护进程    -q  简化输出    -e监听哪些事件 --format 监听的

监听参数

close_write  文件的增与改    delete  文件的删除    move  文件的移动

4)测试实践 

监控哪些事件?

增 改 删 需要监控

inotifywait -mrq --format '%w%f' -e close_write,delete /data

5)编写脚本

#!/bin/bash

export RSYNC_PASSWORD=123456 ##定义rsync匿名用户的密码文件

A =/usr/bin/inotifywait##定义变量inotifywait的全路径

$A -mrq --format '%w%f' -e close_write,delete /data && | \ ##监听data目录的增删改并将结果交给while循环

while read B ##while将上面的监听结果赋值给B

do

[ ! -e "$B" ] && cd /data && \## 判断变量B文件如果不存在继续执行如果存在则执行第二条

rsync -az --delete ./ [email protected]::backup && | continue##如果文件不存在则切换到data目录下并对目录下的所有内容做增量同步

rsync -az --delete $B [email protected]::backup##如果文件存在则把被修改的文件增量同步

done##结束

6)把脚本放入后台守护执行

/bin/bash /server/scripts/inotifywait  &

sersync实时同步

下载路径

wget https://github.com/wsgzao/sersync/blob/master/sersync2.5.4_64bit_binary_stable_final.tar.gz

安装包统一放在/server/tools目录下

安装包解压到 /application/

tree /application/##检查

/application/

└── sersync

    ├── bin

    │   └── sersync

    ├── conf

    │   ├── confxml.xml

    │   └── confxml.xml.ori

    ├── logs

    │   └── rsync_fail_log.sh

    └── readme.txt

4 directories, 5 files

vim  /application/sersync/conf/confxml.xml##sersync的配置文件

4)启动服务

/application/sersync/bin/sersync -d -n 10 -o /application/sersync/conf/confxml.xml##命令行启动

/application/sersync/bin/sersync -d##简化

pkill sersync##关闭服务

参数-d:启用守护进程模式

参数-r:在监控前,将监控目录与远程主机用rsync命令推送一遍

c参数-n: 指定开启守护线程的数量,默认为10个

参数-o:指定配置文件,默认使用confxml.xml文件

参数-m:单独启用其他模块,使用 -m refreshCDN 开启刷新CDN模块

参数-m:单独启用其他模块,使用 -m socket 开启socket模块

参数-m:单独启用其他模块,使用 -m http 开启http模块

不加-m参数,则默认执行同步程序

vim  /etc/rc.local

/application/sersync/bin/sersync -d##设为开机自启

配置:systemctl start sersync启动方案

配置:systemctl start sersync启动方案

vim  /etc/rc.d/init.d/sersync

#!/bin/bash

# chkconfig: 2345 21 81

# description: rsync service start and stop scripts

# Author: oldboy

# Organization: www.oldboyedu.com

start(){

    /application/sersync/bin/sersync -d -o /application/sersync/conf/confxml.xml &>/dev/null

}

stop(){

    killall sersync 2>/dev/null

}

case "$1" in

    start)

        start

        ;;

    stop)

        stop

        ;;

    restart)

        stop

        sleep 2

        start

        ;;

    *)

        echo $"Usage:$0 {start|stop|restart}"

        exit 1

esac

chmod +x /etc/rc.d/init.d/sersync ## 给修改的文件加执行权限

vim /usr/lib/systemd/system/sersync.service

[Unit]

Description=sersyncd service

After=network.target

[Service]

Type=forking         

ExecStart=/etc/rc.d/init.d/sersync start 

ExecReload=/etc/rc.d/init.d/sersync restart

ExecStop=/etc/rc.d/init.d/sersync stop   

PrivateTmp=true

[Install]

WantedBy=multi-user.target

chmod +x /usr/lib/systemd/system/sersync.service  ## 给修改的文件加执行权限

你可能感兴趣的:(每日课堂笔记day36)