通過rsync+inotify實現文件的實時備份同步

jopen 9年前發布 | 72K 次閱讀 rsync

原文參考:http://ixdba.blog.51cto.com/2895551/580280/

http://www.bamaol.com/Psy/Showposts-010000108-5048.html

一,rsync安裝

目前rsync的最新版本是3.0.9

wget http://rsync.samba.org/ftp/rsync/rsync-3.0.9.tar.gz
tar-xvzfrsync-3.0.9.tar.gz;cdrsync-3.0.9;
./configure;make;makeinstall

rsync服務器端配置
1.
vi /etc/rsyncd.conf(需要手動生成)

rsyncd.conf的參數寫在上邊就是全局參數和寫在模塊里的就是模塊參數

#運行RSYNC守護進程的用戶
uid = root
#運行RSYNC守護進程的組
gid = root
#不使用chroot
use chroot = no
#最大連接數是4
max connections = 4
#pid文件存放位置
pidfile=/var/run/rsyncd.pid
#鎖文件存放位置
lockfile=/var/run/rsync.lock
#日志文件存放位置
logfile=/var/log/rsyncd.log
[logs]
#要同步的目錄
path =/usr/local/lnmp
#忽略無關的IO錯誤
ignore errors
#只讀,不能上傳
readonly =true
#禁止查看文件列表
list =false
#允許訪問服務的ip
#hosts allow = 192.168.1.200
#禁止訪問服務的ip
#hosts deny = 0.0.0.0/32
#認證的用戶名,系統必須存在的用戶,但是密碼需要在secrets file 配置,不是系統的密碼。
authusers= root
#認證用戶密碼文件,配置auth users的密碼
secretsfile=/etc/backserver.pas

2.
rsync密碼文件是以冒號分隔的明文。

每個用戶一行,前面是用戶名,后面是密碼,用戶需要是操作系統存在的用戶。

該文件的所有者必須是root,權限是600。

vi /etc/backserver.pas,添加

root:123456

保存并退出后執行

chownroot:root/etc/backserver.pas
chmod600/etc/backserver.pas

3.
啟動rsync服務

/usr/local/bin/rsync--daemon

4.
檢查進程是否存在,

ps-aux |greprsync
root      4406  0.0  0.0   4228   588 ?        Ss   May14   0:00/usr/local/bin/rsync--daemon
netstat-an |grep873
tcp        0      0 0.0.0.0:873                 0.0.0.0:*                   LISTEN

出現以上結果,表明rsync服務器端已經啟動。

5.
打開防火墻

iptables -i INPUT -p tcp --dport 873 -j ACCEPT
iptables -L
結果如下
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:rsync

6.
結束進程:kill -9 pid的值
kill -15 進程名

7.
rsync開機啟動
echo "/usr/bin/rsync --daemon" >> /etc/rc.local

(開機自動啟動rsync服務)

注意事項
1) 提示密碼文件不能讀,需要手工輸入密碼時,可能就是密碼文件權限不是600,或者格式不對,或者是路徑不對。
2) 提示要創建新目錄或文件傳輸失敗時,可能是欲同步的目錄沒有權限,最好把欲同步的目錄權限修改為744。
3) 從客戶端同步文件到服務端時,最好單個文件目錄傳輸,否則易出錯。

rsync客戶端配置

1.
客戶端不用配置,直接使用rsync命令就可以,

rsync -vzrtopg --progress --delete root@118.244.216.177::logs /data/lnmp

2.
如果想rsync無密碼登陸,客戶端只要配置密碼文件即可。

vim /etc/rsyncd.secretes ,這個文件只包含服務器端auth user的密碼,不需要配置用戶名
123456
chmod 600 rsyncd.secretes (密碼文件權限為600,此步必須設置)

注:此處密碼一定要與rsync服務器端密碼文件中密碼保持一致。并且應為rsync客戶端密碼。

rsync -vzrtopg --progress --delete --password-file=/etc/rsyncd.secretes root@118.244.216.177::logs /data/lnmp

注:上述命令是指把服務端的這個路徑(/usr/local/lnmp)下的文件同步到客戶端的這個路徑(/data/lnmp)下。

