05 nfs、rsync、inotify综合案例

backup

用于备份nfs服务器中的/data目录,是rsync的服务端

#安装rsync
yum install rsync -y

#写配置文件(/etc/rsyncd.conf)
vim /etc/rsyncd.conf
uid = rsync
gid = rsync
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 600
ignore errors
read only = false
list = false
auth users = baimo
secrets file = /etc/rsync.passwd
log file = /var/log/rsyncd.log

[backup]
comment = welcome to my backup!
path = /backup

#增加用户
[root@backup ~]# useradd rsync -s /sbin/nologin -M

#创建密码文件并授权
[root@backup ~]# echo "baimo:123" > /etc/rsync.passwd
[root@backup ~]# chmod -R 600 /etc/rsync.passwd

#创建备份目录并授权
[root@backup ~]# mkdir /backup
[root@backup ~]# chown -R rsync.rsync /backup

#启动服务并验证
[root@backup ~]# systemctl start rsyncd
[root@backup ~]#  netstat -lntp | grep 873
tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      1812/rsync          
tcp6       0      0 :::873                  :::*                    LISTEN      1812/rsync

nfs

用于存放共享的文件,通过inotify+rsync推送给backup,是rsync的服务端

#安装rsync
yum install rsync nfs-utils rpcbind -y

#编辑密码文件
[root@nfs ~]# echo "export RSYNC_PASSWORD=123" > /etc/profile.d/HJBL.sh
#重启客户端让文件生效

#创建/data目录并统一www用户
[root@nfs ~]# mkdir /data
[root@nfs ~]# groupadd www -g 666
[root@nfs ~]# useradd www -u 666 -g 666
[root@nfs ~]# chown -R www.www /data

#编写inotify脚本
#!/bin/bash
#实时推送备份文件脚本

export RSYNC_PASSWORD=123

dir=/data   #监控的文件
inotifywait -mrq --format '%Xe %w %f' -e create,modify,delete,attrib,close_write ${dir} | while read line; do rsync -avz /data baimo@192.168.15.41::backup; done &>/dev/null &

#测试
#nfs端
[root@nfs ~]# bash inotify_rsync.sh 
[root@nfs ~]# cd /data && touch a.txt
#backup端
[root@backup ~]# cd /backup/
[root@backup backup]# ll
total 0
drwxr-xr-x 2 rsync rsync 32 Apr 21 19:37 data
[root@backup backup]# cd data/
[root@backup data]# ll
total 0
-rw-r--r-- 1 rsync rsync 0 Apr 21 19:34 1.txt
-rw-r--r-- 1 rsync rsync 0 Apr 21 19:37 a.txt
---------------------rsync配置结束,可以同步,下面是NFS---------------------

#编写配置(/etc/exports)
vim /etc/exports
/data 192.168.15.0/24(rw,sync,all_squash,anonuid=666,anongid=666)

#检查配置
[root@nfs ~]# systemctl restart nfs
[root@nfs ~]# cat /var/lib/nfs/etab
/data	192.168.15.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=666,anongid=666,sec=sys,rw,secure,root_squash,all_squash)

web01,web02

服务器,是NFS的客户端,两个操作一样

#配置nginx官方源
[root@web01 ~]# cat >/etc/yum.repos.d/nginx.repo<<EOF
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
EOF
[root@web01 ~]# yum clean all && yum makecache

#安装nginx和nfs
yum install nginx nfs-utils rpcbind -y

#启动rpcbind和nfs
[root@web02 ~]# systemctl start rpcbind nfs

#查看挂载点
[root@web01 ~]# showmount -e 192.168.15.31
Export list for 192.168.15.31:
/data 192.168.15.0/24

#统一用户权限/
[root@web01 ~]# groupadd www -g 666
[root@web01 ~]# useradd www -u 666 -g 666  
[root@web01 ~]# chown -R www.www /usr/share/nginx/html

#挂载
[root@web01 ~]# mount -t nfs 192.168.15.31:/data /usr/share/nginx/html

#检查挂载
[root@web02 ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                 475M     0  475M   0% /dev
tmpfs                    487M     0  487M   0% /dev/shm
tmpfs                    487M  7.6M  479M   2% /run
tmpfs                    487M     0  487M   0% /sys/fs/cgroup
/dev/mapper/centos-root   99G  2.6G   97G   3% /
/dev/sda1               1014M  163M  852M  17% /boot
tmpfs                     98M     0   98M   0% /run/user/0
192.168.15.31:/data       99G  2.6G   97G   3% /usr/share/nginx/html

#测试权限是否满足
#拉取代码到/usr/share/nginx/html下,并解压
[root@web01 html]# unzip kaoshi.zip 
Archive:  kaoshi.zip
  inflating: index.html              
  inflating: info.php                
  inflating: upload_file.php         
[root@web01 html]# ll
total 16
-rw-r--r-- 1 www www 2633 May  4  2018 index.html
-rw-r--r-- 1 www www   52 May 10  2018 info.php
-rw-r--r-- 1 www www 2434 Apr 21 17:19 kaoshi.zip
-rw-r--r-- 1 www www 1192 Jan 10  2020 upload_file.php

#web02只需要重复上述步骤到挂载即可

访问并查看两个服务器

[root@web02 ~]# systemctl start nginx

原文地址:https://www.cnblogs.com/zhaokunhao/p/14686858.html