1. 程式人生 > >Rsync 自動同步壓縮日誌文件至備份服務器

Rsync 自動同步壓縮日誌文件至備份服務器

pid tar files erro nag 密碼 lse size 功能

業務場景:將所有服務器內的日誌文件以小時為單位壓縮後保存同時清空源日誌文件。此後通過rsync + inotify 機制將壓縮文件統一備份到日誌服務器內。實現對日誌文件的統一保存和備份。
rsync 和inotify這裏就不介紹了!有興趣的可以到官網查看。
大致服務架構圖:

技術分享圖片

一、三臺機器的IP分別為:源服務器:172.20.2.108
目標(備份)服務器:172.20.2.225
@todo:從源服務器(172.20.2.108)的/data/目錄下的所有的文件實時通過到目標服務器(172.20.2.225)的/data目錄下
br/>源服務器:172.20.2.108
目標(備份)服務器:172.20.2.225
@todo:從源服務器(172.20.2.108)的/data/目錄下的所有的文件實時通過到目標服務器(172.20.2.225)的/data目錄下

二、安裝rsync
一般情況下centos 6.9下都安裝了rsync,所以就不必安裝了,可以用以下命令檢查一下是否已安裝:rpm -qa | grep rsync
技術分享圖片
上面顯示了我的機器上沒有安裝rsync
如果沒有安裝請往下看:
cd /opt/softdir
wget http://rsync.samba.org/ftp/rsync/src/rsync-3.0.9.tar.gz
tar xf rsync-3.0.9.tar.gz
cd rsync-3.0.9 && ./configure --prefix=/opt/rsync && make && make install
rsync安裝完畢!

三、創建同步文件所需要的密碼文件,這樣做是為了安全。
echo "newpassword" > /etc/rsyncd.secrets
echo "redhat" > /etc/rsyncd.secrets
註:這裏的newpassword可以實任意字符。
處於安全考慮要把此文件的權限修改成600
chmod 600 /etc/rsyncd.secrets
四、安裝inotify
先查看服務器是否支持inotify
ll /proc/sys/fs/inotify
技術分享圖片
會有三個文件,這說明此服務器支持inotify的。

下面安裝inotify:
cd /opt/softdir
wget -c https://nchc.dl.sourceforge.net/project/inotify-tools/inotify-tools/3.13/inotify-tools-3.13.tar.gz

tar xf inotify-tools-3.13.tar.gz
cd inotify-tools-3.13 && ./configure --prefix=/opt/inotify && make && make install
五、創建rsync復制腳本,用戶shell實現,其功能就是:從源服務器(172.20.2.108)的/data/目錄下的所有文件無論是添加、修改、刪除文件,能夠通過inotify監控到,並通過rsync實時同步到目標服務器(172.20.2.225)的/data下

vim  /usr/bin/rsync.sh
#!/bin/bash
host=172.20.2.225
src=/data/
des=web
user=root
/opt/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
/opt/rsync/bin/rsync  -zrtopg  --delete  --progress --password-file=/etc/rsyncd.secrets $src $user@$host::$des
echo "${files} was rsynced" > /var/log/rsyncd.log 2>&1
done

其中host是目標服務器的ip,src是源服務器要同步的目錄,des是認證模塊名,需要與目標服務器一致,user是建立密碼文件裏的認證用戶。
修改rsync.sh的權限
chmod +x /usr/bin/rsync.sh
到此為止,源服務器的所有操作就完成了!下面配置目標服務器。

————————————————    我是分割線—————————————————

一、目標服務器也要安裝 rsync,安裝方式跟源服務器一樣,這裏就不在贅述了
二、建立密碼文件:
echo "root:redhat" >/etc/rsyncd.secrets
同樣要給此文件一個600的權限
chmod 600 /etc/rsyncd.secrets
註:在源服務器建立的密碼文件,只有密碼,沒有用戶名;而在目標服務器裏建立的密碼文件,用戶名與密碼都有。
三、寫rsync的配置文件
vim /etc/rsyncd.conf

uid = root
gid = root
use chroot = no
max connections = 10
strict modes = yes
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
#log format = %t %a %m %f %b # 日誌記錄格式
[web]
path = /data
comment = web file
ignore errors
read only = no
write only = no
hosts allow = 172.20.2.108
hosts deny = *
list = false
uid = root
gid = root
auth users =root
secrets file = /etc/rsyncd.secrets

四、目標服務器啟動 rsync
/opt/rsync/bin/rsync --daemon --config=/etc/rsyncd.conf
五、源服務器啟動同步:
/usr/bin/rsync.sh &
到這裏,所有的都以完成。可以到源服務器下的/data目錄下創建、刪除文件,然後在看一下目標服務器下的/data下是出現同樣的變化。

Rsync 自動同步壓縮日誌文件至備份服務器