有時候我們常需要當文件變化的時候便觸發某些腳本操作,比如說有文件更新了就同步文件到遠程機器。在實現這個操作上,主要用到兩個工具,一個是rsync,一個是inotifywAIt。inotifywait的作用是監控文件夾變化,rsync是用來同步,可同步到本機的其他目錄或者遠程服務器上。
我們先看下二者的安裝方式。
安裝rsync
wget http://rsync.samba.org/ftp/rsync/src/rsync-3.1.1.tar.gz
tar zxvf rsync-3.1.1.tar.gz
./configure –prefix=/usr/local/rsync-3.1.1
make
make install
安裝inotifywait
wget http://Github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
tar zxvf inotify-tools-3.14.tar.gz
cd inotify-tools-3.14
./configure
make
make install
創建并運行腳本
新建腳本inotifywait.sh 并輸入以下內容
#!/bin/bash
export CNROMS_SRC=/home/ftpuser/gri/ # 同步的路徑,請根據實際情況修改
inotifywait --exclude '.(part|swp)' -r -mq -e modify,move_self,create,delete,move,close_write $CNROMS_SRC |
while read event;
do
rsync -vazu --progress --password-file=/etc/rsyncd_rsync.secret /home/ftpuser/gri/sla rsync@10.208.1.1::gri ##這里執行同步的命令,可以改為其他的命令
done
然后執行下面命令,會在后臺執行監控
nohup sh inotifywait.sh > /dev/null 2>&1
接下來我們重點看下inotify的使用。
inotify 是一個 linux 內核提供的 API,它可以監視文件系統事件,
比如文件或目錄的創建、刪除、修改等。
inotify-tools 是一套用戶空間的工具,包括 inotifywait 和 inotifywatch,用于使用 inotify API。
這些工具可以對文件系統事件進行監控,并生成相應的警告或日志。
inotifywait是一個非常實用的命令,它屬于inotify-tools包,可以用來監控Linux文件系統事件。
下面是一些inotifywait應用的例子:
監控目錄或文件的創建、刪除、移動等操作:
inotifywait -m -r -e create,delete,move /path/to/directory
這個命令將監視/path/to/directory目錄中所有文件和目錄的創建、刪除和移動操作。當有文件或目錄被創建、刪除或移動時,
這個命令將顯示相應的信息。
監控文件的修改操作:
inotifywait -m -r -e modify /path/to/file
這個命令將監視/path/to/file文件的修改操作。當有文件被修改時,這個命令將顯示相應的信息。
監控目錄或文件的屬性變化:
inotifywait -m -r -e attrib /path/to/directory
這個命令將監視/path/to/directory目錄中所有文件和目錄的屬性變化。當有文件或目錄的屬性發生變化時,這個命令將顯示相應的信息。
監控多個目錄或文件的事件:
inotifywait -m -r -e create,delete,move /path/to/directory1 /path/to/directory2 /path/to/file1 /path/to/file2
這個命令將監視多個目錄和文件的創建、刪除和移動操作。當有目錄或文件發生相應的事件時,這個命令將顯示相應的信息。
監控事件并執行命令:
inotifywait -m -r -e create,delete,move /path/to/directory -- /path/to/command
上面的命令將監視/path/to/directory目錄中所有文件和目錄的創建、刪除和移動操作,并在事件發生時執行指定的命令。可以將命令替換為你想要執行的任何命令。這些例子只是inotifywait的一些基本用法,大家可以根據自己的需求進一步擴展和定制。