rsync+inotify實時備份

1、rsync及inotify概述

1.rsync概述

rsync是linux系統下的數據鏡像備份工具。使用快速增量備份工具Remote Sync能夠遠程同步,支持本地複製,或者與其餘SSH、rsync主機同步。html

2.inotify概述

inotify 是一個 Linux特性,它監控文件系統操做,好比讀取、寫入和建立。Inotify 反應靈敏,用法很是簡單,而且比 cron 任務的繁忙輪詢高效得多。學習如何將 inotify 集成到您的應用程序中,並發現一組可用來進一步自動化系統治理的命令行工具。
案例環境以下:linux

角色 IP地址 安裝軟件包
rsync同步源 192.168.174.141 rsync、
rsync發起端 192.168.174.165 rsync、inotify-tools

2、配置rsync源服務器

1.創建/etc/rsyncd.conf配置文件

vim /etc/rsyncd.conf
 uid = nobody
    gid = nobody
    use chroot = yes                                  //是否禁錮在源目錄,yes爲是
    address = 192.168.174.141                //監聽地址
    port 873                                                   //監聽端口
    log file = /var/log/rsyncd.log                    //日誌文件路徑
    pid file = /var/run/rsyncd.pid                    //進程ID文件路徑
    hosts allow = 192.168.174.0/24            //容許訪問的客戶機的地址段

    [wwwroot]                                              //共享模塊名稱    
    path = /var/www/html                           //源目錄的實際地址
    comment = www.kgc.cn                 
    read only = no                                 //是否爲只讀    
    dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2      //同步時 再也不壓縮的文件類型
    auth users = backuper                           //受權帳戶
    secrets file = /etc/rsyncd_users.db       //存放帳戶信息的數據文件

2.爲備份帳戶建立數據文件

vim /etc/rsyncd_users.db
 backuper:abc123    //backuper爲用戶名 abc123爲密碼
chmod 600 /etc/rsyncd_users.db  //更改備份帳戶的讀取權限,提升安全性
mkdir -p /var/www/html      
chmod 777 /var/www/html    //更改源目錄的讀寫權限
chown -R nobody:nobody /var/www/html  //更改源目錄的所屬主及所屬組

3.開啓服務,運行參數爲 --deamon ;若需關閉服務,可採起kill進程的方式,如kill $(cat /var/run/rsync.pid)

rsync --daemon
netstat -natp | grep rsync
tcp        0      0 192.168.174.141:873     0.0.0.0:*               LISTEN      4875/rsync

3、配置rsync發起端

將對方源目錄的文件同步到發起端的/opt目錄下,方法有三種:c++

(1)rsync -avz 備份用戶名@同步源IP地址::共享模塊名 /發起端目錄 password:備份用戶密碼vim

rsync -avz backuper@192.168.174.141::wwwroot /opt/  
password:abc123

(2) rsync -avz rsync://備份用戶名@共享模塊名 /發起端目錄 password:備份密碼安全

rsync -avz rsync://backuper@192.168.174.141/wwwroot /opt/
password:abc123

(3)免密碼交互bash

vim /etc/server.pass  //建立server.pass文件備份用戶保存密碼
abc123
chmod 600 /etc/server.pass  //更改密碼文件讀取權限,提升安全性
rsync -az --delete --password-file=/etc/server.pass backuper@192.168.174.141::wwwroot /opt

測試是否同步
在同步源服務器上的共享目錄下建立aaa.html
rsync+inotify實時備份
rsync+inotify實時備份服務器

4、發起端配置inotify實時同步

1.調整inotify內核參數

vim /etc/sysctl.conf //在後面加入以下參數
    fs.inotify.max_queued_events = 16384    監控事件隊列(16384)
    fs.inotify.max_user_instances = 1024    最多監控實例數(1024)
    fs.inotify.max_user_watches = 1048576   每一個實例最多監控文件數(1048576)

2.安裝編譯inotify-tools

yum install gcc gcc-c++ make -y
cd /opt/inofiry-tools-3.14
./configure
make && make install

3.監控事件

從新開啓一個終端併發

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

在/var/www/html目錄下建立一個a.txt文件,切換終端查看命令輸出的狀況
rsync+inotify實時備份tcp

rsync+inotify實時備份

4.建立觸發式同步腳本

用來檢測本機/var/www/html目錄的變更狀況,一旦有更新觸發rsync同步操做,則上傳至服務器192.168.174.141的/var/www/htmlide

vim /opt/inotify.sh
#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e modify,create,attrib,move,delete /var/www/html/"
RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /var/www/html/ backuper@192.168.174.141::wwwroot/"
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
    if [ $(pgrep rsync | wc -l) -le 0 ] ; then
        $RSYNC_CMD
    fi
done

5.測試

在發起端/var/www/html目錄下建立test.txt文件
rsync+inotify實時備份
切換到同步源服務器下/var/www/html下查看
rsync+inotify實時備份
將發起端的test.txt文件刪除
rsync+inotify實時備份
切換到同步源服務器,此時源服務器下的test.txt文件也被刪除,說明同步成功。
rsync+inotify實時備份

相關文章
相關標籤/搜索