1. 程式人生 > >centos6.5 rsync+inotify實現伺服器之間檔案實時同步

centos6.5 rsync+inotify實現伺服器之間檔案實時同步

1. rsync的優點與不足

與傳統的cp、tar備份方式相比,rsync具有安全性高、備份迅速、支援增量備份等優點,通過rsync可以解決對實時性要求不高的資料備份需求,例如定期的備份檔案伺服器資料到遠端伺服器,對本地磁碟定期做資料映象等。

隨著應用系統規模的不斷擴大,對資料的安全性和可靠性也提出的更好的要求,rsync在高階業務系統中也逐漸暴露出了很多不足。首先,rsync同步資料時,需要掃描所有檔案後進行比對,進行差量傳輸。如果檔案數量達到了百萬甚至千萬量級,掃描所有檔案將是非常耗時的。而且正在發生變化的往往是其中很少的一部分,這是非常低效的方式。其次,rsync不能實時的去監測、同步資料,雖然它可以通過linux守護程序的方式進行觸發同步,但是兩次觸發動作一定會有時間差,這樣就導致了服務端和客戶端資料可能出現不一致,無法在應用故障時完全的恢復資料。基於以上原因,rsync+inotify組合出現了!

2. 初識inotify

inotify是一種強大的、細粒度的、非同步的檔案系統事件監控機制,linux核心從2.6.13起,加入了inotify支援,通過inotify可以監控檔案系統中新增、刪除,修改、移動等各種細微事件,利用這個核心介面,第三方軟體就可以監控檔案系統下檔案的各種變化情況,而inotify-tools就是這樣的一個第三方軟體。

在上面章節中,我們講到,rsync可以實現觸發式的檔案同步,但是通過crontab守護程序方式進行觸發,同步的資料和實際資料會有差異,而inotify可以監控檔案系統的各種變化,當檔案有任何變動時,就觸發rsync同步,這樣剛好解決了同步資料的實時性問題。

上一篇中,我們知道
t

B客戶端主動去請求A服務端的檔案,進行同步檔案,誰主動誰是客戶端,誰被動誰是服務端。

而如果我們需要實時備份資料,讓inotify監控檔案系統的各種變化,當檔案有任何變動時,就觸發rsync同步,則該源伺服器為主動,那它就是客戶端,備份伺服器為被動方,那它就是服務端(-deamon)。

3. 接下來讓我們開始rsync和inotify的安裝、配置

假設現在我們要將伺服器A的/home/test目錄實時備份到伺服器B的/home/test目錄下

2

一、備份伺服器(server端,nginx-backup,192.168.1.102)

我們還是老樣子,先到backup伺服器來安裝被動的server端,backup伺服器只安裝rsync。

安裝rsync

[[email protected] ~]# cd /usr/local/src/
[[email protected] src]# wget http://rsync.samba.org/ftp/rsync/src/rsync-3.0.9.tar.gz  
[[email protected] src]# tar zxvf rsync-3.0.9.tar.gz  
[[email protected] src]# cd rsync-3.0.9
[[email protected] rsync-3.0.9]# ./configure --prefix=/usr/local/rsync
[[email protected] rsync-3.0.9]# make
[[email protected] rsync-3.0.9]# make install

建立使用者與密碼認證檔案

[[email protected] rsync-3.0.9]# echo "backup:bk_password" > /usr/local/rsync/rsyncd.passwd

設定許可權為只讀

[[email protected] rsync-3.0.9]# cd /usr/local/rsync
[[email protected] rsync]# chmod 600 rsyncd.passwd

建立rsync配置檔案

[[email protected] rsync]# vi /usr/local/rsync/rsyncd.conf
uid = root
gid = root
use chroot = no
max connections = 4
strict modes = yes
hosts allow = 192.168.1.101 #可以空格,允許多個
port = 873
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log

[test]
path = /home/jerome #當前伺服器要同步到此的目錄(就是 /home/jerome/test )
ignore errors
read only = false
list = false
auth users = backup
secrets file = /usr/local/rsync/rsyncd.passwd

PS:注意這裡要將read only 修改為 false, 因為是要將檔案同步到該模組的,必須可寫

以守護程序方式啟動rsync伺服器

[[email protected] rsync]# rsync --daemon --config=/usr/local/rsync/rsyncd.conf

我們可以把rsync指令碼加入到開機啟動項裡

[[email protected] rsync]# echo "/usr/local/rsync/bin/rsync --daemon --config=/usr/local/rsync/rsyncd.conf" >> /etc/rc.local

二、源伺服器(client端,nginx,192.168.1.101)

nginx伺服器安裝主動的client端,不僅要安裝rsync,還要安裝inotify。

試試直接使用 yum install rsync (安裝rsync參考上面,此處省略...,安裝完就行 不啟動rsync)

建立訪問服務端A的密碼認證檔案

[[email protected] rsync]# echo "bk_password" > /usr/local/rsync/rsync.passwd

設定許可權為只讀

