1. 程式人生 > >centos7只rsync+inotify

centos7只rsync+inotify

timeout close ads 發生 closed erro dir 啟動 sync

環境:

操作系統:centos7.4

192.168.1.238 客戶端

192.168.1.238 服務端

環境準備:

1、安裝以下安裝包lrzsz是xshell上傳下載的安裝包,可以忽略。

yum install -y lrzsz gcc wget gcc-c++ vim

2、關閉firewall防火墻,開機禁止啟動。永久關閉selinux。如果有iptables防火墻可以允許873端口。

服務端

1、安裝rsync

yum install -y rsync

2、更改配置文件

vim /etc/rsyncd.conf 
技術分享圖片
 1 #工作中指定用戶(可以不指定為0)
 2 uid = 0
3 gid = 0 4 #相當於黑洞.出錯定位 5 use chroot = no 6 ##有多少個客戶端同時傳文件 7 max connections =200 8 ##超時時間 9 timeout = 300 10 ##進程號文件 11 pid ifle = /var/run/rsyncd.pid 12 lock file = /var/run/rsync.lock 13 ##日誌文件 14 log file = /var/log/rsyncd.log 15 ##模塊開始(這個模塊就是待會兒對端寫腳本的裏面一個參數的名稱) 16 [msone] 17 ##需要同步的目錄(準確的說是同步過來後放到哪裏的目錄路徑)
18 path = /data/www 19 ##表示出現錯誤忽略錯誤 20 ignore errors 21 ##表示網絡權限可寫(本地控制真正可寫)(親測這裏寫false報錯) 22 read only = no 23 ##這裏設置IP或讓不讓同步 24 list = false 25 #允許的ip或者ip段 26 hosts allow = 192.168.1.238 27 ##拒絕,以下表示都不拒絕 28 hosts deny = 0.0.0.0/32 29 ##認證用戶 30 auth users = rsynclsl 31 ##用戶名和密碼存放文件 32 secrets file = /etc/rsync.secrets
rsyncd.conf

3、添加同步需要用的用戶名和密碼

#useradd rsynclsl
#passwd rsynclsl

4、創建認證文件

vim /etc/rsync.secrets
文件裏面添加如下內容(格式為用戶名:密碼):
rsynclsl:123456

5、為了安全起見給這個文件設置600權限。

技術分享圖片

6、啟動服務

 #rsync --daemon

技術分享圖片

7、創建需要過來存放的目錄

 mkdir /data/www

技術分享圖片

需要www這個目錄其它用戶可以寫的權限

chmod 765 www

8、如果需要添加開機啟動請看另外一篇博客http://www.cnblogs.com/lei0213/p/8595030.html

客戶端

1、查看當前系統是否支持inotify,這三個文件具體做什麽的可以自行百度

技術分享圖片

2、安裝rsync和inotify(rsync只安裝不啟動不配置)

yum install -y rsync

3、inotify是一種強大的、細粒度的、異步的文件系統事件控制機制。linux內核從2.6.13起,加入了inotify支持,通過inotify可以監控文件系統中添加、刪除、修改、移動等各種事件,利用這個內核接口,第三方軟件就可以監控文件系統下文件的各種變化情況,而inotify-tools正是實施監控的軟件。

#wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
#tar zxf inotify-tools-3.14.tar.gz
#cd inotify-tools-3.14
#./configure --prefix=/usr/local/include/ 
#  make && make install         

官網:https://sourceforge.net/projects/inotify-tools/

4、最最最最最最重要的是要寫這個腳本,讓它自動去檢測我們制定的目錄下文件發生的變化,然後再執行rsync的命令把它同步到我們的服務器端去。

#touch  inotify.sh
#chmod 755  inotify.sh
#vim inotify.sh
技術分享圖片
 1 #!/bin/bash
 2 #chkconfig: 345 88 14
 3 host=192.168.1.239    #server的ip(備份服務器)
 4 src=/data/www  #所要監控的備份目錄(此處可以自定義,但是要保證存在)
 5 des=msone   #自定義的模塊名,需要與client端定義的一致
 6 password=/etc/rsync.password  #密碼文件
 7 user=rsynclsl    #用戶名(一個實際存在的賬號)
 8 inotify=/usr/local/include/    #inotify的安裝目錄                
 9 
10 ${inotify}/bin/inotifywait -mrq --timefmt %d/%m/%y %H:%M --format %T %w%f%e -e modify,delete,create,attrib $src 11 | while read files
12 do
13 rsync -avzP --delete  --timeout=100 --password-file=${password} $src $user@$host::$des
14 echo "${files} was rsynced" >>/tmp/rsync.log 2>&1
15 done
inotify.sh

技術分享圖片

5、執行該腳本

#./inotify.sh

6、如果需要添加開機啟動請看另外一篇博客http://www.cnblogs.com/lei0213/p/8595030.html

測試

1、服務器客戶端全部關閉selinux和firewalld及iptables(或者允許873端口通過)

2、服務端啟動rsync服務即可(進入/data/www準備刷新)

3、客戶端啟動腳本。

4、在客戶端進入客戶端的/data/www目錄下建立文件,更改內容。

5、服務器端刷新

6、客戶端會把www整個目錄傳到服務器端的/data/www下,等於在/data/www/下又出現了一個www目錄。

 

  

centos7只rsync+inotify