rsync+inotify+ssh遠程實時增量同步


一、準備工作

-主服務器:

     Rsync,發起端

       Inotify

       Ssh

       IP:192.168.10.128

-備份服務器

       ssh,備份端

       IP:192.168.10.129

二、部署過程

1、備份端建立上傳用戶,並設置權限

-創建用戶

[root@backup ~]# useradd rput
[root@backup ~]# passwd rput

-爲同步目錄設置訪問權限

[root@backup ~]# chown -R rput:rput/var/www/html/
[root@backup ~]# ls -ld /var/www/html/
drwxr-xr-x. 2 rput rput 4096 8月  14 2013 /var/www/html/

 

 

2、發起端操作

-創建ssh密鑰對,實現免交互

--創建密鑰對

[root@master ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key(/root/.ssh/id_rsa): #回車
Enter passphrase (empty for no passphrase):#回車
Enter same passphrase again: #回車
Your identification has been saved in/root/.ssh/id_rsa.
Your public key has been saved in/root/.ssh/id_rsa.pub.
The key fingerprint is:

--將公鑰發送至對端服務器

[root@master ~]# ssh-copy-id [email protected]


 

-配置inotify

--調整inotify內核參數

[root@master ~]# vim /etc/sysctl.conf
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576
[root@master ~]# sysctl –p

---注:

max_queue_events:監控隊列大小
max_user_instances:最多監控實例數
max_user_watches:每個實例最多監控文件數

-安裝inotify-tools輔助工具

[root@master ~]# cd /usr/src/
[root@master src]# ll
總用量 360
drwxr-xr-x. 2 root root   4096 9月  23 2011 debug
-rw-r--r--. 1 root root 358772 9月  25 20:53inotify-tools-3.14.tar.gz
drwxr-xr-x. 3 root root   4096 9月  25 19:35 kernels
[root@master src]# tar zxfinotify-tools-3.14.tar.gz
[root@master src]# cd inotify-tools-3.14
[root@master inotify-tools-3.14]#./configure && make && make install
-編寫腳本實現遠程實時增量同步
[root@master ~]# vim rsync_inotify_ssh.sh
#!/bin/bash
 
rsync_cmd="rsync -azH --delete/var/www/html/ [email protected]:/var/www/html"
 
inotify_cmd="inotifywait -mrq -emodify,create,attrib,move,delete /var/www/html/"
 
$inotify_cmd | while read a b c
do
       if [ $(pgrep ^rsync$ | wc -l) -le 0 ];then
                $rsync_cmd
       fi
done
 
[root@master ~]# chmod 755rsync_inotify_ssh.sh

 

 

三、測試

-發起端

[root@master ~]# /root/rsync_inotify_ssh.sh&
[1] 6788
 
[root@master ~]# touch /var/www/html/test1
[root@master ~]# touch /var/www/html/test2

 

-備份端

[root@backup ~]# ll /var/www/html/
總用量 0
-rw-r--r--. 1 rput rput 0 9月  25 2016 test1
-rw-r--r--. 1 rput rput 0 9月  25 2016 test2

 

四、附錄

1、rsync命令用法

-基本格式:

rsync [選項] 原始位置 目標位置

-常用選項:

 

   -a:歸檔模式,遞歸併保留對象屬性,等同於–rlptgoD
        --注:
      -r:遞歸模式,包含目錄及子目錄中所有文件
            -l:對於符號鏈接文件仍然複製爲符號鏈接文件
            -p:保留文件的權限標記
            -t:保留文件的時間標記
            -g:保留文件的屬組標記(僅超級用戶使用)
            -o:保留文件的屬主標記(僅超級用戶使用)
            -D:保留設備文件及其他特殊文件
    -v:顯示同步過程的詳細(verbose)信息
    -z:在傳輸文件時進行壓縮(compress)
    -H:保留硬連接文件
    -A:保留ACL屬性信息
    --checksum:根據對象的校驗和來決定是否跳過文件

2、關於inotify

-參考:

https://www.centos.bz/2012/06/inotify-tools-introduction/

    inotifywait:用於持續監控,實時輸出結果

    inotifywatch:用於短期監控,任務完成後再出結果

-語法:
    inotifywait [-hcmrq] [-e ] [-t ][–format ][–timefmt ] [… ]

-常用選項:

-h,–help
    輸出幫助信息
@
    排除不需要監視的文件,可以是相對路徑,也可以是絕對路徑。
–fromfile
    從文件讀取需要監視的文件或排除的文件,一個文件一行,排除的文件以@開頭。
-m, –monitor
    接收到一個事情而不退出,無限期地執行。默認的行爲是接收到一個事情後立即退出。
-d, –daemon
    跟–monitor一樣,除了是在後臺運行,需要指定
–outfile
    把事情輸出到一個文件。也意味着使用了–syslog。
-o, –outfile
    輸出事情到一個文件而不是標準輸出。
-s, –syslog
    輸出錯誤信息到系統日誌
-r, –recursive
    監視一個目錄下的所有子目錄。
-q, –quiet
    指定一次,不會輸出詳細信息,指定二次,除了致命錯誤,不會輸出任何信息。
–exclude
 
    正則匹配需要排除的文件,大小寫敏感。
–excludei
 
    正則匹配需要排除的文件,忽略大小寫。
-t,–timeout
 
    設置超時時間,如果爲0,則無限期地執行下去。
-e, –event
    指定監視的事件。
-c, –csv
    輸出csv格式。
–timefmt
    指定時間格式,用於–format選項中的%T格式。
–format
    指定輸出格式。
%w 
    表示發生事件的目錄
%f 
    表示發生事件的文件
%e 
    表示發生的事件
%Xe 
    事件以“X”分隔
%T 
    使用由–timefmt定義的時間格式


 

-可監聽事件

access

文件讀取

modify

文件更改。

attrib

文件屬性更改,如權限,時間戳等。

close_write

以可寫模式打開的文件被關閉,不代表此文件一定已經寫入數據。

close_nowrite

以只讀模式打開的文件被關閉。

close

文件被關閉,不管它是如何打開的。

open

文件打開。

moved_to

一個文件或目錄移動到監聽的目錄,即使是在同一目錄內移動,此事件也觸發。

moved_from

一個文件或目錄移出監聽的目錄,即使是在同一目錄內移動,此事件也觸發。

move

包括moved_to moved_from

move_self

文件或目錄被移除,之後不再監聽此文件或目錄。

create

文件或目錄創建

delete

文件或目錄刪除

delete_self

文件或目錄移除,之後不再監聽此文件或目錄

unmount

文件系統取消掛載,之後不再監聽此文件系統。

 


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