若想反過來,把客戶端的文件同步到服務端,則為如下:
rsync -vzrtopg --progress --delete --password-file=/etc/rsyncd.secretes /data/lnmp root@118.244.216.177::logs

3.
rsync定時任務

早上四點執行rsync備份

crontab -e
00 04 * * * rsync -vzrtopg --progress --delete --password-file=/etc/rsyncd.secretes root@118.244.216.177::logs /data/lnmp

4.
Rsync 同步參數說明
-vzrtopg里的v是verbose,z是壓縮,r是recursive,topg都是保持文件原有屬性如屬主、時間的參數。
--progress是指顯示出詳細的進度情況
--delete是指如果服務器端刪除了這一文件,那么客戶端也相應把文件刪除
root@xxx.xxx.xxx.xxx中的root是指定密碼文件中的用戶名,xxx為ip地址
logs是指在rsyncd.conf里定義的模塊名
/data/lnmp 是指本地要備份目錄

5.
rsync常用參數:
#rsync [option] 源路徑 目標路徑
其中[option]為:
a:使用archive模式,等于-rlptgoD,即保持原有的文件權限
z:表示傳輸時壓縮數據
v:顯示到屏幕中
e:使用遠程shell程序(可以使用rsh或ssh)
–delete:精確保存副本,源主機刪除的文件,目標主機也會同步刪除
–include=PATTERN:不排除符合PATTERN的文件或目錄
–exclude=PATTERN:排除所有符合PATTERN的文件或目錄
–password-file:指定用于rsync服務器的用戶驗證密碼

--------------------------------------------------------
rsync常見錯誤排錯
1.
rsync: failed to connect to 118.244.216.177: No route to host (113)
rsync error: error in socket IO (code 10) at clientserver.c(124) [receiver=3.0.6]
原因:防火墻屏蔽了端口
解決:打開873段考
iptables -i INPUT -p tcp --dport 873 -j ACCEPT
iptables -L
如果以上指令不行,可以直接停掉防火墻
/etc/init.d/iptables stop

2.
@ERROR: auth failed on module backup
rsync error: error starting client-server protocol (code 5) at main.c(1506) [Receiver=3.0.7]
那估計是密碼文件沒有設置權限哦: chmod 600 /home/admin/security/rsync.pass
應該差不多就可以了

3.@ERROR: auth failed on module xxxxx
rsync: connection unexpectedly closed (90 bytes read so far)
rsync error: error in rsync protocol data stream (code 12) at io.c(150)
這是因為密碼設錯了, 無法登入成功, 請檢查一下 rsyncd.scrt 中的密碼, 二端是否一致?

4.password file must not be other-accessible
continuing without password file
Password:
這表示 rsyncd.scrt 的檔案權限屬性不對, 應設為 600。

5.@ERROR: chroot failed
rsync: connection unexpectedly closed (75 bytes read so far)
rsync error: error in rsync protocol data stream (code 12) at io.c(150)
這通常是您的 rsyncd.conf 中的 path 路徑所設的那個目錄并不存在所致.請先用 mkdir開設好要備份目錄

