rsync+inotify自動同步
rsync是一個遠程數據同步工具,可通過LAN/WAN快速同步多臺主機間的文件。它使用所謂的“Rsync演算法”來使本地和遠程兩個主機之間的文件達到同步,這個算法只傳送兩個文件的不同部分,而不是每次都整份傳送,因此速度相當快。所以通常可以作為備份工具來使用。
運行Rsync server的機器也叫backup server,一個Rsync server可同時備份多個client的數據;也可以多個Rsync server備份一個client的數據。Rsync可以搭配ssh甚至使用daemon模式。Rsync server會打開一個873的服務通道(port),等待對方rsync連接。連接時,Rsync server會檢查口令是否相符,若通過口令查核,則可以開始進行文件傳輸。第一次連通完成時,會把整份文件傳輸一次,下一次就只傳送二個文件之間不同的部份。
實驗環境:兩臺CentOS7
原服務器地址:192.168.159.128
發起端地址:192.168.159.129
1因為CentOS7中已經安裝了rsync包,所以直接可以進入它的主配置文件進行配置,它的主配置文件為/etc/rsyncd.conf,在這個文件中我們需要開啟它的管理用戶,基本組,進程文件,端口號,日誌文件和監聽地址,同時在下面規定它的管理模塊,在管理模塊下需要添加測試文件路徑,測試用戶,密碼文件,可讀權限
2主配置文件設置好之後關閉源服務器的防火墻
3接著安裝源服務器的網站服務
4網站服務裝好後我們需要創建它的密碼文件,這裏密碼設為123456,密碼文件創好之後為了安全考慮將權限設為600。接著開啟rsync服務,開啟之後便可以看到它的進程號
5密碼文件創好後便可以在測試文件目錄下創建一個測試目錄,這裏在/var/www/html目錄下創建一個index.html的網站,到這裏源服務器的服務基本設置完成
6源服務器設置完成後便可以設置發起端的服務,首先關閉發起端的防火墻
7接著在發起端安裝網站服務,這裏可以看到測試文件的權限為755,為了方便測試我們將權限設置為777,接著在發起端啟動rsync服務,測試用戶為jerry,地址為源服務器的地址,服務開啟後可以看到html目錄下同步了一個index.html的文件。
8為了避免每一次同步都要輸入密碼的麻煩,這裏我們可以設置免交互,首先可以創建一個密碼文件,直接將密碼寫入其中,接著用上圖的命令執行免交互。
9最後我們需要在發起端安裝自動同步,首先需要安裝gcc gcc-c++的環境,接著需要更改sysctl.conf這個文件
10接著在文件中添加三條語句擴大隊列的數量,使用sysctl -p 使文件生效
11接著將inotify軟件包掛載,掛載完成後將這個軟件包解壓到opt目錄下
12接著在opt目錄下找到inotify的執行文件,執行該文件
13現在就可以對這臺客戶機發起監聽,監聽之後便不可以再輸入內容,這時可以打開另一個終端使用
14接著可以創建一個運行腳本,只要執行這個腳本便可以自動監聽和同步,腳本寫好後運行這個腳本進行監聽,這時我們還需要另開一起終端
15要想運行這個服務需要註意一個重要問題,權限問題,這裏我們首先關閉該文件的只讀權限,接著重新開啟該命令,註意這裏要關閉該命令的話首先要用kill命令關閉它的進程號,接著刪除它的進程目錄,這樣才可以徹底關閉
16除了要關閉只讀權限還需要保證源服務器的測試目錄和發起端的測試目錄權限一樣大,這裏我都設為最大權限
17最後權限設置完成後再發起端的測試目錄下創建兩個目錄,可以看到,源服務器同步成功時,監聽終端會出現同步信息,這是表示自動同步成功。
rsync+inotify自動同步