1. 程式人生 > >rsync+inotify實現實時同步

rsync+inotify實現實時同步

rsync inotify

一、前期準備

1、準備兩臺主機,我這裏的系統是rhel7,分別是192.168.4.11和192.168.4.22


二、rsync命令的用法:

1、基本格式: rsync [選項] 目錄1/ 目錄2/

註意加斜線和不加斜線的區別,加斜線就是只同步目錄下的文件

2、選項:列舉一些常用的選項

-n //測試同步過程,不做實際修改

-r //遞歸,包括目錄/子目錄及所有文件

-l //保留符號鏈接文件

-a //歸檔模式,相當於-rlptgoD

--delete //刪除目標文件夾內多於的文檔

-z //傳輸中啟用壓縮/解壓

-v //顯示同步信息

3、測試遠程同步:在4.11和4.22 /opt/dir1下測試,從4.11同步到4.22下

rsync -avz --delete /opt/dir1/ 192.168.4.22:/opt/dir1/

4、在測試過程中就會發現,會要求輸入遠程主機的密碼

如何去掉密碼的驗證呢,用ssh密鑰對

生成:在4.11主機上 :ssh-keygen

傳遞公鑰到被遠程端: ssh-copy-id 192.168.4.22


三、安裝inotify-tools-3.13軟件和基本使用

1、安裝依賴:gcc,make

2、源碼安裝inotify-tools-3.13

3、得到命令:inotifywait

4、inotifywait 選項 目標文件夾

-m 持續監控 -r 遞歸目錄 -q 減少輸出信息


四、利用while循環+inotifywait+rsync實現實時同步

1、腳本

#!/bin/bash

while inotifywait -qqr /opt/dir1/ //監控該目錄,如果發生變化,則執行下面的語句

do

rsync -az --delete /opt/dir1/ [email protected]:/opt/dir1/ //拷貝該目錄到遠端的主機,實時同步

done

2、可以直接放置在後臺進行

3、測試,可以在11上創建文件或者修改,然後去22上查看是否有變化


















rsync+inotify實現實時同步