[[email protected] rsync]# chmod 0600 rsync.passwd

在rsync安裝之後,執行以下指令同步備份(可以不執行

[[email protected] rsync]# rsync -vzrtopg --delete --progress --password-file=/usr/local/rsync/rsync.passwd [email protected]::test /home/test

安裝inotify

[[email protected] rsync]# cd /usr/local/src/
[[email protected] src]# wget http://cloud.github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz  
[[email protected] src]# tar zxvf inotify-tools-3.14.tar.gz  
[[email protected] src]# cd inotify-tools-3.14  
[[email protected] inotify-tools-3.14]# ./configure --prefix=/usr/local/inotify  
[[email protected] inotify-tools-3.14]# make  
[[email protected] inotify-tools-3.14]# make install  

inotify-tools-3.14.tar.gz 百度網盤下載:連結:http://pan.baidu.com/s/1i3fFF2d 密碼:e8m6

建立rsync複製指令碼

此項功能主要是將client端的目錄/home/test/裡的內容,如果修改了(無論是新增、修改、刪除檔案)能夠通過inotify監控到,並通過rsync實時的同步給server的/home/test裡,下面是通過shell指令碼實現的。

[[email protected] rsync]# vi /usr/local/rsync/inotify_rsync.sh
#!/bin/bash
host=192.168.1.102 #server的ip(備份伺服器)
src=/home/test/ #server端要實時監控的目錄(/home/test),des是認證的模組名,需要與client的des一致 des=test
user=backup

/usr/local/inotify/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e modify,delete,create,attrib $src | while read files  
do 
/usr/bin/rsync -vzrtopg --progress --password-file=/usr/local/rsync/rsync.passwd $src [email protected]$host::$des 
echo "${files} was rsynced" >>/data/logs/rsync.log 2>&1 
done

為.sh指令碼增加764許可權

[[email protected] rsync]# chmod 764 inotify_rsync.sh 

執行指令碼

[[email protected] rsync]# sh /usr/local/rsync/inotify_rsync.sh & 

請記住,只有在備份伺服器client端的rsync安裝並啟動rsync之後,在啟動rsync.sh指令碼,否則有時候會滿屏出現:

rsync: failed to connect to 192.168.10.221: Connection refused (111)  
rsync error: error in socket IO (code 10) at clientserver.c(107) [sender=2.6.8]  

我們還可以把rsync.sh指令碼加入到開機啟動項裡

[[email protected] rsync]# echo "setsid /usr/local/rsync/inotify_rsync.sh &" >> /etc/rc.local 

現在rsync與inotify在server端安裝完成,rsync在備份伺服器client端也安裝完成。

現在去測試下吧,當然為了穩當起見,還是要重啟測試下,自啟動指令碼是否正常執行,保證萬無一失。以上操作也可以在一臺伺服器實現,同步目錄到不同的目錄。

相關推薦

centos6.5 rsync+inotify實現伺服器之間檔案實時同步

1. rsync的優點與不足 與傳統的cp、tar備份方式相比,rsync具有安全性高、備份迅速、支援增量備份等優點,通過rsync可以解決對實時性要求不高的資料備份需求,例如定期的備份檔案伺服器資料到遠端伺服器,對本地磁碟定期做資料映象等。 隨著應用系統規模的不斷擴大,對資料的安全性和可靠性也提出的更好的

rsync+inotify實現伺服器之間檔案實時同步

之前做了“ssh信任與scp自動傳輸指令碼”的技術文件,此方案是作為公司裡備份的方法,但在實際的執行中,由於主伺服器在給備份伺服器傳輸的時候,我們的主伺服器需要備份的檔案是實時、不停的產生的,造成不知道主伺服器給備份伺服器傳輸了多少檔案,磁碟空間就那麼大,做備份的原因:一個是為了保持檔案,另外一個是解決主伺

配置rsync+inotify實現站點文件實時同步

rep ron 文件實時同步 .tar.gz exp area 調整 資源 centos 一、rsync簡介 rsync是linux系統下的數據鏡像備份工具。可以在不同主機之間鏡像同步整個目錄樹,支持增量備份,保持鏈接和權限,且采用優化的同步算法,在傳輸前執行壓縮,因此非

CentOS6.6 rsync+inotify實現數據時時備份

centos6.6 rsync+inotify實現數據時時備份 linux rsync+inotify實現數據時時備份 註意:rsync的daemon模式已提前配置好了,只需要配置inotify即可。基本環境 系統版本主機名IP地址角色備份/監控目錄CentOS 6.6backup10.0.0

centos7中配置rsync+inotify實現自動監控數據同步

ping通 ping down 自動監控 type 用戶密碼 mark RoCE 關閉 rsync服務可以實現數據的同步,但不是自動同步,所以在一些網站服務等, 需要用到inotify進行自動監控。 實驗環境:centos7 兩臺 能互相ping通

Linux伺服器檔案實時同步實現

使用場景 現有伺服器A和伺服器B,如果伺服器A的指定目錄(例如 /home/paul/rsync/ )中的內容發生變更(增刪改和屬性變更),實時將這些變更同步到伺服器B的目標目錄中(例如 /home/paul/rsync/ )。 資料映象備份工具Rsync Rsy

超詳細CentOS6.5配置rsync+inotify實現同步

touch iptables cront address mon ges 應對 ret rect rsync rsync是一個開源的快速備份工具,可以在不同主機之間鏡像同步整個目錄樹,支持增量備份,保持鏈接和權限,且采用優化的同步算法,傳輸前執行壓縮,因此非常適用於異地備份

linux下rsync+inotify實現兩臺伺服器檔案實時同步

假設兩個伺服器: 192.168.0.1 源伺服器  有目錄 /opt/test/ 192.168.0.2 目標伺服器  有目錄 /opt/bak/test/ 實現的目的就是保持這兩個伺服器某個檔案目錄保持實時同步 實現方式: 通過rsync+inotify-too

【Windows】Windows伺服器之間實現檔案實時同步

Windows伺服器之間實現檔案實時同步? 做公安專案,要實現內外網檔案同步,需要用到同步工具。有一個工具叫 “前置機”。 前置機的原理不是很清楚,應該是通過地址對映過去,然後跟公安內網某個內網IP伺

伺服器架構inotify+rsync檔案實時同步

釋出伺服器上下載 wget https://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz 在程式碼釋出伺服器上安裝inotify,執行如下命令 tar xzvf inotify-tools-3.14.t

rsync+inotify-toos實現檔案實時同步和引數詳解

文章摘自:http://lxw66.blog.51cto.com/5547576/1331048 文章摘自:http://www.cnblogs.com/smail-bao/p/5667287.html rsync 幫助文件:http://man.linuxde.ne

Rsync+inotify實現檔案實時同步#附shell指令碼

強烈推薦先仔細看此文 https://segmentfault.com/a/1190000002427568 實驗環境 centos 7.3 vm2:192.168.221.128 同步伺服器 vm1:192.168.221.129 上傳伺服器 關閉seliunx 關閉防火牆 同步伺服器vm2的配置 yum

CentOS6.5下搭建FTP伺服器 + Java上傳檔案

/** * @Type ftpClientFileManager.java * @Desc * @author 123 * @date 2017年3月31日 下午2:50:58 * @version */ @Service public class FTPFileManager {

linux:使用rsyncinotify-tools實現檔案實時同步

首先手頭有兩臺linux伺服器 系統為CentOS 1臺作為主伺服器,另1臺作為同步伺服器(主伺服器上新增/修改/刪除檔案後將會同步給同步伺服器) 首先先檢查主伺服器是否安裝所需的工具 1.檢查rsync是否已經安裝 rpm -qa | grep rs

Linux下nfs+rpcbind實現伺服器之間檔案共享

目前,越來越多的專案不再是單機,而是趨向於分散式部署,所以在分散式部署就需要檔案共享,例如A伺服器上傳的圖片,希望在B伺服器上也可以訪問。因此就需要跨機器共享檔案,在這裡就簡單的採用nfs+rpcbi

實現windows和linux伺服器之間檔案共享,工具就是Samba軟體中的一種,samba-client。

在嵌入式學習的過程中,避免不了操作linux。在windows下安裝虛擬機器執行linux作業系統,在windows下的開發工具編寫好的軟體放到linxu上進行編譯,然後又需要從linux'上取出來編

Rsync+inotify實現文件實時同步

數據同步、rsync、rsync inotify-tools 數據備份、文件備份是運維、DBA等崗位最熟悉不過的話題,這裏不介紹數據庫的備份,簡單介紹一下文件同步工具,這樣的工具有很多,Windows環境下有Goodsync、FreeFileSync等,Linux下rsync、unison等,常用的實時同步,

Centos利用 rsync+inotify實現實時同步

rsync inotify 1.1 inotify介紹inotify是一種強大的、細粒度的、異步的文件系統事件控制機制。linux內核從2.6.13起,加入了inotify支持,通過inotify可以監控文件系統中添加、刪除、修改、移動等各種事件,利用這個內核接口,第三方軟件就可以監控文件系統下文件的

Centos7.4 搭建rsync+inotify 實現數據同步

centos7.4 搭建rsync+inotify 實現數據同步簡介起因因公司全部遷雲,配置ECS時需要將Web集群之間配置 數據同步 以及 會話保持,接下來配置在 linux Centos7.4版本的系統操作。優點使用rsync工具和inotify機制相結合,可以實現觸發式部署(實時同步),只要原始(主)

rsync+inotify實現代碼實時同步

rsync inotify 實時同步 rsync rsync是lunix系統下的數據鏡像備份工具。使用快速增量備份工具Remote Sync可以遠程同步,支持本地復制,或者與其他SSH、rsync主機同步。優點:1)、可以鏡像保存整個目錄樹和文件系統。2)、可以很容易做到保持原來文件的權限、