配置rsync inotify實時同步

2021-07-10 03:24:57 字數 3014 閱讀 4712

linux核心從2.6.13版本開始提供了inotify通知介面,用來監控檔案系統的各種變化情況,如檔案訪問、刪除、移動等。利用這一機制,可以非常方便地實現檔案異動告警、增量備份,並針對目錄或檔案的變化及時作出響應。

使用rsync工具與inotify機制相結合,可以實現觸發式備份(實時同步)

把 192.168.198.131 上的/var/www/html目錄時實同步到

-> 192.168.198.132 上的/wwwroot目錄中

在 131 上執行下面的相關操作,實現實時同步:

看看是否有 /proc/sys/fs/inotify/目錄,以確定核心是否支援inotify

ll

/proc/sys/fs/inotify/

total0-

rw-r-

-r--

1root

root

0feb

410:06

max_queued_events-rw

-r--

r--1

root

root

0feb

410:06

max_user_instances-rw

-r--

r--1

root

root

0feb

410:06

max_user_watches

預設的inotify機制提供了三個調控引數:max_queued_events、max_user_instances、max_user_watches。分別表示監控事件佇列、最多監控例項數、每個例項最多監控檔案數

tail /proc/sys/fs/inotify/*

==> /proc/sys

/fs/inotify

/max_queued_events <==

16384

==> /proc/sys

/fs/inotify

/max_user_instances <==

128==> /proc/sys

/fs/inotify

/max_user_watches <==

8192

當要監控的目錄、檔案數量較多或者變化較頻繁時,建議加大這三個引數的值。

例如可直接修改/etc/sysctl.conf配置檔案,將管理佇列設為32768,例項數設為1024,監控數設為1048576(建議大於監控目標的總檔案數)。

vim /etc/sysctl.conf

#新增如下內容

fs.inotify

.max_queued_events = 32768

fs.inotify

.max_user_instances = 1024

fs.inotify

.max_user_watches = 1048576

sysctl -p #使修改後檔案生效

使用inotify機制還需要安裝inotify-tools,以便提供inotifywait、inotifywatch輔助工具程式,用來監控、彙總改動情況。

yum -y install epel-release

yum install inotify-tools

--enablerepo=epel

inotifywait命令

inotifywait -mrq -e create,delete,move,modify,attrib /var/www/html/

-e 指定監控事件(create,move,delete,modify,attrib"建立,移動,刪除,寫入,屬性事件")

-m 表示持續監控

-r 表示遞迴整個目錄

-q 表示簡化輸出資訊

rsync選項的含義:

-a 存檔模式

-h 儲存硬連線

-z 壓縮檔案資料在傳輸

-t 維護修改時間

--delete 刪除於多餘檔案

132主機:

useradd adminput ; passwd adminput

chown adminput.adminput /wwwroot

131主機:

ssh-keygen

-t rsa

ssh-copy

-id [email protected]

.198

.132

為了簡單起見,只要檢測到變動時執行rsync上行同步操作即可。需要注意的是,當更新較頻繁時,應避免併發執行rsync備份(當rsync程序已經存在則忽略本次同步,或根據rsync程序數量來決定是否同步)

vim /opt/inotify.sh

#!/bin/bash

inotify_cmd="inotifywait -mrq -e create,delete,move,modify,attrib /var/www/html/"

rsync_cmd="rsync -azh --delete /var/www/html/ [email protected]:/wwwroot"

$inotify_cmd | while

read directory event file

doif [ $(pgrep rsync | wc -l) -le 0 ] ; then

$rsync_cmd

# echo "$ was rsynced" >>/opt/inotify_rsync.log

fidone

chmod +x /opt/inotify.sh

echo "bash /opt/inotify.sh" >> .bash_profile

注:指令碼內容檢測rsync程序數,指令碼名不要包含rsync,如要包含,調整下檢測的rsync程序數

NFS搭建以及rsync inotify實時備份

搭建nfs 假設有2臺server,分別是server1和server2。現在要在server1上安裝nfs,在server2上掛載該目錄。1.在兩台server上都安裝 yum install portmap nfs utils nfs utils lib 2.編輯server1檔案 etc ex...

rsync inotify實時同步

inotify是一種強大的 細粒度的 非同步的檔案系統事件監控機制,linux核心從2.6.13起,加入了inotify支援,通過inotify可以監控檔案系統中新增 刪除,修改 移動等各種細微事件 資源準備 兩台centos7.2機器 一台rsync服務端 192.168.180.234 服務端配...

linux下rsync inotify同步檔案

inotify進行對伺服器檔案監聽,一旦檢測到有改動則發起同步rsync伺服器檔案到客戶端 1 tar zxvf rsync 3.0.6.tar.gz 2 cd rsync 3.0.6 3 configure 4 make 5 make install 在 etc 目錄下新建rsyncd.conf檔...