1. 程式人生 > >CentOS7 inotify-tools+lftp 實現文件實時同步

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

rbo -i art 參數 分鐘 14. onf centos7 log

工具: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
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!

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