zoukankan      html  css  js  c++  java
  • 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
    

  • 相关阅读:
    移动端1px问题
    js几种数组排序及sort的实现
    从零开始搭建vue移动端项目到上线
    Maven项目常见错误解决方法汇总
    重读《Java编程思想》
    ubuntu开发环境下eclipse的alt+/自动补全功能不能用
    Linux环境下解压rar文件
    Ubuntu 16.04下deb文件的安装
    优化Ubuntu 16.04系统的几件事
    Ubuntu16.04 安装 “宋体,微软雅黑,Consolas雅黑混合版编程字体” 等 Windows 7 下的字体
  • 原文地址:https://www.cnblogs.com/zhaokunhao/p/14686858.html
Copyright © 2011-2022 走看看