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
?
?
?
???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
?