用rsync和inotify實現文件的實時同步
在linux運維管理實際操作中,文件的備份,對每個系統管理者與電腦使用者來說都很重要,常見的方式,將文件傳送至另一臺電腦做備份,或者另存在動存儲備份之外操作系統,實際應用中,爲了數據文件的安全性,需要實時備份服務器上的文件數據.
目的是將192.168.4.8上 /home 目錄的數據同步到192.168.7.45的/home/123目錄。
主服務器配置 (192.168.4.8 上安裝rsync和inotify)
安裝rsync (rsync在主服務器上不需要配置文件,因爲主服務器的數據是被推到備份服務器的。)
# wget https://rsync.samba.org/ftp/rsync/rsync-3.0.9.tar.gz
# tar zxvf rsync-3.0.9.tar.gz
# cd rsync
# ./configure –prefix=/usr/local/rsync
# make && make install
# tar zxvf rsync-3.0.9.tar.gz
# cd rsync
# ./configure –prefix=/usr/local/rsync
# make && make install
建立密碼認證文件
# echo “tian” > /usr/local/rsync/rsync.pass
# chmod 600 /usr/local/rsync/rsync.pass
# chmod 600 /usr/local/rsync/rsync.pass
Inotify 是文件系統事件監控機制,是一種強大的、細粒度的、異步的機制,它滿足各種各樣的文件監控需要,不僅限於安全和性能。
安裝inotify
# wget http://cloud.github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
# tar zxvf inotify-tools-3.14.tar.gz
# cd inotify-tools-3.14
# ./configure –prefix=/usr/local/inotify
# make && make install
# tar zxvf inotify-tools-3.14.tar.gz
# cd inotify-tools-3.14
# ./configure –prefix=/usr/local/inotify
# make && make install
創建啓動腳本
# vim /usr/local/inotify/rsync.sh
#!/bin/bash
src=/home/
[email protected]::mail
/usr/local/bin/inotifywait -mrq --format '%w%f' -e modify,delete,create,attrib $src | while read x
do
rsync -vzrtopg --delete –progress --password-file=/usr/local/rsync/rsync.pass $src $des &&
echo "$x was rsynced" >>/usr/local/rsync/rsync.log
done
/usr/local/inotify/rsync.sh &
備份服務器的配置(192.168.7.45)
安裝rsync
# wget https://rsync.samba.org/ftp/rsync/rsync-3.0.9.tar.gz
# tar zxvf rsync-3.0.9.tar.gz
# cd rsync
# ./configure –prefix=/usr/local/rsync
# make && make install
# tar zxvf rsync-3.0.9.tar.gz
# cd rsync
# ./configure –prefix=/usr/local/rsync
# make && make install
建立密碼文件
# echo “tian:tian123” > /usr/local/rsync/rsync.pass
# chmod 600 /usr/local/rsync/rsync.pass
# chmod 600 /usr/local/rsync/rsync.pass
建立配置文件
# vim /usr/local/rsync/rsync.conf
#[globale]
strict modes= yes
port= 873
logfile= /var/log/rsyncd.log
pidfile= /var/run/rsyncd.pid
lock file= /var/run/rsync.lock
max connections= 4
secrets file= /usr/local/rsync/rsync.pass
#[modules]
[mail]
uid= root
gid= root
path= /home/123
read only= no
list= yes
host allow= *
auth users= tian
啓動rsync
# /usr/local/rsync/bin/rsync --daemon --config=/usr/local/rsync/rsync.conf