6.@ERROR: access denied to www from unknown (192.168.1.123)
rsync: connection unexpectedly closed (0 bytes received so far) [receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(359)
最后原因終于找到了。因為有兩個網段都需要同步該文件夾內容,但沒有在hosts allow 后面添加另一個IP段
hosts allow = 192.168.1.0/24
改為
hosts allow = 192.168.1.0/24 192.168.2.0/24
重新啟動rsync服務,問題解決

7.@ERROR: auth failed on module backup
rsync error: error starting client-server protocol (code 5) at main.c(1506) [Receiver=3.0.7]
client端沒有設置/etc/rsync.pas這個文件,而在使用rsync命令的時候,加了這個參數--password-file=/etc/rsync.scrt

8.rsync: recv_generator: mkdir "/teacherclubBackup/rsync……" failed: No space left on device (28)
*** Skipping any contents from this failed directory ***
磁盤空間滿了

9.rsync: opendir "/kexue" (in dtsChannel) failed: Permission denied (13)
同步目錄的權限設置不對,改為755

10.rsync: read error: Connection reset by peer (104)
rsync error: error in rsync protocol data stream (code 12) at io.c(759) [receiver=3.0.5]
未啟動xinetd守護進程
[root@CC02 /]# service xinetd start

11.rsync: unable to open configuration file "/etc/rsyncd.conf": No such file or directory
xnetid查找的配置文件位置默認是/etc下,在/etc下找不到rsyncd.conf文件

12.rsync: failed to connect to 203.100.192.66: Connection timed out (110)
rsync error: error in socket IO (code 10) at clientserver.c(124) [receiver=3.0.5]
連接服務器超時,檢查服務器的端口netstat –tunlp,遠程telnet測試

13.我需要在防火墻上開放哪些端口以適應rsync?
視情況而定。rsync可以直接通過873端口的tcp連接傳文件,也可以通過22端口的ssh來進行文件傳遞,但你也可以通過下列命令改變它的端口:
rsync --port 8730 otherhost::
或者
rsync -e 'ssh -p 2002' otherhost:

14.我如何通過rsync只復制目錄結構,忽略掉文件呢?
rsync -av --include '*/' --exclude '*' source-dir dest-dir

15.為什么我總會出現"Read-only file system"的錯誤呢?
看看是否忘了設"read only = no"了

16.@ERROR: chroot failed
rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3]
原因:
服務器端的目錄不存在或無權限。創建目錄并修正權限可解決問題。

17.@ERROR: auth failed on module tee
rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3]
原因:
服務器端該模塊(tee)需要驗證用戶名密碼,但客戶端沒有提供正確的用戶名密碼,認證失敗。提供正確的用戶名密碼解決此問題。

18.@ERROR: Unknown module ‘tee_nonexists’
rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3]
原因:
服務器不存在指定模塊。提供正確的模塊名或在服務器端修改成你要的模塊以解決問題。

19.權限無法復制。去掉同步權限的參數即可。(這種情況多見于Linux向Windows的時候)

二,rsync+inotify實現數據的實時備份

 在前面的博文中,我講到過利用rsync實現數據的鏡像和備份,但是要實現數據的實時備份,單獨靠rsync還不能實現,本文就講述下如何實現數據的實時備份。

一、rsync的優點與不足
 與傳統的cp、tar備份方式相比,rsync具有安全性高、備份迅速、支持增量備份等優點,通過rsync可以解決對實時性要求不高的數據備份需求,例如定期的備份文件服務器數據到遠端服務器,對本地磁盤定期做數據鏡像等。
 隨著應用系統規模的不斷擴大,對數據的安全性和可靠性也提出的更好的要求,rsync在高端業務系統中也逐漸暴露出了很多不足,首先,rsync同步數據時,需要掃描所有文件后進行比對,進行差量傳輸。如果文件數量達到了百萬甚至千萬量級,掃描所有文件將是非常耗時的。而且正在發生變化的往往是其中很少的一部分,這是非常低效的方式。其次,rsync不能實時的去監測、同步數據,雖然它可以通過linux守護進程的方式進行觸發同步,但是兩次觸發動作一定會有時間差,這樣就導致了服務端和客戶端數據可能出現不一致,無法在應用故障時完全的恢復數據。基于以上原因,rsync+inotify組合出現了!

二、 初識inotify
 Inotify 是一種強大的、細粒度的、異步的文件系統事件監控機制,linux內核從2.6.13起,加入了Inotify支持,通過Inotify可以監控文件系統中添加、刪除,修改、移動等各種細微事件,利用這個內核接口,第三方軟件就可以監控文件系統下文件的各種變化情況,而inotify-tools就是這樣的一個第三方軟件。
在上面章節中,我們講到,rsync可以實現觸發式的文件同步,但是通過crontab守護進程方式進行觸發,同步的數據和實際數據會有差異,而inotify可以監控文件系統的各種變化,當文件有任何變動時,就觸發rsync同步,這樣剛好解決了同步數據的實時性問題。

三、 安裝inotify工具inotify-tools
 由于inotify特性需要Linux內核的支持,在安裝inotify-tools前要先確認Linux系統內核是否達到了 2.6.13以上,如果Linux內核低于2.6.13版本,就需要重新編譯內核加入inotify的支持,也可以用如下方法判斷,內核是否支持 inotify:
