1.rsync 與傳統的cp、tar備份方式相比,rsync具有安全性高、備份迅速、支持增量備份的優點,通過rsync可以解決對實時性要求不高的數據備份需求,例如定期的備份文件伺服器數據到遠端伺服器,對本地磁碟定期做數據鏡像等。 隨著應用系統規模不斷的擴大,對數據安全性和可靠性也提出了更高的要求,r ...
1.rsync
與傳統的cp、tar備份方式相比,rsync具有安全性高、備份迅速、支持增量備份的優點,通過rsync可以解決對實時性要求不高的數據備份需求,例如定期的備份文件伺服器數據到遠端伺服器,對本地磁碟定期做數據鏡像等。
隨著應用系統規模不斷的擴大,對數據安全性和可靠性也提出了更高的要求,rsync在高端業務中也逐漸暴露出許多不足。首先,rsync實時同步時,需要掃描所有的文件進行比對,進行差量傳輸。如果文件數量打到了百萬甚至千萬量級,掃描所有的文件是非常耗時的,而且正在發生變化的往往是其中很少一部分,這是非常低效的方式。其次,rsync不能實時監測、同步數據。雖然它可以通過linux守護進程的方式進行出發同步,但是兩次出發動作一定會有時間差,這樣就導致了服務端和客戶端出現不一致,無法在應用故障時完全的恢複數據。基於以上原因,rsync+inotify就出現了!
2.inotify(監控)
inotify是一種強大的、細粒度的、非同步的文件系統事件監控機制。通過inotify可以監控文件系統中的添加、刪除、修改、移動等各種細微事件,利用這個內核藉口,第三方軟體就可以監控文件系統下的各種情況變化,而inotify-tools就是這樣的一個第三方軟體。
一、服務端配置(只需要安裝rsync)
共用到/tmp/下:
1.添加虛擬用戶useradd rsync -s /sbin/nologin
chown -R rsync.rsync /tmp/
2.配置rsyncd.conf配置文件
vim rsyncd.conf
#rsync_config_______________start
#rsyncd.conf start##
uid = rsync(用戶)
gid = rsync(用戶)
use chroot = no(防止出現安全問題)
max connections = 200(有多少個客戶端可以連接我這個備份伺服器)
timeout = 300(超時,多長時間沒有動作就斷掉連接)
pid file = /var/run/rsyncd.pid(進程號,將進程號放在這個文件里)
lock file = /var/run/rsync.lock(相當於“鎖”的概念,上廁所鎖門的概念)
log file = /var/log/rsyncd.log(出錯了,可以查看log日誌文件)
[tmp](模塊)
path = /tmp/(路徑)
ignore errors(忽略錯誤)
read only = false(只讀為假,可讀,可寫的意思)
list = false(不允許列表)
hosts allow = 10.0.0.0/24(允許的主機)
hosts deny = 0.0.0.0/32(拒絕的主機)
auth users = rsync_backup(支持虛擬用戶)
secrets file = /etc/rsync.password(用戶對應的密碼文件)
#rsync_config_______________end
3.建立密碼文件
echo “rsync_backup:123456” >/etc/rsync.password
凡是密碼文件全部600許可權 chmod 600 /etc/rsync.password
4.rsync --daemon daemon模式啟動
5.將rsync --daemon加入/etc/rc.local
echo “/usr/bin/rsync --daemom” >>/etc/rc.local
二、客戶端配置
安裝rsync和inotify
1.安裝rsync(yum安裝即可)
2.建立密碼認證文件
echo “123456” >/etc/rsync.password 只需要密碼
設置許可權600 chmod 600 /etc/rsync.password
3.安裝inotify:
cd /home/cai/tools/
wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-too
54 tar xf inotify-tools-3.14.tar.gz
55 ls
56 cd inotify-tools-3.14
57 ./configure --prefix=/usr/local/inotify-tools-3.14
58 make && make install
59 yum install -y gcc
60 ./configure --prefix=/usr/local/inotify-tools-3.14
61 make && make install
62 cd /usr/local/inotify-tools-3.14/
63 ls
64 ln -s /usr/local/inotify-tools-3.14/ /usr/local/inotify
4.腳本都是放在/server/scripts下
vim /server/scripts/rsync.sh
#!/bin/sh
host=192.168.76.129
src=/tmp/
des=tmp
user=rsync_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 -avz --delete $src $user@$host::$des --password-file=/etc/rsync.password
echo "${files} was rsynced" >>/var/log/rsyncd.log 2>&1
done
exit o
~
並給予764許可權
測試腳本:sh -x /server/scripts/rsync.sh
運行腳本:sh /server/scripts/rsync.sh &
將rsync.sh腳本放入到開機啟動項中:echo “/tmp/rsync.sh” >>/etc/rc.local