配置 rsync 服務(wù)端 10.0.0.41/24 172.16.1.41/24 backup
1.安裝
[root@c2-10.0.0.41__backup ~]# rsync –version 《《=====查看rsync版本
rsync version 3.1.2 protocol version 31 《《=====版本號為3.1.2
Copyright (C) 1996-2015 by Andrew Tridgell, Wayne Davison, and others.
Web site: http://rsync.samba.org/
Capabilities:
64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints,
[root@c2-10.0.0.41__backup ~]# yum install rsync
如果沒有可以下載
2.創(chuàng)建虛擬用戶
useradd -s /sbin/nologin -M rsync
3.創(chuàng)建對應(yīng)目錄(/backup) 并授權(quán)用戶為rsync用戶來管理rsync服務(wù)
mkdir –p /server/scripts 《《《《====腳本文件存放路徑
mkdir –p /backup
chown -R rsync.rsync /backup
4.配置對應(yīng)密碼文件并授權(quán)600
echo “rsync_backup:oldboy” >/etc/rsync.password
[root@backup ~]# chmod 600 /etc/rsync.password
[root@backup ~]# cat /etc/rsync.password
rsync_backup:oldboy
[root@backup ~]# ls -l /etc/rsync.password
-rw------- 1 root root 20 4月 15 11:51 /etc/rsync.password
5.配置文件/etc/rsyncd.conf
[root@c2-10.0.041__backup ~]# cp /etc/rsyncd.conf {,.ori} 《《====操作前先備份
cat >/etc/rsyncd.conf<<EOF
#rsync_config_______________start
#created by oldboy
#site: http://www.oldboyedu.com
uid = rsync 《《《《=====管理備份目錄的用戶
gid = rsync 《《《《====管理備份目錄的用戶組
use chroot = no 《《《《====安全功能拷淘,數(shù)據(jù)是否鎖定到備份目錄
fake super = yes 《《====不需要root也可以存儲(chǔ)文件的完整屬性
max connections = 200 《《《《===并發(fā)連接鸭蛙,同時(shí)多少客戶端訪問
timeout = 600 《《《《===超時(shí)連接
pid file = /var/run/rsyncd.pid 《《《===進(jìn)程號所在文件
lock file = /var/run/rsync.lock 《《《===鎖文件
log file = /var/log/rsyncd.log 《《《===日志文件,查看報(bào)錯(cuò)
ignore errors 《《《《==忽略錯(cuò)誤
read only = false 《《《《====可寫
list = false 《《《《《===不允許列表
hosts allow = 172.16.1.0/24 《《《《===哪些主機(jī)可以訪問 二選一
hosts deny = 0.0.0.0/32 《《《《===哪些主機(jī)不允許訪問
auth users = rsync_backup 《《《《《====遠(yuǎn)程連接的虛擬用戶
secrets file = /etc/rsync.password 《《《《《====存放密碼的文件: 格式:用戶名:密碼 權(quán)限必須為600
[backup] 《《《《《======【模塊名】
comment = welcome to oldboyedu backup! 《《《《《===== 說明注釋
path = /backup/ 《《《《《《====服務(wù)端用戶備份的目錄, 用戶和組為rsync 因?yàn)?uid gid 都是rsync
EOF
6.啟動(dòng)和檢查rsync服務(wù)的狀態(tài)
rsync --daemon C6
systemctl start rsyncd 現(xiàn)在啟動(dòng)
systemctl status rsyncd 查看是否開啟
systemctl enable rsyncd 設(shè)置開機(jī)自啟動(dòng)
ps-ef|grep sync|grep -v grep
netstat -lutup|grep 873
rsync 的默認(rèn)端口為873
###################### rsync服務(wù)器基礎(chǔ)配置完成#######################
配置 客戶端 10.0.0.n/24 172.16.1.n/24
1.安裝
[root@c2-10.0.041__backup ~]# rsync –version 《《=====查看rsync版本
rsync version 3.1.2 protocol version 31 《《=====版本號為3.1.2
Copyright (C) 1996-2015 by Andrew Tridgell, Wayne Davison, and others.
Web site: http://rsync.samba.org/
Capabilities:
64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints,
[root@c2-10.0.041__backup ~]# yum install rsync –y
如果沒有可以下載
方法1:認(rèn)證密碼文件
[root@nfs01 ~]# echo "oldboy" > /etc/rsync.password
[root@nfs01 ~]# chmod 600 /etc/rsync.password
[root@nfs01 ~]# cat /etc/rsync.password
oldboy
[root@nfs01 ~]# ls -l /etc/rsync.password
-rw------- 1 root root 7 4月 15 11:55 /etc/rsync.password
方法2: 環(huán)境變量必須是大寫 export
[root@nfs01 ~]# echo 'export RSYNC_PASSWORD=oldboy' >>/etc/bashrc
[root@nfs01 ~]# tail -1 /etc/bashrc
export RSYNC_PASSWORD=oldboy
[root@nfs01 ~]# . /etc/bashrc
[root@nfs01 ~]# echo $RSYNC_PASSWORD
Rsync 傳輸模式
1.本地傳輸方式 (單個(gè)主機(jī)本地之間的數(shù)據(jù)傳輸 類似cp命令)
local: rsync [OPTION...] SRC... [DEST]
#本地拷貝數(shù)示例
[root@backup ~] rsync -avz /etc/passwd /tmp
rsync #備份命令(等同cp)
[OPTION...] #選項(xiàng)
SRC... #本地源文件
[DEST] #本地目標(biāo)文件
2.遠(yuǎn)程通道傳輸方式:通過ssh通道傳輸數(shù)據(jù)蒸殿,類似scp 命令
(1) #pull 拉取數(shù)據(jù)命令
Pull:rsync [OPTION...] [USER@]HOST:SRC... [DEST]
#Pull 拉取數(shù)據(jù)示例
[root@backup ~] rsync -avz root@172.16.1.41:/etc/hostname ./ #拉取遠(yuǎn)程文件到當(dāng)前目錄
[root@backup ~] rsync -avz root@172.16.1.41:/root/ /backup/ #拉取遠(yuǎn)程目錄下的所有文件
[root@backup ~] rsync -avz root@172.16.1.41:/root /backup/ #拉取遠(yuǎn)程目錄以及目錄下的所有文件
pull 拉取數(shù)據(jù)命令
rsync #備份命令(等同cp)
OPTION... #選項(xiàng)
USER@ #目標(biāo)主機(jī)的系統(tǒng)用戶
HOST #目標(biāo)主機(jī)IP地址或者域名
SRC... #目標(biāo)主機(jī)源文件
DEST #下載至本地哪個(gè)位置
(2) #Push 推送命令
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
#push 推送數(shù)據(jù)示例
rsync -avz /backup/2019.txt root@172.16.1.41:/tmp/
rsync #備份命令(等同cp)
OPTION... #選項(xiàng)
SRC... #本地源文件
USER@ #目標(biāo)主機(jī)的系統(tǒng)用戶
HOST #目標(biāo)主機(jī)IP地址或者域名
DEST #目標(biāo)對應(yīng)位置
(3) #示例
拉取rsync備份服務(wù)器的"backup模塊"數(shù)據(jù)至本地的/tmp目錄
#rsync -avz rsync_backup@172.16.1.41::backup/ /tmp/ --password-file=/etc/rsync.password
將本地/tmp目錄推送至 rsync備份服務(wù)器的backup模塊
rsync -avz /tmp rsync_bakcup@172.16.1.41::backup/ --password-file=/etc/rsync.password
Rsync 企業(yè)備份項(xiàng)目
某公司里有一臺(tái) web 服務(wù)器亚享,里面的數(shù)據(jù)很重要掸掸,但是如果硬盤壞了棕诵,數(shù)據(jù)
就會(huì)丟失,現(xiàn)在領(lǐng)導(dǎo)要求把數(shù)據(jù)做備份熄浓,這樣 web 服務(wù)器數(shù)據(jù)丟失可以進(jìn)行恢復(fù)情臭,
要求如下:
每天晚上 00 點(diǎn)整在 web 服務(wù)器 A 上打包備份系統(tǒng)配置文件、網(wǎng)站程序目錄
及訪問日志并通過 rsync 命令推送到服務(wù)器 B 上備份保留(備份思路可以是先在
本地按日期打包赌蔑,然后再推到備份服務(wù)器 B 上)
所有服務(wù)器的備份目錄必須都為/backup
mkdir –p /backup
要備份的系統(tǒng)配置文件包括但不限于:
a) 定時(shí)任務(wù)服務(wù)的配置文件 (/var/spool/cron/root) (適合 web 和 nfs 服
務(wù)器)俯在。
b) 開機(jī)自啟動(dòng)的配置文件 (/etc/rc.local) (適合 web 和 nfs 服務(wù)器)。
c) 日常腳本的目錄 (/server/scripts ( (適合 web 和 nfs 服務(wù)器)娃惯。
? Web 服務(wù)器站點(diǎn)目錄假定為/var/html/www跷乐,如果沒有可以先模擬創(chuàng)建。
? Web 服務(wù)器訪問日志路徑假定為/app/logs趾浅,如果沒有可以先模擬創(chuàng)建愕提。
tar zcf /backup/bak.$(date +%F_%w –d “-1day”)tar.gz var/spool/cron/root etc/rc.local /server/scripts var/html/www app/logs &>/dev/null
? Web 服務(wù)器本地保留打包后的 7 天備份數(shù)據(jù)即可(本地留存不能多于 7 天馒稍,
因?yàn)樘嘤脖P會(huì)滿)
find /backup/ -type f -mtime +7|xargs rm -f
? 備份服務(wù)器 backup 上,保留最近 7 天的備份數(shù)據(jù),同時(shí)保留 6 個(gè)月內(nèi)每周一
的所有數(shù)據(jù)副本浅侨。
if [ $(date +%w -d “-1day”) -eq 2 ]
then
DATE=”$(date +%F_%w -d “-1day”)_week1”
else
DATE+”$(date +%F_%w -d “-1day”)”
fi
find /backup/ -type f -mtime +7|xargs rm –f &&\
find /backup/ -type f ! -name “*week1*” –mtime +180|xargs rm –f
? 備份服務(wù)器上,要按照備份數(shù)據(jù)服務(wù)器的內(nèi)網(wǎng) IP 為目錄保存?zhèn)浞菖耍瑐浞莸奈?件按照時(shí)間名字保存。
IP=`hostname -I|awk ‘{print $2}’`
mkdir –p /backup/$IP
? 需要確保備份的數(shù)據(jù)盡量完整正確如输,在備份服務(wù)器上對備份的數(shù)據(jù)是否完整
進(jìn)行檢查鼓黔。
在web01打包得時(shí)候就采集打包內(nèi)容得指紋
find /backup/ -type f -name ‘$DATE.tar.gz’|xargs md5sum>/backup/$IP/bak_$IP_$DATE.fail
在rsync服務(wù)器上檢查推送來得指紋
LOGPATH=/tmp/fail.log
find backup/$IP -type f -name “*.fail”|xargs md5sum -c &>/LOGPATH
每天晚上 00 點(diǎn)整在 Web 服務(wù)器上打包備份系統(tǒng)配置文件、網(wǎng)站程序目錄及
訪問日志并通過 rsync 命令推送備份服務(wù)器 backup 上備份保留
腳本編輯
#!/bin/bash
export PATH= /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
IP=`hostname -I|awk '{print $2}'`
DATE=`date +%F_%w -d "-1day"`
mkdir –p /backup/$IP
if [ $(date +%w) -eq 2 ]
then
DATE="$(date +%F_%w –d -1day)_week1"
else
DATE="$(date +%F_%w -d -1day)"
fi
tar zcf /backup/$IP/bak.$DATE.tar.gz var/spool/cron/root etc/rc.local /server/scripts var/html/www app/logs &>/dev/null
rsync –avz /backup/ rsync_back@172.16.1.41::backup
find /backup/ -type f -mtime +7|xargs rm -f
find /backup/ -type f ! -name "*week1*" –mtime +180|xargs rm –f
find /backup/ -type f -name "$DATE.tar.gz"|xargs md5sum>/backup/$IP/bak.$IP.$DATE.fail
Rsync 服務(wù)端 檢查指紋
find backup/$IP -type f -name "*.fail"|xargs md5sum -c &>/LOGPATH
LOGPATH=/tmp/fail.log
每天早晨8:00 把備份成功或失敗結(jié)果信息發(fā)給系統(tǒng)管理員郵箱中不见。
mail –s "$(date +%F_%T) backup data error" 17631153498@163.com </tmp/fail.log
郵箱配置文件
set from=xxxxxxx@163.com
set smtp=smtp.163.com
set smtp-auth-user=xxxxx@qq.com
set smtp-auth-password=xxxxxxxxxxx
set smtp-auth=login
放入/etc/mail.rc中
改為自己的配置 倒數(shù)第二行是授權(quán)碼 郵箱設(shè)置