[root@localhost webdata]# uname -r
2.6.18-164.11.1.el5PAE
[root@localhost webdata]# ll /proc/sys/fs/inotify
總計 0
-rw-r--r-- 1 root root 0 04-13 19:56 max_queued_events
-rw-r--r-- 1 root root 0 04-13 19:56 max_user_instances
-rw-r--r-- 1 root root 0 04-13 19:56 max_user_watches
如果有上面三項輸出,表示系統已經默認支持inotify,接著就可以開始安裝inotify-tools了。
可以到http://inotify-tools.sourceforge.net/下載相應的inotify-tools版本,然后開始編譯安裝:
[root@localhost  ~]# tar zxvf inotify-tools-3.14.tar.gz 
root@localhost  ~]# cd inotify-tools-3.14
[root@localhost inotify-tools-3.14]# ./configure
[root@localhost inotify-tools-3.14]# make
[root@localhost inotify-tools-3.14]# make install
[root@localhost inotify-tools-3.14]# ll /usr/local/bin/inotifywa*
-rwxr-xr-x 1 root root 37264 04-14 13:42 /usr/local/bin/inotifywait
-rwxr-xr-x 1 root root 35438 04-14 13:42 /usr/local/bin/inotifywatch
inotify-tools安裝完成后,會生成inotifywait和inotifywatch兩個指令,其中,inotifywait用于等待文件或文件集上的一個特定事件,它可以監控任何文件和目錄設置,并且可以遞歸地監控整個目錄樹。
inotifywatch用于收集被監控的文件系統統計數據,包括每個inotify事件發生多少次等信息。

四、 inotify相關參數
inotify定義了下列的接口參數,可以用來限制inotify消耗kernel memory的大小。由于這些參數都是內存參數,因此,可以根據應用需求,實時的調節其大小。下面分別做簡單介紹。
    /proc/sys/fs/inotify/max_queued_evnets     
       表示調用inotify_init時分配給inotify instance中可排隊的event的數目的最大值,超出這個值的事件被丟棄,但會觸發IN_Q_OVERFLOW事件。
    /proc/sys/fs/inotify/max_user_instances
        表示每一個real user ID可創建的inotify instatnces的數量上限。
    /proc/sys/fs/inotify/max_user_watches
        表示每個inotify instatnces可監控的最大目錄數量。如果監控的文件數目巨大,需要根據情況,適當增加此值的大小,例如:
echo 30000000 > /proc/sys/fs/inotify/max_user_watches

五、 inotifywait相關參數
Inotifywait是一個監控等待事件,可以配合shell腳本使用它,下面介紹一下常用的一些參數:
? -m, 即--monitor,表示始終保持事件監聽狀態。
? -r, 即--recursive,表示遞歸查詢目錄。
? -q, 即--quiet,表示打印出監控事件。
? -e, 即--event,通過此參數可以指定要監控的事件,常見的事件有modify、delete、create、attrib等。
更詳細的請參看man  inotifywait。

六、 rsync+inotify企業應用案例
 案例描述
這是一個CMS內容發布系統,后端采用負載均衡集群部署方案,有一個負載調度節點和三個服務節點以及一個內容發布節點構成,內容發布節點負責將用戶發布的數據生成靜態頁面,同時將靜態網頁傳輸到三臺服務節點,而負載調度節點負責將用戶請求根據負載算法調度到相應的服務節點,實現用戶訪問。用戶要求在前端訪問到的網頁數據始終是最新的、一致的。
解決方案
為了保證用戶訪問到的數據一致性和實時性,必須保證三個服務節點與內容發布節點的數據始終是一致的,這就需要通過文件同步工具來實現,這里采用 rsync,同時又要保證數據是實時的,這就需要inotify,即:使用inotify監視內容發布節點文件的變化,如果文件有變動,那么就啟動 rsync,將文件實時同步到三個服務節點。
系統環境
這里所有服務器均采用Linux操作系統,系統內核版本與節點信息如表1 所示:
表1

