一、描述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