第16周做业

一、描述rsyslog日志服务,并提供带web展现的日志服务器php

  rsyslog日志服务简介html

1、rsyslog是一个C/S架构的服务,可监听于某套接字,帮其它主机记录日志信息,在linux系统中能够分类两个日志:
    klogd:kernel,记录内核相关的日志
   ​ syslogd:service,记录应用程序的日志

rsyslog:是CentOS 6之后的系统使用的日志系统,与以前的syslog日志系统相比,具备如下优势:
   ​ 支持多线程
   ​ 支持TCP、SSL、TLS、RELP等协议
   ​ 强大的过滤器,可实现过滤日志信息中的任意部分
   ​ 支持自定义输出格式
   ​ 适用于企业级别日志记录需求
   ​ 模块化

程序包:rsyslog
主程序:/usr/sbin/rsyslogd
CentOS 6:service rsyslog {start|stop|restart|status}
CentOS 7:/usr/lib/systemd/system/rsyslog.service
配置文件:/etc/rsyslog.conf,/etc/rsyslog.d/*.conf
库文件: /lib64/rsyslog/*.so
配置文件格式:由三部分组成
    MODULES:相关模块配置
    GLOBAL DIRECTIVES:全局配置
    RULES:日志记录相关的规则配置node

启用网络日志服务
    一般的日志格式:
        事件产生的日期时间 主机 进程(pid):事件内容
        如: /var/log/messages,cron,secure等
    配置rsyslog成为日志服务器
        #### MODULES ####
        # Provides UDP syslog reception
        $ModLoad imudp
        $UDPServerRun 514
        # Provides TCP syslog reception
        $ModLoad imtcp
        $InputTCPServerRun 514mysql

    其它的日志文件
       /var/log/secure:系统安装日志,文本格式,应周期性分析
       /var/log/btmp:当前系统上,用户的失败尝试登陆相关的日志信息,二进制格式
         lastb命令进行查看
         lastb -f /root/btmp # 打开btmp文件
      > /var/log/btmp # 清空btmp文件
    /var/log/wtmp:当前系统上,用户正常登陆系统和启动、重启等相关日志信息,二进制格式
      last命令能够查看
    /var/log/lastlog:每个用户最近一次的登陆信息,二进制格式
      lastlog命令能够查看
    /var/log/dmesg:系统引导过程当中的日志信息,文本格式
      文本查看工具查看
      专用命令dmesg查看
    /var/log/messages :系统中大部分的信息
    /var/log/anaconda : anaconda的日志linux

配置rsyslog将日志记录于MySQL中
    202的日志存放到203的mysql中
    (1) 准备MySQL Server
    (2) 在mysql server上受权rsyslog能链接至当前服务器
        GRANT ALL ON Syslog.* TO 'USER'@'HOST' IDENTIFIED BY 'PASSWORD';
        grant all  on Syslog.* to syslog@'10.0.0.202' identified by '123456';
    (3) 在rsyslog服务器202上安装mysql模块相关的程序包
        yum install rsyslog-mysql
        rpm -ql rsyslog-mysql
            /usr/lib64/rsyslog/ommysql.so                        # 模块
            /usr/share/doc/rsyslog-8.24.0/mysql-createDB.sql     # rsyslog建表语句
    (4) 为rsyslog建立数据库及表;
            scp /usr/share/doc/rsyslog-8.24.0/mysql-createDB.sql root@10.0.0.203:/root
            或
            mysql < mysql-createDB.sql
            mysql -uUSERNAME -hHOST -pPASSWORD < /usr/share/doc/rsyslog-8.24.0/mysql-createDB.sql
    (5) 配置rsyslog将日志保存到mysql中
        vim /etc/rsyslog.conf
            #### MODULES ####
            $ModLoad ommysql 
            #### RULES ####
            #facility.priority :ommysql:DBHOST,DBNAME,DBUSER, PASSWORD    
            *.info;mail.none;authpriv.none;cron.none;local0.none                :ommysql:10.0.0.203,Syslog,syslog,123456

搭建lamp,使用loganalyzer web收集、展现日志ios

(1) 在rsyslog服务器上准备amp或nmp组合
    yum install httpd php php-mysql php-gd
(2) 安装LogAnalyzer
    tar xf loganalyzer-4.1.5.tar.gz
    cp -a loganalyzer-4.1.5/src /var/www/html/log
    cd /var/www/html/log
    touch config.php
    chmod 666 config.php
(3) 配置loganalyzer
    浏览器访问



Step
7 - Create the first source for syslog messages 将Source Type修改成Mysql native database 设置为准备好的mysql设置 Database Name Syslog Database Tablename SystemEvents systemctl start httpd.service http://HOST/log


(
4) 安全增强 cd /var/www/html/loganalyzer chmod 644 config.php

二、描述vsftpd工做原理并以虚拟用户的方式提供ftp服务git

FTP服务:File Transfer Protocol 早期的三个应用级协议之一
  特色:
    基于C/S结构
    双通道协议:数据和命令链接
    数据传输格式:二进制(默认)和文本
    两种模式:服务器角度
      主动(PORT style):服务器主动链接
        命令(控制):客户端:随机port --- 服务器:tcp21
        数据:客户端:随机port ---服务器:tcp20
      被动(PASV style):客户端主动链接
        命令(控制):客户端:随机port ---服务器:tcp21
        数据:客户端:随机port ---服务器:随机port
    服务器被动模式数据端口示例:
      227 Entering Passive Mode (172,16,0,1,224,59)
      服务器数据端口为:224*256+59
    命令端口称为通讯端口tcp21,主动被动都是以服务器角度来称呼的。
    命令端口则没有主动被动一说,只有数据端口有主动和被动
  状态码:
        1XX:信息 125:数据链接打开
        2XX:成功类状态 200:命令OK 230:登陆成功
        3XX:补充类 331:用户名OK
        4XX:客户端错误 425:不能打开数据链接
        5XX:服务器错误 530:不能登陆
  用户认证:
        匿名用户:ftp,anonymous,对应Linux用户ftp
        系统用户:Linux用户,用户/etc/passwd,密码/etc/shadow
        虚拟用户:特定服务的专用用户,独立的用户/密码文件
            nsswitch:network service switch名称解析框架
            pam:pluggable authentication module 用户认证
            /lib64/security /etc/pam.d/ /etc/pam.conf

vsftpd服务
    由vsftpd包提供
    再也不由xinetd管理
    用户认证配置文件:/etc/pam.d/vsftpd
    服务脚本: /usr/lib/systemd/system/vsftpd.service
              /etc/rc.d/init.d/vsftpd
    配置文件:/etc/vsftpd/vsftpd.conf
        man 5 vsftpd.conf
        格式:option=value
        注意:= 先后不要有空格
    匿名用户(映射为系统用户ftp )共享文件位置:/var/ftp
    系统用户共享文件位置:用户家目录
    虚拟用户共享文件位置:为其映射的系统用户的家目录
安装vsftpd
    yum install vsftpd -y
建立用户数据库文件
  cat /etc/vsftpd/vuser
    ftp1
    123456
    ftp2
    654321
  db_load -T -t hash -f vuser vusers.db
    chmod 600 vusers.db
建立用户和访问FTP目录
  mkdir /ftproot/upload -p
    useradd -d /ftproot/ -s /sbin/nologin -r ftpuser
    chown -R ftpuser.ftpuser /ftproot/
    centos7 还须要执行如下操做:
      chmod -w /ftproot/
      setfacl -m u:ftpuser:rwx /ftproot/upload/
建立pam配置文件
  vim /etc/pam.d/vsftpd.db
    auth required pam_userdb.so db=/etc/vsftpd/vusers
    account required pam_userdb.so db=/etc/vsftpd/vusers
指定pam配置文件
  vim /etc/vsftpd/vsftpd.conf
    guest_enable=YES
    guest_username
=ftpuser     #修改默认pam_service_name为新生成的vsftpd.db     pam_service_name=vsftpd.db
    #这时全部虚拟用户的权限是一致的 SELinux设置:   禁用SELinux 或者 setsebool
-P ftpd_full_access 1 虚拟用户创建独立的配置文件 mdkir /etc/vsftpd/vusers.d/ 建立配置文件存放的路径 vim /etc/vsftpd/vsftpd.conf user_config_dir=/etc/vsftpd/vusers.d/ cd /etc/vsftpd/vusers.d/ 进入此目录 容许ftp1用户可读写,其它用户只读 建立各用户自已的配置文件,不建立就继承默认权限 vim ftp1 anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES vim ftp2 local_root=/ftproot 登陆目录改变至指定的目录
实现基于MYSQL验证的vsftpd虚拟用户
    说明:本实验在两台CentOS主机上实现,202作为FTP服务器,203作数据库服务器
    1、安装所须要包和包组:
        在数据库203服务器上安装包:
            Centos7:在数据库服务器上安装
                yum –y install mariadb-server
                systemctl start mariadb.service
                systemctl enable mariadb
            Centos6:在数据库服务器上安装
                yum –y install mysql-server
        在FTP服务器202上安装vsftpd和pam_mysql包
            centos6:pam_mysql由epel6的源中提供
                yum install vsftpd pam_mysql
            centos7:无对应rpm包,需手动编译安装
                yum -y groupinstall "Development Tools"
                yum -y install mariadb-devel pam-devel vsftpd
            下载pam_mysql-0.7RC1.tar.gz
                ftp://172.16.0.1/pub/Sources/sources/pam/
                tar xvf pam_mysql-0.7RC1.tar.gz
                cd pam_mysql-0.7RC1/
                ./configure --with-pam-mods-dir=/lib64/security --with-mysql=/usr --with-pam=/usr
                make
                make install
    2、在数据库服务器上建立虚拟用户帐号
        1.创建存储虚拟用户数据库和链接的数据库用户
            mysql> CREATE DATABASE vsftpd;
            mysql> SHOW DATABASES;
        ftp服务和mysql不在同一主机:
            mysql> GRANT SELECT ON vsftpd.* TO vsftpd@'172.16.%.%' IDENTIFIED BY 'magedu';
                grant select on vsftpd.* to vsftpd@'10.0.0.%' identified by '123456';
        ftp服务和mysql在同一主机:
            mysql> GRANT SELECT ON vsftpd.* TO vsftpd@localhost IDENTIFIED BY 'magedu';
            mysql> GRANT SELECT ON vsftpd.* TO vsftpd@'127.0.0.1' IDENTIFIED BY 'magedu';
            mysql> FLUSH PRIVILEGES;
        2.准备相关表
            mysql> USE vsftpd;
            Mysql> SHOW TABLES;
            mysql> CREATE TABLE users (
            id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
            name CHAR(50) BINARY NOT NULL,
            password CHAR(48) BINARY NOT NULL
            );
            mysql>DESC users;
            测试链接
            mysql -uvsftpd -h mysqlserver -pmagedu
            mysql> SHOW DATABASES;
        3.添加虚拟用户
            根据须要添加所须要的用户,为了安全应该使用PASSWORD函数加密其密码后存储
                mysql> DESC users;
                mysql>  INSERT INTO users(name,password) values(‘wang',password('magedu'));
                mysql>  INSERT INTO users(name,password) values(‘mage',password('magedu'));
                    insert into users(id,name,password) values(1,'ftp3','123456'),(2,'ftp4',password(123456));
                mysql> SELECT * FROM users;
    3、在FTP服务器上配置vsftpd服务
        1.在FTP服务器上创建pam认证所需文件
            vi /etc/pam.d/vsftpd.mysql 添加以下两行
                auth required pam_mysql.so user=vsftpd passwd=magedu host=mysqlserver db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
                account required pam_mysql.so user=vsftpd passwd=magedu host=mysqlserver db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
            注意:参考README文档,选择正确的加密方式
                crypt是加密方式,0表示不加密,1表示crypt(3)加密,2表示使用mysql
                password()函数加密,3表示md5加密,4表示sha1加密
            配置字段说明
                • auth 表示认证
                • account 验证帐号密码正常使用
                • required 表示认证要经过
                • pam_mysql.so模块是默认的相对路径,是相对/lib64/security/路径而言,也能够写绝对路径;后面为给此模块传递的参数
                • user=vsftpd为登陆mysql的用户
                • passwd=magedu 登陆mysql的的密码
                • host=mysqlserver mysql服务器的主机名或ip地址
                • db=vsftpd 指定链接msyql的数据库名称
                • table=users 指定链接数据库中的表名
                • usercolumn=name 当作用户名的字段
                • passwdcolumn=password 当作用户名字段的密码
                • crypt=2 密码的加密方式为mysql password()函数加密
        2.创建相应用户和修改vsftpd配置文件,使其适应mysql认证
            创建虚拟用户映射的系统用户及对应的目录
                useradd -s /sbin/nologin -d /var/ftproot vuser
                chmod 555 /var/ftproot centos7 需除去ftp根目录的写权限
                mkdir /var/ftproot/{upload,pub}
                setfacl –m u:vuser:rwx /var/ftproot/upload
            确保/etc/vsftpd.conf中已经启用了如下选项
                anonymous_enable=YES
            添加下面两项
                guest_enable=YES
                guest_username=vuser
            修改下面一项,原系统用户没法登陆
                pam_service_name=vsftpd.mysql
            建立各用户自已的配置文件,不建立就继承默认权限
                vim ftp3
                    anon_upload_enable=YES
                    anon_mkdir_write_enable=YES
                    anon_other_write_enable=YES
                vim ftp4
                    local_root=/ftproot 登陆目录改变至指定的目录        
    4、启动vsftpd服务
        service vsftpd start;systemctl start vsftpd
        chkconfig vsftpd on;systemctl enable vsftpd
        查看端口开启状况
        netstat -tnlp |grep :21
    5、Selinux相关设置:在FTP服务器上执行
        • restorecon -R /lib64/security
        • setsebool -P ftpd_connect_db 1
        • setsebool -P ftp_home_dir 1
        • chcon -R -t public_content_rw_t /var/ftproot/
    6、测试:利用FTP客户端工具,以虚拟用户登陆验证结果
        • tail /var/log/secure
    7、在FTP服务器上配置虚拟用户具备不一样的访问权限
        vsftpd能够在配置文件目录中为每一个用户提供单独的配置文件以定义其ftp服务访问权限,每一个虚拟用户的配置文件名同虚拟用户的用户名。配置文件目录能够是任意未使用目录,只须要在vsftpd.conf指定其路径及名称便可
        • 1、配置vsftpd为虚拟用户使用配置文件目录
            vim /etc/vsftpd/vsftpd.conf
            添加以下选项
            user_config_dir=/etc/vsftpd/vusers_config
        • 2、建立所须要目录,并为虚拟用户提供配置文件
            mkdir /etc/vsftpd/vusers_config/
            cd /etc/vsftpd/vusers_config/
            touch wang mage
        3、配置虚拟用户的访问权限
            虚拟用户对vsftpd服务的访问权限是经过匿名用户的相关指令进行的。如要让用户wang具备上传文件的权限,可修改/etc/vsftpd/vusers_config/wang文件,在里面添加以下选项并设置为YES便可,只读则设为NO
            注意:需确保对应的映射用户对于文件系统有写权限
                anon_upload_enable={YES|NO}
                anon_mkdir_write_enable={YES|NO}
                anon_other_write_enable={YES|NO}
                local_root=/ftproot 登陆目录改变至指定的目录

三、部署nfs、samba并提供Windows用户访问github

NFS:Network File System 网络文件系统,基于内核的文件系统。Sun公司开发,经过使用NFS,用户和程序能够像访问本地文件同样访问远端系统上的文件,基于RPC
(Remote Procedure Call Protocol远程过程调用)实现 RPC采用C
/S模式。客户机请求程序调用进程发送一个有进程参数的调用信息到服务进程,而后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息到达为止。当一个
调用信息到达,服务器得到进程参数,计算结果,发送答复信息,而后等待下一个调用信息,最后,客户端调用进程接收答复信息,得到进程结果,而后调用执行继续进行 NFS优点:节省本地存储空间,将经常使用的数据,如home目录,存放在NFS服务器上且能够经过网络访问,本地终端将可减小自身存储空间的使用



安装nfs-utils管理nfs文件系统
  yum install nfs-utils
  rpcinfo -p 查看rpcbind服务列出来的nfs随机端口列表
  systemctl start nfs 启动 nfs服务
  mkdir /data/nfsdir1 建立目录做为nfs的共享
修改nfs的共享配置文件,加入须要共享的目录
  vim /etc/exports
  /data/nfsdir1 *
  重启服务配置文件便可生效
  exportfs -r 也可使用此命令从新加载配置文件 -au 暂停共享 -a 启用

  出现了警报,可是不影响正常使用   showmount
-e 192.168.242.128 在目标网络中查看被共享的文件夹     Export list for 192.168.242.128:     /data/nfsdir1 * #*表示全部客户端,   挂载成功

默认状况下。共享出来为只读方式
  vim /etc/exports
    /data/nfsdir1 *(rw) 在服务器配置文件中写入 rw , 文件系统开启,可是用户帐户权限对服务器的nfsdir1目录不足   cd /data/nfs1/   [root@centos7 nfs1]# ls   [root@centos7 nfs1]# touch a1   touch: cannot touch ‘a1’: Permission denied
  #
在服务器给定nfsnobody权限便可,nfs访问时默认会以nfsnobody身份链接服务器。默认用root用户挂载服务器目录中会被压榨成普通用户权限。
  exportfs -v 查看共享属性
  root_squash 选项为将root身份权限压榨成普通权限。能够在配置文件中修改
  /data/nfsdir1 *(rw,no_root_squash) 不压榨root用户权限

   [root@centos7 ~]# setfacl -m u:nfsnobody:rwx /data/nfsdir1/web

  换成其余用户。建立文件时权限不足sql

  [centos@centos7 nfs1]$ touch cenots1.txt

  touch: cannot touch ‘cenots1.txt’: Permission denied

  [centos@centos7 nfs1]$

在客户机上普通用户的uid会映射成服务器的对应uid的用户,若是服务器的uid的用户对此目录没有权限。则也没有在目录中写的权限

能够根据本身的须要写入指定的ip,或者ip地址范围能写。

  [root@centos7 ~]# vim /etc/exports

  /data/nfsdir1 *(sync,rw)

  /data/nfsdir2 192.168.242.128(sync,rw) 192.168.242.0/24(ro)

在windows中要使用nfs须要开启一个nfs的插件

将目录映射成一个Windows磁盘

/data/nfsdir1 *(sync,rw,anongid=2000,abibgud=2000),此项配置能够将用户帐号映射成服务器端的相应帐号

若是须要永久挂载。则须要写入fstab文件中

若是想实现nfs自动挂载。

客户机须要安装autofs包

yum install autofs 

当咱们访问/misc/nfs时。则系统会自动讲远程nfs挂载到咱们指定的路径下

SAMBA服务简介
    SMB:Server Message Block服务器消息块,IBM发布,最先是DOS网络文件共享协议
    Cifs:common internet file system,微软基于SMB发布
    SAMBA:1991年Andrew Tridgell,实现windows和UNIX相通
    SAMBA的功能:
        • 共享文件和打印,实如今线编辑
        • 实现登陆SAMBA用户的身份认证
        • 能够进行NetBIOS名称解析
        • 外围设备共享
    计算机网络管理模式:
        • 工做组WORKGROUP:计算机对等关系,账号信息各自管理
        • 域DOMAIN:C/S结构,账号信息集中管理,DC,AD
    相关包:
        Samba 提供smb服务
        Samba-client 客户端软件
        samba-common 通用软件
        cifs-utils smb客户端工具
        samba-winbind 和AD相关
    相关服务进程:
        smbd 提供smb(cifs)服务 TCP:139,445
        nmbd NetBIOS名称解析 UDP:137,138
    主配置文件:/etc/samba/smb.conf
        帮助参看:man smb.conf
    语法检查: testparm [-v] [/etc/samba/smb.conf]
    客户端工具:smbclient,mount.cifs
    安装:
        yum install samba
        yum install samba-client
    两个服务:
        systemctl start smb                            # 139、445端口
        systemctl start nmb                            # udp13七、138端口


  须要建立系统帐号,给samba使用

  [root@centos7 /]# useradd -s /sbin/nologin smbuser1

  [root@centos7 /]# useradd -s /sbin/nologin smbuser2

  将系统帐号加入samba虚拟帐号,并设置密码

 
 
 

  samba帐号默认存放在 /var/lib/samba/private/passwdb.tdb数据库文件中

  在windows文件栏输入 \\192.168.242.128访问

 
 

  输入刚建立的smaba帐号及密码便可

 
 

实现特定的目录共享

  每一个共享目录应该有独立的[ ]部分

    [共享名称] 远程网络看到的共享名称
    comment 注释信息
    path 所共享的目录路径
    public 可否被guest访问的共享,默认no,和guest ok 相似
    browsable 是否容许全部用户浏览此共享,默认为yes,no为隐藏
    writable=yes 能够被全部用户读写,默认为no
    read only=no 和writable=yes等价,如与以上设置冲突,放在后面的设置生效,默认只读
    write list 三种形式:用户,@组名,+组名,用,分隔
      如writable=no,列表中用户或组可读写,不在列表中用户只读
    valid users 特定用户才能访问该共享,如为空,将容许全部用户,用户名之间用空格分隔

vim /etc/samba/smb.conf 修改samba的配置文件

mkdir /data/smbshare 建立目录

修改配置文件加入目录路径

 
 
 
 

目前并不对share特定的共享目录不能写,还须要设置文件权限

须要修改配置文件中的权限

[share]

path=/data/smbshare

read only = No 加入此行。消除只读的属性

 
 

也能够在linux主机中实现挂载

 
 

SAMBA服务器全局配置
  workgroup 指定工做组名称
  server string 主机注释信息
  netbios name 指定NetBIOS名
  interfaces 指定服务侦听接口和IP
  hosts allow 可用“,” ,空格,或tab分隔,默认容许全部主机访问,也可在每一个共享
    独立配置,如在[global]设置,将应用并覆盖全部共享设置
    IPv4 network/prefix: 172.25.0.0/24 IPv4前缀: 172.25.0.
    IPv4 network/netmask: 172.25.0.0/255.255.255.0
    主机名: desktop.example.com
    以example.com后缀的主机名: .example.com
    示例:
      hosts allow = 172.25.
      hosts allow = 172.25. .example.com
  hosts deny 拒绝指定主机访问
  config file=/etc/samba/conf.d/%U 用户独立的配置文件
  Log file=/var/log/samba/log.%m 不一样客户机采用不一样日志
  log level = 2 日志级别,默认为0,不记录日志
  max log size=50 日志文件达到50K,将轮循rotate,单位KB
  Security三种认证方式:
    share:匿名(CentOS7再也不支持)
    user:samba用户(采有linux用户,samba的独立口令)
    domain:使用DC(DOMAIN CONTROLLER)认证
  passdb backend = tdbsam 密码数据库格式

实现不用帐号访问目录不一样

config file=/etc/samba/conf.d/%U 

用户独立的配置文件,写入配置文件,建立相应目录

mkdir /etc/samba/conf.d/

建立一个用户配置文件。为用户指向新的目录

share目录为咱们指向配置文件中的[share]的名称

Log file=/var/log/samba/log.%m 不一样客户机采用不一样日志

log level = 2 日志级别,默认为0,不记录日志

开机自动挂载

•cat /etc/fstab 能够用文件代替用户名和密码的输入

  //server/homes /mnt cifs credentials=/etc/smb.txt 0 0

•cat /etc/smb.txt

  username=wang

  password=password

•chmod 600 /etc/smb.txt

四、在两台服务器上部署inotify+rsync同步服务器A上的/data/backup目录至服务器B

数据的实时同步
    实现实时同步
        要利用监控服务(inotify),监控同步数据服务器目录中信息的变化
        发现目录中数据产生变化,就利用rsync服务推送到备份服务器上
    实现实时同步的方法
        inotify+rsync 方式实现数据同步
        sersync :金山公司周洋在 inotify 软件基础上进行开发的,功能更增强大
    inotify:
        异步的文件系统事件监控机制,利用事件驱动机制,而无须经过诸如cron等的
        轮询机制来获取事件,linux内核从2.6.13起支持 inotify,经过inotify能够监控文
        件系统中添加、删除,修改、移动等各类事件
    实现inotify软件:
        inotify-tools,sersync,lrsyncd

inotify+rsync使用方式
    inotify 对同步数据目录信息的监控
    rsync 完成对数据的同步
    利用脚本进行结合

查看服务器内核是否支持inotify
    Linux下支持inotify的内核最小为2.6.13
    ll /proc/sys/fs/inotify #列出下面的文件,说明服务器内核支持inotify
        -rw-r--r-- 1 root root 0 Dec 7 10:10 max_queued_events
        -rw-r--r-- 1 root root 0 Dec 7 10:10 max_user_instances
        -rw-r--r-- 1 root root 0 Dec 6 05:54 max_user_watches
    inotify内核参数
    参数说明:参看man 7 inotify 
        max_queued_events:inotify事件队列最大长度,如值过小会出现 Event Queue Overflow 错误,默认值:16384
        max_user_watches:能够监视的文件数量(单进程),默认值:8192
        max_user_instances:每一个用户建立inotify实例最大值,默认值:128
        调整大小
        vim /etc/sysctl.conf
            fs.inotify.max_queued_events=99999

inotify参考文档
  https://github.com/rvoicilas/inotify-tools/wiki
  安装:基于epel源
    yum install inotify-tools
  Inotify-tools包主要文件:
    inotifywait: 在被监控的文件或目录上等待特定文件系统事件(open close delete等)发生,经常使用于实时同步的目录监控
    inotifywatch:收集被监控的文件系统使用的统计数据,指文件系统事件发生的次数统计

示例:监控202的/data    目标目录203/backup
    监控一次性事件
        inotifywait /data
        [root@linux-node2-202 ~]# inotifywait /data
            Setting up watches.
            Watches established.
            /data/ CREATE f1

    持续监控
        inotifywait -mrq /data
        [root@linux-node2-202 ~]# inotifywait -mrq /data
            /data/ OPEN,ISDIR 
            /data/ CLOSE_NOWRITE,CLOSE,ISDIR 
            /data/ DELETE f1

    持续后台监控,并记录日志
        inotifywait -o /root/inotify.log -drq /data --timefmt "%Y-%m-%d %H:%M" --format "%T %w%f event: %e"
    持续后台监控特定事件
        inotifywait -mrq /data --timefmt "%F %H:%M" --format "%T %w%f event: %;e" -e create,delete,moved_to,close_write
    持续后台监控文件修改、文件删除、文件建立、文件移动和文件属性修改
        inotifywait -mrq /data --timefmt "%F %H:%M" --format "%T %w%f event: %;e" -e create,delete,moved_to,close_write,attrib

    配置 rsync 服务器端的配置文件(203)
        vi /etc/rsyncd.conf
            uid = root
            gid = root
            use chroot = no
            max connections = 0                                 # 最大链接数不限制
            ignore errors                                         # 忽略错误信息
            exclude = lost+found/                                # 排除文件
            log file = /var/log/rsyncd.log                         # 日志
            pid file = /var/run/rsyncd.pid                        # pid
            lock file = /var/run/rsyncd.lock                    # lock锁文件
            reverse lookup = no                                    # 反向名称解析
            hosts allow = 10.0.0.0/24                            # 容许网段
            [backup]
            path = /backup/
            comment = backup
            read only = no                                         # 只读
            auth users = rsyncuser                                 # 同步用户
            secrets file = /etc/rsync.pass                         # 用户密码
        服务器端生成验证文件
            echo "rsyncuser:magedu" > /etc/rsync.pass
            chmod 600 /etc/rsync.pass
        服务器端准备目录
            mkdir /backup
        服务器端启动rsync服务
            rsync --daemon 可加入/etc/rc.d/rc.local实现开机启动
        客户端配置密码文件
            echo "magedu" > /etc/rsync.pass
            chmod 600 /etc/rsync.pass
        客户端测试同步数据
            rsync -avz --password-file=/etc/rsync.pass /data/ rsyncuser@rsync服务器IP::backup
            [root@linux-node2-202 data]# rsync -avz --password-file=/etc/rsync.pass /data/ rsyncuser@10.0.0.203::backup
    建立inotify_rsync.sh脚本
        #!/bin/bash
        SRC='/data/'
        DEST='rsyncuser@10.0.0.203::backup'inotifywait -mrq --timefmt '%Y-%m-%d %H:%M' --format '%T %w %f' -e create,delete,moved_to,close_write,attrib ${SRC} |while read DATE TIME DIR FILE;do
        FILEPATH=${DIR}${FILE}
        rsync -az --delete --password-file=/etc/rsync.pass $SRC $DEST && echo "At ${TIME} on ${DATE}, file $FILEPATH was backuped up via rsync" >> /var/log/changelist.log
        done    
    
    查看日志和目标文件夹变化
        [root@linux-node3-203 backup]# watch -n1 ls -l /backup
        [root@linux-node2-202 data]# cat /var/log/changelist.log
相关文章
相关标签/搜索