1 安裝rsync與inotify-tools
inotify-tools是用來監控文件系統變化的工具,因此必須安裝在內容發布節點,服務節點無需安裝inotify-tools,另外需要在web1、web2、web3、webserver節點上安裝rsync,由于安裝非常簡單,這里不在講述。
在這個案例中,內容發布節點(即server)充當了rsync客戶端的角色,而三個服務節點充當了rsync服務器端的角色,整個數據同步的過程,其實就是一個從客戶端向服務端推送數據的過程。這點與上面我們講述的案例剛好相反。

2 在三個服務節點配置rsync
 這里給出三個服務節點的rsync配置文件,以供參考,讀者可根據實際情況自行修改。
Web1節點rsyncd.conf配置如下:
uid = nobody
gid = nobody
use chroot = no
max connections = 10
strict modes = yes
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log

[web1]
path = /web1/wwwroot/
comment = web1 file
ignore errors
read only = no
write only = no
hosts allow = 192.168.12.134
hosts deny = *
list = false
uid = root
gid = root
auth users = web1user
secrets file = /etc/web1.pass
Web2節點rsyncd.conf配置如下:
uid = nobody
gid = nobody
use chroot = no
max connections = 10
strict modes = yes
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log

[web2]
path = /web2/wwwroot/
comment = web2 file
ignore errors
read only = no
write only = no
hosts allow = 192.168.12.134
hosts deny = *
list = false
uid = root
gid = root
auth users = web2user
secrets file = /etc/web2.pass
Web3節點rsyncd.conf配置如下:
uid = nobody
gid = nobody
use chroot = no
max connections = 10
strict modes = yes
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log

[web3]
path = /web3/wwwroot/
comment = web3 file
ignore errors
read only = no
write only = no
hosts allow = 192.168.12.134
hosts deny = *
list = false
uid = root
gid = root
auth users = web3user
secrets file = /etc/web3.pass
在三臺服務節點rsyncd.conf文件配置完成后,依次啟動rsync守護進程,接著將rsync服務加入到自啟動文件中:
echo  “/usr/local/bin/rsync --daemon” >>/etc/rc.local
到此為止,三個web服務節點已經配置完成。

3 配置內容發布節點
 配置內容發布節點的主要工作是將生成的靜態網頁實時的同步到集群中三個服務節點,這個過程可以通過一個shell腳本來完成,腳本內容大致如下:
#!/bin/bash
host1=192.168.12.131
host2=192.168.12.132
host3=192.168.12.133

src=/web/wwwroot/
dst1=web1
dst2=web2
dst3=web3
user1=web1user
user2=web3user
user3=web3user

/usr/local/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 --delete --progress --password-file=/etc/server.pass $src$user1@$host1::$dst1
  /usr/bin/rsync -vzrtopg --delete --progress --password-file=/etc/server.pass $src$user2@$host2::$dst2
  /usr/bin/rsync -vzrtopg --delete --progress --password-file=/etc/server.pass $src$user3@$host3::$dst3
                echo "${files} was rsynced" >>/tmp/rsync.log 2>&1
         done
腳本相關解釋如下:
--timefmt:指定時間的輸出格式。
--format:指定變化文件的詳細信息。
這兩個參數一般配合使用,通過指定輸出格式,輸出類似與:
15/04/10 00:29 /web/wwwroot/ixdba.shDELETE,ISDIR was rsynced
15/04/10 00:30 /web/wwwroot/index.htmlMODIFY was rsynced
15/04/10 00:31 /web/wwwroot/pcre-8.02.tar.gzCREATE was rsynced
這個腳本的作用就是通過inotify監控文件目錄的變化,進而觸發rsync進行同步操作,由于這個過程是一種主動觸發操作,通過系統內核完成的,所以,比起那些遍歷整個目錄的掃描方式,效率要高很多。
有時會遇到這樣的情況:向inotify監控的目錄(這里是/web/wwwroot/)寫入一個很大文件時,由于寫入這個大文件需要一段時間,此時 inotify就會持續不停的輸出該文件被更新的信息, 這樣就會持續不停的觸發rsync去執行同步操作,占用了大量系統資源,那么針對這種情況,最理想的做法是等待文件寫完后再去觸發rsync同步。 在這種情況下,可以修改inotify的監控事件,即:“-e close_write,delete,create,attrib”。
接著,將這個腳本命名為inotifyrsync.sh,放到/web/wwwroot目錄下,然后給定可執行權限,放到后臺運行:
chmod 755 /web/wwwroot/inotifyrsync.sh
/web/wwwroot/inotifyrsync.sh &
最后,將此腳本加入系統自啟動文件:
echo  “/web/wwwroot/inotifyrsync.sh &”>>/etc/rc.local
這樣就完成了內容發布節點的所有配置工作。

