rsync+inotify實時同步備份數據
軟件簡介:
rsync命令簡介:
rsync命令是一個遠程數據同步工具,可通過LAN/WAN快速同步多臺主機間的文件。
rsync使用所謂的“rsync算法”來使本地和遠程兩個主機之間的文件達到同步,這個
算法只傳送兩個文件的不同部分,而不是每次都整份傳送,因此速度相當快。 rsync
是一個功能非常強大的工具,其命令也有很多功能特色選項,
來自: rsync命令rsync [OPTION] SRC [USER@]HOST::DEST
rsync命令的選項:
-a, archive 存檔模式,等同于-rlptgoD (no -H,-A,-X)
-u, update 僅僅進行更新,也就是跳過所有已經存在于DST,并且文件時間晚于要備份的文件,不覆蓋更新的文件。
-z, compress 壓縮傳送
-R, relative 使用相對路徑信息。
–timeout=time ip超時時間,單位為秒。
–delete 刪除那些DST中SRC沒有的文件。
Inotify命令簡介:
Inotify是一種強大的、細粒度的、異步文件系統監控機制,它滿足各種各樣的文件監控需要,
可以監控文件系統的訪問屬性、讀寫屬性、權限屬性、刪除創建、移動等操作,也就是可以監
控文件發生的一切變化。
來自: inotifywait命令inotifywait [OPTION…][ … ]
-m 是要持續監視變化。
-r 使用遞歸形式監視目錄。
-q 減少冗余信息,只打印出需要的信息。
-e 指定要監視的事件列表。關于rsync和Inotify更多詳細信息可以查看命令手冊;
也可以參考Linux命令大全,
1. 安裝配置rsync
1.1. yum安裝軟件rsync
# 軟件安裝 # 檢查執行結果:rpm -aq rsync yum install -y rsync # 添加用戶 # 檢查執行結果:id rsync useradd rsync -s /sbin/nologin -M # 創建目錄并修改屬主 # 檢查執行結果:ll /mydata/rsync mkdir -p /mydata/rsync chown -R rsync: /mydata/rsync
1.2. rsync配置
cp /etc/rsyncd.conf{,.bak} cat <<EOF > /etc/rsyncd.conf # /etc/rsyncd: configuration file for rsync daemon mode uid = rsync gid = rsync use chroot = no max connections = 100 pid file = /var/run/rsyncd.pid transfer logging = yes log file = /var/log/rsyncd.log exclude = lost+found/ timeout = 900 ignore nonreadable = yes dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 [work] path = /mydata/rsync ignore errors read only = false list = false hosts allow = 10.10.20.0/24 hosts deny = 0.0.0.0/0 auth users = rsync_backup secrets file = /etc/rsynd.passwd EOF
1.3. 虛擬用戶secrets file
echo "rsync_backup:123456" > /etc/rsynd.passwd chmod 600 /etc/rsynd.passwd
1.4. 啟動rsync服務
systemctl start rsyncd
↑↑↑↑↑ On IP 10.10.20.79 ↑↑↑↑↑
↓↓↓↓↓ On IP 10.10.20.71 ↓↓↓↓↓↓
1.5. 測試rsync服務的同步功能
# 創建同步賬戶密碼文件,僅需要密碼,無須用戶名 echo '123456' > /etc/rsync.passwd # 提權 chmod 600 /etc/rsync.passwd # 創建同步目錄和測試文件 mkdir /mydata/rsync echo 'just a test from IP 10.10.20.71' > /mydata/rsync/test rsync -avz --password-file=/etc/rsync.passwd /mydata/rsync/ rsync_backup@10.10.20.79::work
2. 安裝配置inotify
2.1. 下載軟件
# 從網上下載程序,要求安裝git git clone https://github.com/rvoicilas/inotify-tools.git /mydata/inotify-tools.git # 編譯安裝inotify-tools cd /mydata/inotify-tools.git ./autogen.sh # 編譯三部曲 ./configure --prefix=/usr/local/inotify make && make install
2.2. 直接上腳本:
cat <<'EOF' > ~/bin/inotify.sh #!/usr/bin/env bash # -*- coding: utf-8 -*- # # Author: jacky18676887374@aliyun.com QQ 18676887374 # date: 20161027-10:05:20 # Vervion: 0.0.1 # Synopsis: COMAND # # inotifywait COMMAND Inotify="/usr/local/inotify/bin/inotifywait" # inotifywait OPTION Option_I='-mrq -e move,modify,delete,create,attrib' # rsync OPTION Option_R='-auz --delete --timeout=100 --password-file=/etc/rsync.passwd' # rsync DEST Dest='rsync_backup@10.10.20.79::work' # backup file, inotify file; rsync SRC Src="/mydata/rsync/" # ########## judge ########## if [ ! -e "$Src" ] \ || [ ! -e "${Option_R##*=}" ] \ || [ ! -e "${Inotify}" ] \ || [ ! -e "/usr/bin/rsync" ];then echo "Check File and Folder" exit 9 fi ########## main ########## $Inotify ${Option_I} $Src | while read file do rsync ${Option_R} $Src $Dest &> /dev/null done exit 0 EOF
2.3. 修改執行權限并后臺執行
chmod u+x ~/bin/inotify.sh ~/bin/inotify.sh &
原創文章,作者:昭其,如若轉載,請注明出處:http://www.www58058.com/55125