背景:
兩臺服務器之間實現數據同步,常用工具rsync,常見的應用爲定時增量同步,然而這種同步需要linux來觸發(常見的手段爲定時任務),這樣難免會有數據丟失的危險,並且rsync使用的是全盤or全目錄(同步目標)掃描檢測增量備份機制,這樣對小文件還行。對海量大文件來講,全部掃描既加重了服務器的負載,又耗時。
所以本文引入另外一個非常好用的工具inotify-tools(調用inotify藉口)可以實現監控,監控對文件系統的刪除、修改、增加、移動等操作,再使用rsync有目的的將增量文件進行同步意義重大。
下面是詳細步驟:
步驟一:判斷是否支持inotify
ls -al /proc/sys/fs/inotify/ ------判斷是否支持inotify,下面三個文件存在,則支持。
total 0 dr-xr-xr-x 0 root root 0 May 26 09:07 . dr-xr-xr-x 0 root root 0 May 26 08:41 .. -rw-r--r-- 1 root root 0 May 26 09:08 max_queued_events -rw-r--r-- 1 root root 0 May 26 09:08 max_user_instances -rw-r--r-- 1 root root 0 May 26 09:08 max_user_watches
步驟二 安裝inotify-tools工具
wget http://sourceforge.net/projects/inotify-tools/files/inotify-tools/3.13/inotify-tools-3.13.tar.gz ------ 下載安裝包 tar -zxvf inotify-tools-3.13.tar.gz ------ 解壓 ./configure --prefix=/usr/local/inotify-tools-3.13 ------ 軟件配置 ./configure --help ------ 查看配置的相關參數 echo $? ------ 檢查配置是否成功(返回結果爲0,成功) make && make install ------ 一切ok,編譯並安裝
步驟三 查看安裝目錄(使用tree查看目錄各個文件的樹)
ln -s inotify-tools-3.13 inotify-tools ------創建軟連接 ls -al inotify-tools-3.13 total 24 drwxr-xr-x. 6 root root 4096 May 26 09:13 . drwxr-xr-x. 12 root root 4096 May 26 09:13 .. drwxr-xr-x. 2 root root 4096 May 26 09:13 bin -------兩個主要命令所在 drwxr-xr-x. 3 root root 4096 May 26 09:13 include drwxr-xr-x. 2 root root 4096 May 26 09:13 lib drwxr-xr-x. 4 root root 4096 May 26 09:13 share
步驟四 命令使用方法探索
/usr/local/inotify-tools/bin/inotifywait --help -------命令使用方法查詢 /usr/local/inotify-tools/bin/inotifywatch --help -------命令使用方法查詢
inotify-tools安裝完成後,會生成inotifywait和inotifywatch兩個指令。
inotifywait用於等待文件或文件集上的一個特定事件,它可以監控任何文件和目錄設置,並且可以遞歸地監控整個目錄樹。
inotifywatch用於收集被監控的文件系統統計數據,包括每個inotify事件發生多少次等信息。
步驟五 案例
/usr/local/inotify-tools/bin/inotifywait -mrq -e create /opt -------監控opt下面是否新建目錄或者文件
結論:打開兩個終端,就可以明顯看到,當/opt/下面創建新文件的時候,就會在另外一個終端中監控到。
應用:
/usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e modify,delete,create,attrib /opt \ | while read files do rsync -av --delete -e ssh [email protected] /opt /opt