4 測試rsync+inotify實時同步功能
 所有配置完成后,可以在網頁發布節點的/web/wwwroot目錄下添加、刪除或者修改某個文件,然后到三個服務節點對應的目錄查看文件是否跟隨網頁發布節點的/web/wwwroot目錄下文件發生變化,如果你看到三個服務節點對應的目錄文件跟著內容發布節點目錄文件同步變化,那么我們這個業務系統就配置成功了。


三、我部署的配置文件和操作

準備機器:服務器A,服務器B,centos操作系統

服務器A作為發布節點,備份路徑為 A -> B


1,A上建立文件夾/etc/rsyncd.conf和/etc/backserver.pas

/etc/rsyncd.conf內容:

#運行RSYNC守護進程的用戶
uid = root
#運行RSYNC守護進程的組
gid = root
#不使用chroot
use chroot = no
#最大連接數是4
max connections = 10
#pid文件存放位置
pidfile=/var/run/rsyncd.pid
#鎖文件存放位置
lockfile=/var/run/rsync.lock
#日志文件存放位置
logfile=/var/log/rsyncd.log
[logs]
#要同步的目錄
path =/home/webkk/rysnc_dir
#忽略無關的IO錯誤
ignore errors
#只讀,不能上傳
readonly =true
#禁止查看文件列表
list =false
#允許訪問服務的ip
hosts allow = 192.168.1.133  #B機器IP地址
#禁止訪問服務的ip
#hosts deny = 0.0.0.0/32
#認證的用戶名,系統必須存在的用戶,但是密碼需要在secrets file 配置,不是系統的密碼。
authusers= root
#認證用戶密碼文件,配置auth users的密碼
secretsfile=/etc/backserver.pas


/etc/backserver.pas內容:

123456  #即遠程備份機器的rsync賬號的密碼,不需要填寫賬號

2,B服務器上建立文件/etc/rsyncd.conf和/etc/rsyncd.secretes 

/etc/rsyncd.conf內容:

#運行RSYNC守護進程的用戶
uid = root
#運行RSYNC守護進程的組
gid = root
#不使用chroot
use chroot = no
#最大連接數是4
max connections = 10
#pid文件存放位置
pidfile=/var/run/rsyncd.pid
#鎖文件存放位置
lockfile=/var/run/rsync.lock
#日志文件存放位置
logfile=/var/log/rsyncd.log
[web1]
#要同步的目錄
path =/home/rysnc_dir
#忽略無關的IO錯誤
ignore errors
#只讀,不能上傳
readonly =false         #可以寫
#禁止查看文件列表
list =false
#允許訪問服務的ip
hosts allow = 192.168.1.109 #A機器的IP
#禁止訪問服務的ip
#hosts deny = 0.0.0.0/32
#認證的用戶名,系統必須存在的用戶,但是密碼需要在secrets file 配置,不是系統的密碼。
authusers= root
#認證用戶密碼文件,配置auth users的密碼
secretsfile=/etc/rsyncd.secretes


/etc/rsyncd.secretes內容:

root:Sunto113355  #該rsync的賬號密碼


3,在B機器上隨意位置建立腳本文件 inotifyrsync.sh

內容:


#!/bin/bash
host1=192.168.1.109 #A機器的IP
dst1=web1
src=/home/webkk/rysnc_dir
user1=root
inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e modify,delete,create,attrib  $src | while read files
do
rsync -vzrtopg --delete --progress --password-file=/etc/backserver.pas $src $user1@$host1::$dst1
echo "${files} was rsynced" >>/tmp/rsync.log 2>&1
done


4,在B機器上先執行 rsync --daemon &

在B機器上執行腳本./inotifyrsync.sh &

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!