Rsync是一款開源的快速備份工具,能夠在不一樣的主機之間鏡像同步整個目錄樹,支持增量備份,保持連接和權限,適用於異地備份,鏡像服務器等應用。html
--------爲提升系統的安全性能夠爲備份創建專門用戶----apache
rpm -q rsync安全
useradd rgetbash
passwd rget服務器
useradd rputssh
passwd rputide
----調整被備份目錄的恰當權限-----工具
chown -R rput:rput /var/www/html/測試
setfacl -R -m user:apache:rwx html/uploadui
getfacl html/upload/
setfacl -m default:user:apache:rwx html/upload
setfacl -R -b /var/www/html
setfacl -R -x user:apache /var/www/html/upload
-------新建並配置rsync程序使其能夠工做------
vi /etc/rsyncd.conf
uid = root
gid = root
use chroot = yes
address = 192.168.80.33 監聽地址
port 873
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
hosts allow = 192.168.80.0/24 容許訪問的客戶機地址
[wwwroot]
path = /opt/test/
comment = Document Root of www1.benet.com
read only = no
dont compress = *.gz *.bz2 *.tgz *.zip *.rar *.z
auth users = back
secrets file = /etc/rsyncd_users.db
----創建虛擬用戶配置文件並設置恰當的權限-----
vi /etc/rsyncd_users.db
back:abc123
chmod 600 /etc/rsyncd_users.db
----啓動、關閉rsync程序---
rsync --daemon
netstat -anpt | grep rsync
killall -3 rsync
---使用xinetd管理rsync程序----
yum -y install xinetd
vi /etc/xinetd.d/rsync
service rsync
{
disable = no
----使用rsync備份時不須要交互----
export RSYNC_PASSWORD=abc123
---使用ssh備份時不須要交互---
ssh-keygen -t rsa 建立密鑰對
ssh-copy-id root@192.168.80.33 將公鑰分發給服務器
ssh root@192.168.80.33 無密碼自動登陸
----使用rsync下載、上傳-----
rsync -avz --delete back@192.168.80.33::wwwroot /media //下載
rsync -rlvz --delete /media/ back@192.168.80.33::wwwroot //上傳
-----使用SSH下載、上傳-----
rsync -avz root@192.168.80.33:/tmp/ /opt
rsync -rlvz /opt/ root@192.168.80.33:/tmp/
-------配合inotify觸發備份、調整內核參數----
vi /etc/sysctl.conf
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576
sysctl -p
----編譯安裝inotify----
./configure
make && make install
-----測試監控效果------
inotifywait -mrq -e modify,create,move,delete /opt/test/
---經過角本完成觸發備份任務-----
vi /opt/inotify_rsync.sh
#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e modify,create,attrib,move,delete /opt/test/"
RSYNC_CMD="rsync -azH --delete /opt/test/ root@192.168.80.33:/opt/back/"
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
if [ $(pgrep rsync | wc -l) -le 5 ] ; then
$RSYNC_CMD
fi
done