使用Inotify實時同步資料夾
接上篇:http://blog.csdn.net/oldmtn/article/details/47836859
這篇文章是我檢視參考1之後,轉的,但是是過本人的驗證的,真實可靠的,並不是胡亂轉載的。
並且經過細微的修改。
以下的操作都需要在源伺服器上面進行。。。
安裝Inotify-tools工具,實時觸發rsync進行同步
1、檢視伺服器核心是否支援inotify
ll /proc/sys/fs/inotify #列出檔案目錄,出現下面的內容,說明伺服器核心支援inotify
-rw-r--r-- 1 root root 0 Mar 7 02:17 max_queued_events
-rw-r--r-- 1 root root 0 Mar 7 02:17 max_user_instances
-rw-r--r-- 1 root root 0 Mar 7 02:17 max_user_watches
備註:Linux下支援inotify的核心最小為2.6.13,可以輸入命令:uname -a檢視核心
CentOS 5.X 核心為2.6.18,預設已經支援inotify
2、安裝inotify-tools
yum install make gcc gcc-c++ #安裝編譯工具
inotify-tools下載地址:http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
上傳inotify-tools-3.14.tar.gz到/usr/local/src目錄下
cd /usr/local/src
tar zxvf inotify-tools-3.14.tar.gz #解壓
cd inotify-tools-3.14 #進入解壓目錄
./configure --prefix=/usr/local/inotify #配置
make #編譯
make install #安裝
3、設定系統環境變數,新增軟連線
echo "PATH=/usr/local/inotify/bin:$PATH" >>/etc/profile.d/inotify.sh
source /etc/profile.d/inotify.sh #使設定立即生效
echo "/usr/local/inotify/lib" >/etc/ld.so.conf.d/inotify.conf
ln -s /usr/local/inotify/include /usr/include/inotify
4、修改inotify預設引數(inotify預設核心引數值太小)
檢視系統預設引數值
sysctl -a | grep max_queued_events
結果是:fs.inotify.max_queued_events = 16384
sysctl -a | grep max_user_watches
結果是:fs.inotify.max_user_watches = 8192
sysctl -a | grep max_user_instances
結果是:fs.inotify.max_user_instances = 128
修改引數:
sysctl -w fs.inotify.max_queued_events="99999999"
sysctl -w fs.inotify.max_user_watches="99999999"
sysctl -w fs.inotify.max_user_instances="65535"
vi /etc/sysctl.conf #新增以下程式碼
fs.inotify.max_queued_events=99999999
fs.inotify.max_user_watches=99999999
fs.inotify.max_user_instances=65535
:wq! #儲存退出
引數說明:
max_queued_events:
inotify佇列最大長度,如果值太小,會出現"** Event Queue Overflow **"錯誤,導致監控檔案不準確
max_user_watches:
要同步的檔案包含多少目錄,可以用:find /root/ceshi -type d | wc -l 統計,必須保證max_user_watches值大於統計結果(這裡/root/ceshi為同步檔案目錄)
max_user_instances:
每個使用者建立inotify例項最大值
5、建立指令碼,實時觸發rsync進行同步
vi /usr/local/inotify/rsync.sh #編輯,新增以下程式碼
======================================
#!/bin/sh
srcdir=/home/www.osyunwei.com/
dstdir=home_www.osyunwei.com
rsyncuser=home_www.osyunwei.com_user
rsyncpassdir=/etc/passwd.txt
dstip="192.168.11.128"
for ip in $dstip
do
rsync -avH --port=873 --progress --delete $srcdir [email protected]$ip::$dstdir --password-file=$rsyncpassdir
done
/usr/local/inotify/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e close_write,modify,delete,create,attrib,move $srcdir | while read file
do
for ip in $dstip
do
rsync -avH --port=873 --progress --delete $srcdir [email protected]$ip::$dstdir --password-file=$rsyncpassdir
echo " ${file} was rsynced" >> /tmp/rsync.log 2>&1
done
done
======================================
chmod +x /usr/local/inotify/rsync.sh #新增指令碼執行許可權
指令碼引數說明:
srcdir=/root/ceshi/ #源伺服器同步目錄
dstdir=test1 #目標伺服器rsync同步目錄模組名稱
rsyncuser=root #目標伺服器rsync同步使用者名稱
rsyncpassdir=/etc/passwd.txt #目標伺服器rsync同步使用者的密碼在源伺服器的存放路徑
dstip="192.168.11.128" #目標伺服器ip,多個ip用空格分開
/tmp/rsync.log #指令碼執行日誌記錄
6、設定指令碼開機自動執行
vi /etc/rc.d/rc.local #編輯,在最後新增一行
sh /usr/local/inotify/rsync.sh & #設定開機自動在後臺執行指令碼
:wq! #儲存退出
7、測試inotify實時觸發rsync同步指令碼是否正常執行
在源伺服器192.168.11.130上建立檔案inotify_rsync_ceshi
mkdir /root/ceshi/inotify_rsync_ceshi
重新啟動源伺服器:192.168.11.130
等系統啟動之後,檢視兩臺目標伺服器192.168.11.128的/root/folder下是否有inotify_rsync_ceshi資料夾
然後再在源伺服器192.168.11.130建立資料夾inotify_rsync_ceshi_new
mkdir /root/ceshi/inotify_rsync_ceshi_new
繼續檢視目標伺服器192.168.11.128的/root/folder1下是否有inotify_rsync_ceshi_new資料夾
如果以上測試都通過,說明inotify實時觸發rsync同步指令碼執行正常。
至此,Linux下Rsync+Inotify-tools實現資料實時同步完成。
擴充套件閱讀:
============================================
inotify引數
-m 是保持一直監聽
-r 是遞迴檢視目錄
-q 是打印出事件
-e create,move,delete,modify,attrib 是指 “監聽 建立 移動 刪除 寫入 許可權” 事件
rsync引數
============================================
-v, --verbose 詳細模式輸出
-q, --quiet 精簡輸出模式
-c, --checksum 開啟校驗開關,強制對檔案傳輸進行校驗
-a, --archive 歸檔模式,表示以遞迴方式傳輸檔案,並保持所有檔案屬性,等於-rlptgoD
-r, --recursive 對子目錄以遞迴模式處理
-R, --relative 使用相對路徑資訊
-b, --backup 建立備份,也就是對於目的已經存在有同樣的檔名時,將老的檔案重新命名為~filename。可以使用--suffix選項來指定不同的備份檔案字首。
--backup-dir 將備份檔案(如~filename)存放在在目錄下。
-suffix=SUFFIX 定義備份檔案字首
-u, --update 僅僅進行更新,也就是跳過所有已經存在於DST,並且檔案時間晚於要備份的檔案。(不覆蓋更新的檔案)
-l, --links 保留軟鏈結
-L, --copy-links 想對待常規檔案一樣處理軟鏈結
--copy-unsafe-links 僅僅拷貝指向SRC路徑目錄樹以外的鏈結
--safe-links 忽略指向SRC路徑目錄樹以外的鏈結
-H, --hard-links 保留硬鏈結
-p, --perms 保持檔案許可權
-o, --owner 保持檔案屬主資訊
-g, --group 保持檔案屬組資訊
-D, --devices 保持裝置檔案資訊
-t, --times 保持檔案時間資訊
-S, --sparse 對稀疏檔案進行特殊處理以節省DST的空間
-n, --dry-run現實哪些檔案將被傳輸
-W, --whole-file 拷貝檔案,不進行增量檢測
-x, --one-file-system 不要跨越檔案系統邊界
-B, --block-size=SIZE 檢驗演算法使用的塊尺寸,預設是700位元組
-e, --rsh=COMMAND 指定使用rsh、ssh方式進行資料同步
--rsync-path=PATH 指定遠端伺服器上的rsync命令所在路徑資訊
-C, --cvs-exclude 使用和CVS一樣的方法自動忽略檔案,用來排除那些不希望傳輸的檔案
--existing 僅僅更新那些已經存在於DST的檔案,而不備份那些新建立的檔案
--delete 刪除那些DST中SRC沒有的檔案
--delete-excluded 同樣刪除接收端那些被該選項指定排除的檔案
--delete-after 傳輸結束以後再刪除
--ignore-errors 及時出現IO錯誤也進行刪除
--max-delete=NUM 最多刪除NUM個檔案
--partial 保留那些因故沒有完全傳輸的檔案,以是加快隨後的再次傳輸
--force 強制刪除目錄,即使不為空
--numeric-ids 不將數字的使用者和組ID匹配為使用者名稱和組名
--timeout=TIME IP超時時間,單位為秒
-I, --ignore-times 不跳過那些有同樣的時間和長度的檔案
--size-only 當決定是否要備份檔案時,僅僅察看檔案大小而不考慮檔案時間
--modify-window=NUM 決定檔案是否時間相同時使用的時間戳視窗,預設為0
-T --temp-dir=DIR 在DIR中建立臨時檔案
--compare-dest=DIR 同樣比較DIR中的檔案來決定是否需要備份
-P 等同於 --partial
--progress 顯示備份過程
-z, --compress 對備份的檔案在傳輸時進行壓縮處理
--exclude=PATTERN 指定排除不需要傳輸的檔案模式
--include=PATTERN 指定不排除而需要傳輸的檔案模式
--exclude-from=FILE 排除FILE中指定模式的檔案
--include-from=FILE 不排除FILE指定模式匹配的檔案
--version 列印版本資訊
--address 繫結到特定的地址
--config=FILE 指定其他的配置檔案,不使用預設的rsyncd.conf檔案
--port=PORT 指定其他的rsync服務埠
--blocking-io 對遠端shell使用阻塞IO
-stats 給出某些檔案的傳輸狀態
--progress 在傳輸時現實傳輸過程
--log-format=formAT 指定日誌檔案格式
--password-file=FILE 從FILE中得到密碼
--bwlimit=KBPS 限制I/O頻寬,KBytes per second
-h, --help 顯示幫助資訊
參考:
1. http://www.osyunwei.com/archives/7435.html
相關推薦
使用Inotify實時同步資料夾
接上篇:http://blog.csdn.net/oldmtn/article/details/47836859 這篇文章是我檢視參考1之後,轉的,但是是過本人的驗證的,真實可靠的,並不是胡亂轉載的。 並且經過細微的修改。 以下的操作都需要在源伺服器上面進行。。。 安
rsync+inotify 實時同步腳本學習筆記
rsync+inotify 實時同步腳本學習筆記#!/bin/sh#parahost01=192.168.100.61src=/backupdst=oldboyuser=rsync_backuprsync_passfile=/etc/rsync.passwordinotify_home=/usr/local/
(轉)rsync+inotify實時同步
inside disable 失敗 文件名 -c users localhost tin 常見 原文:http://lxw66.blog.51cto.com/5547576/1331048 聲明:rsync inotify 需要逆向思考,當只做rsync不實時同步時,我們一
rsync+inotify實時同步
rsync+inotify實時同步Rsync+Inotify實時同步Rsync:rsync是類unix系統下的數據鏡像備份工具。使用快速增量備份工具Remote Sync可以遠程同步,支持本地復制,或者與其他SSH、rsync主機同步。Inotify:Inotify 是一個 Linux特性,它監控文件系統操作
rsync同步操作 、 發布rsync共享 、 inotify實時同步 、 Split分離解析
rsync 虛擬機A 1. 將防火墻狀態設置為trusted 2.SELinux當前修改為permissive 3.SELinux永久狀態修改為permissive 4.清空Yum緩存,檢查Yum是否可用 虛擬機B 1. 將防火墻狀態設置為trusted 2.SELinu
rsync遠程同步+inotify實時同步
ima 51cto vpd 備份 mage ssp fde ces 實時 rsync遠程同步備份服務器 客戶端發生改變,數據同步到服務器 rsync遠程同步+inotify實時同步
在CentOS7上配置rsync源服務器+inotify實時同步
-c sha .tar.gz clu nag 一次 一個 for mar 概述 rsync是一個開源的快速備份工具,可以再不同主機之間鏡像同步整個目錄樹,支持增量備份,保持鏈接和權限,且采用優化的同步算法,再傳輸前執行壓縮,因此非常適用於異地備份、鏡像服務器等應用。 原理
Centos7 下 配置 rsync 以及 rsync+inotify 實時同步
否則 tst rsync服務 notify 檢測 日誌 文件備份 過程 ddr Centos 7 下 配置 Rsync 以及 rsync+inotify 實時同步 rsync介紹 rsync是一個開源的快速備份工具,可以在不同主機之間鏡像同步整個目錄樹,支持增量備份,保持鏈
rsync + inotify 實時同步【附送源碼包】
服務器 路徑和 sync 執行權 chm 發生 都是 blog src 項目:配置Rsync+inotify 實時備份 簡介:·Rsync:是一個開源的快速備份工具,它可以在不同的主機之間同步整個目錄樹,並且可以保持連接和權限在傳輸前執行壓縮,因此很適用於異地備份、鏡像服務
配置rsync+inotify 實時同步
process 認同 本機 賬號 creat 配置文件 下載到本地 inux wall rsync簡介:rsync是一個開源的快速備份工具,可以在不同主機之間鏡像同步整個目錄樹,支持增量備份,保持連接和權限,且采用優化的同步算法,在傳輸前執行壓縮,因此非常適用於異地備份,鏡
rsync遠程同步及rsync+inotify實時同步
samba 路徑 支持 避免 fat 配置 授權 let 解釋 rsync遠程同步及rsync+inotify實時同步 思維代入 正確、有效的備份方案是保障系統及數據安全的重要手段。在服務器中,通常會結合計劃性任務、shell腳本來執行本地備份。但有時候為了提高備份的可靠性
Rsync+Sersync實時同步資料目錄
第1章 Rsync簡介 1.1 Rsync基本概述 rsync是一款開源的備份工具,可以在不同主機之間進行同步,可實現全量備份與增量備份 全量:將全部資料,進行傳輸覆蓋 增量:只傳輸差異部分的資料 1.2 實現增量複製的原理 Rsync通過其獨特的“quick check”演算法,實現增量傳輸資料
rsync+inotify 實時同步
案例 1、在1.10伺服器上配置為服務端,修改rsync的配置檔案/etc/rsyncd.conf,並啟動rsync服務程式。 2、在1.20上使用rsync命令驗證是否能夠從服務端(/var/www/html)下載檔案到客戶機端(/var/www/html)。
雲展網教程 | 編輯書櫥標題、密碼、開啟方式、同步資料夾
雲展網提供了書櫥功能,方便使用者通過書櫥整合展示一系列書籍。下面我們對書櫥的相應內容進行設定: 標題:書櫥的名稱,顯示在書櫥上方,微信等分享平臺分享書櫥時顯示的標題。 密碼:使用者訪問書櫥需要輸入密碼才能看見書籍。密碼設定可見情況下設定。 同步資料夾:勾選是否同步資料夾,選擇是的情
更改 OneDrive 同步資料夾位置
快盤、360雲盤個人雲盤服務被關閉後,目前最好的免費同步盤替代方案! 2018-5-12更新 還沒體驗過oneDrive的童鞋,可以不用看下面的內容,直接 點上面的連結註冊帳號,作為新客戶您會獲得預設的5GB儲存空間,除此之外您還會額外獲得0.5 G
在CentOS7上配置rsync源伺服器+inotify實時同步
概述 rsync是一個開源的快速備份工具,可以再不同主機之間映象同步整個目錄樹,支援增量備份,保持連結和許可權,且採用優化的同步演算法,再傳輸前執行壓縮,因此非常適用於異地備份、映象伺服器等應用。 原理 再遠端同步任務中,負責發起rsync同步操作的客戶機稱為發起端,而
ODI利用CDC實現實時同步資料
(內容有借鑑其他文件,親身實踐成功~) 需求: table_02作為目標表,需要實時的與源資料表table_01同步(即table_01更新或者是插入或者是刪除了一行記錄,table_02能夠實時的同步此操作----此處設定為延時10s同步------已經很了不得了 好伐!
kettle 實時同步資料(插入/更新/刪除資料)
首先需要下載kettle工具,本人的環境為:jdk1.8。下載地址:https://jaist.dl.sourceforge.net/project/pentaho/Data%20Integration/7.1/pdi-ce-7.1.0.0-12.zip來接mysql資料庫需
cp,scp,rsync同步資料夾使用方法
//web1伺服器建立rsync同步使用者 [[email protected] ~]#useradd rsync //建立rsync使用者的密碼 [[email protected] ~]# [email protected] |passwd --stdin rsync pa
rsync+inotify實時同步環境部署記錄
關閉selinux rsync服務 rule 雙向同步 data 頁面 操作 配置文件 多少 rsync+inotify實時同步環境部署記錄在使用rsync首次全量同步後,結合inotify對源目錄進行實時監控,只有有文件變動或新文件產生,就會立刻同步到目標目錄下,非常高效