rsync是什麼?
rsync是Linux/UNIX系統下的文件同步和數據傳輸工具,它採用了“rsync算法”使一個客戶機和遠程文件服務器之間的文件同步。可以將同一個服務器的數據從一個分區備份到另一個分區,也可以將本地系統的數據通過網絡傳輸方式備份到任何一個遠程主機上;rsync可以在中斷後恢復傳輸;rsync只傳輸源文件和目標文件之間不一致的部分;rsync可以執行完整備份或增量備份。
rsync的功能特性:
- 可以鏡像保存整個目錄樹和文件系統;
- 可以增量同步數據,文件傳輸效率高,因而同步時間很短;
- 可以保持原文件的權限、時間等屬性;
- 加密傳輸數據,保證了數據的安全性;
- 可以使用rcp、ssh等方式來傳輸文件;
- 支持匿名傳輸;
搭建遠程容災備份系統
需求描述: 要求對Web服務器網站數據每天凌晨1:00進行一次備份數據到遠程的容災服務器上,由於數據量很大,採用增量備份方式。
系統環境:
主機 | 操作系統 | IP地址 | 備份目錄 | 軟件包 |
---|---|---|---|---|
web服務器 | CentOS 7.0 x86_64 | 192.168.100.27 | /www | rsync-3.1.3.tar.gz |
容災服務器 | CentOS 7.0 x86_64 | 192.168.100.28 | /www | rsync-3.1.3.tar.gz |
關閉防火牆及Selinux
systemctl stop firewalld
setenforce 0
軟件包:rsync-3.1.3.tar.gz 密碼:iw95
一、Web服務器:
1.安裝rsync軟件包
#解壓
tar zxvf rsync-3.1.3.tar.gz -C /opt
#切換目錄
cd /opt/rsync-3.1.3
#配置
./configure
#編譯及安裝
make && make install
2.修改rsync配置文件:
vim /etc/rsyncd.conf
uid = nobody #用戶ID
gid = nobody #用戶組ID
use chroot = yes #禁錮家目錄
max connections = 10 #最大併發連接數,默認0(無限制)
strict modes=yes #是否檢查口令文件的權限,yes時必須爲root用戶權限
pid file = /var/run/rsyncd.pid #守護進程PID路徑
lock file=/var/run/rsync.lock #指定支持max connections的鎖文件
log file=/var/run/rsyncd.log #日誌輸出文件路徑
> [www] #模塊名稱
path = /www #需備份的文件或目錄,必設項
comment = ftp area #描述文字
ignore errors #可以忽略一些無關的I/O錯誤
read only=no #no:客戶端可以上傳文件 yes:只讀
write only=no #no:客戶端可以下載文件 yes:不能下載
hosts allow=* #*:允許連接任何主機
hosts deny=192.168.100.10 #禁止連接rsync服務器的IP
list=false #客戶端請求可以使用的模塊列表時,該模塊是否被列出
uid=root
gid=root
auth users=backup #用戶名backup,與系統用戶沒有任何關係
secrets file=/etc/server.pass #只有定義了auth users項,該文件才起作用,默認沒有此文件,須手動創建(文件格式爲:"用戶名:密碼")
3.創建密碼文件(文件格式:user:pass)
vim /etc/server.pass
backup:www123
4.修改密碼文件權限
chmod 600 /etc/server.pass
5.創建rsync啓動腳本
vim /etc/init.d/rsyncd
#Description:
#!/bin/bash
#chkconfig: 2345 31 61 # 設置chkconfig 級別
#description: start or stop rsync daemon # 描述
. /etc/init.d/functions
pidfile=/var/run/rsyncd.pid
RETVAL=0
start_rsync(){
if [ -f $pidfile ];then # 判斷pid文件,存在就不再啓動
echo "Rsync is already running"
else
rsync --daemon
action "Rsync starts successfully " /bin/true
fi
}
stop_rsync(){
if [ -f $pidfile ];then
kill -USR2 `cat $pidfile`
rm -rf $pidfile # 停止服務,就刪除pid文件
action "Rsync stops successfully" /bin/true
else
action "Rsync is already stopped.Stop Failed" /bin/false
fi
}
case "$1" in
start)
start_rsync
RETVAL=$?
;;
stop)
stop_rsync
RETVAL=$?
;;
restart)
stop_rsync
sleep 2
start_rsync
RETVAL=$?
;;
*)
echo "Usage:$0 start|stop|restart"
exit 1
esac
exit $RETVAL
6.賦予執行權限
chmod +x /etc/init.d/rsyncd
7.添加到系統管理
chkconfig -add rsyncd
8.啓動rsyncd服務
service rsyncd start
9.查看rsync進程
netstat -tunlp | grep rsync
二、容災服務器:
1.安裝rsync軟件包
#解壓
tar zxvf rsync-3.1.3.tar.gz -C /opt
#切換目錄
cd /opt/rsync-3.1.3
#配置
./configure
#編譯及安裝
make && make install
2.創建密碼文件
vim /etc/server.pass
www123 //同web服務器密碼一致
3.修改密碼文件權限
chmod 600 /etc/server.pass
4.創建rsync啓動腳本
vim /etc/init.d/rsyncd
#Description:
#!/bin/bash
#chkconfig: 2345 31 61 # 設置chkconfig 級別
#description: start or stop rsync daemon # 描述
. /etc/init.d/functions
pidfile=/var/run/rsyncd.pid
RETVAL=0
start_rsync(){
if [ -f $pidfile ];then # 判斷pid文件,存在就不再啓動
echo "Rsync is already running"
else
rsync --daemon
action "Rsync starts successfully " /bin/true
fi
}
stop_rsync(){
if [ -f $pidfile ];then
kill -USR2 `cat $pidfile`
rm -rf $pidfile # 停止服務,就刪除pid文件
action "Rsync stops successfully" /bin/true
else
action "Rsync is already stopped.Stop Failed" /bin/false
fi
}
case "$1" in
start)
start_rsync
RETVAL=$?
;;
stop)
stop_rsync
RETVAL=$?
;;
restart)
stop_rsync
sleep 2
start_rsync
RETVAL=$?
;;
*)
echo "Usage:$0 start|stop|restart"
exit 1
esac
exit $RETVAL
5.賦予執行權限
chmod +x /etc/init.d/rsyncd
6.添加到系統管理
chkconfig -add rsyncd
7.啓動rsyncd服務
service rsyncd start
8.添加計劃性任務
crontab -e
#每分鐘同步一次數據
- 1 /usr/local/bin/rsync -vzrtopg --delete --progress --exclude "access" --exclude "debug" [email protected]::www /www --password-file=/etc/server.pass