CentOS7 inotify-tools+lftp 實現文件實時同步

工具:inotify-tools  :監控文件  create, move, modify, delete, move

          gcc              :inotify-tools安裝需要

         lftp               :實現ftp鏡像功能,比較文件後進行增量上傳

 

一,安裝inotify-tools

      1.安裝gcc

         yum install gcc     如果系統內未安裝,需要預先安裝,否則無法編譯inotify-tools

      2.安裝inotify-tools

         該項目的github地址:https://github.com/rvoicilas/inotify-tools

         下載地址:http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz

        下載之後

        ar -zvxf inotify-tools-3.14.tar.gz

        cd inotify-tools-3.14

        ./configure --prefix=/usr/local/inotify

        make

        make install

有的建議修改以下參數

修改inotify參數

1、命令修改

[root@iZ25w1kdi5zZ bin]# sysctl -w fs.inotify.max_user_instances=130
fs.inotify.max_user_instances = 130
2、文件修改
[root@iZ25w1kdi5zZ]# vi /etc/sysctl.conf
#添加如下代碼
fs.inotify.max_user_instances=130
3、參數說明 
max_user_instances:每個用戶創建inotify實例最大值

max_queued_events:inotify隊列最大長度,如果值太小,會出現錯誤,導致監控文件不準確

max_user_watches:要知道同步的文件包含的目錄數,可以用:[root@iZ25w1kdi5zZhome]# find /home/rain -type d|wc -l 統計,必須保證參數值大於統計結果(/home/rain爲同步文件目錄)。
--------------------- 
作者:god_wot 
來源:CSDN 
原文:https://blog.csdn.net/god_wot/article/details/50448814 
版權聲明:本文爲博主原創文章,轉載請附上博文鏈接!

二,創建實時監控腳本

mkdir -p /opt/scripts

cd /opt/scripts

vi inotify_start.sh

#!/bin/bash
#chkconfig:345 88 14                   #不加的話chkconfig --add 肯定是要報service
                                       #inotify.sh does not support chkconfig 錯誤 

/usr/local/inotify/bin/inotifywait -mrq -e create,move --fromfile '/opt/script/ffile' | while read LINE
do
if [[ $LINE = *CREATE* ]];then                  #當變量LINE有CREATE字符時執行lftp_toftp.sh
/home/script/lftp_toftp.sh
elif [[ $LINE = *MOVE* ]];then                  #當變量LINE有MOVE字符時執行lftp_toftp.sh
/home/script/lftp_toftp.sh
fi
done

chkconfig:345 88 14

註釋表示在rc3|4|5.d下生成優先級88的啓動腳本軟鏈接,另外在rc0|6.d下生成優先級14的停止腳本軟鏈接(大概是這麼個意思,不太理解是什麼)

/usr/local/inotify/bin/inotifywait -mrq -e modify,create,move,delete

-mrq:  始終保持監聽狀態;遞歸查詢目錄;打印出監控事件

-e :定義監控的事件,modify, create, move, delete

inotifywait常用參數:
--timefmt 時間格式
%y年 %m月 %d日 %H小時 %M分鐘
--format 輸出格式
%T時間 %w路徑 %f文件名 %e狀態
-m 始終保持監聽狀態,默認觸發事件即退出。
-r 遞歸查詢目錄
-q 打印出監控事件
-e 定義監控的事件,可用參數:
open 打開文件
access 訪問文件
modify 修改文件
delete 刪除文件
create 新建文件
--fromfile '/opt/script/ffile' :定義被監控的文件夾

vi ffile

/home/log/ #監控log文件夾
@/home/log/upload #不監控upload文件夾
 chmod a+x ./inotify_start.sh  賦予可執行權限

三,開機自動啓動inotify-tools腳本

將編輯好的腳本,複製或移動到以下文件夾

/etc/rc.d/init.d/

執行

cd /etc/rc.d/init.d

chkconfig --add inotify_start.sh

chkconfig inotify_start.sh

系統啓動後就自動運行inotify_start.sh了

四,編輯lftp上傳腳本

安裝lftp : yum install lftp

任意位置,/home/script/,新建腳本文件

vi lftp_toftp.sh

#!/bin/bash
lftp -c "set ftp:list-options -a;
open ftp://web1:[email protected];
lcd /home/wwwroot/anoroot/upload/asg_log/; #本地文件夾
cd /mydic/temp; #遠程ftp上的文件夾
mirror --reverse --use-cache --verbose --allow-chown --allow-suid --no-umask --parallel=2 --include-glob *.log"
#鏡像向ftp同步擴展名爲log的文件
 

參考資料:

inotify-tools https://blog.csdn.net/god_wot/article/details/50448814

shell  https://blog.csdn.net/junmail/article/details/4912065

          https://www.yiibai.com/shell/if-elif-statement.html

          http://www.runoob.com/linux/linux-shell-process-control.html

開機啓動:http://www.cnblogs.com/lei0213/p/8595030.html

                 https://blog.csdn.net/lzjansing/article/details/53053824


作者:ken6328
來源:CSDN
原文:https://blog.csdn.net/ken6328/article/details/86714373
版權聲明:本文爲博主原創文章,轉載請附上博文鏈接!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章