1.Rsync服務(wù)

第一章 rsync介紹

作?:

Rsync是?款開源的傳輸?具,可以?于不同主機(jī)之間同步傳輸數(shù)據(jù),可以實(shí)現(xiàn)全量備份與增量備份

運(yùn)?端?:

rsync默認(rèn)運(yùn)?端?:873

?作模式:

rsync有三種?作模式:
1.本地模式:類似于cp命令,不常?
2.遠(yuǎn)程模式:常?,在不同的主機(jī)之間傳輸數(shù)據(jù)
3.后臺(tái)服務(wù)模式:常?,?于實(shí)時(shí)同步數(shù)據(jù),安全性較好

第二章 備份?式介紹

1.備份的?式

從備份的?式來(lái)說(shuō),共有兩種備份:
1.全量備份:將客戶端所有的數(shù)據(jù)內(nèi)容全部備份至服務(wù)端(效率低下,占用空間)
2.增量備份:將客戶端的增量備份至服務(wù)端(提高備份效率,節(jié)省空間,適合異地備份)

2.備份的架構(gòu)

rsync-備份架構(gòu)-0423.png

第三章 rsync本地模式和遠(yuǎn)程模式

1.命令說(shuō)明 (1V4)

安裝命令:

yum install rsync -y

命令格式:

Usage:
#本地模式
rsync [OPTION]... SRC [SRC]... DEST
1)本地備份:
src: 要備份的數(shù)據(jù)信息
dest:備份到什么路徑中

#遠(yuǎn)程服務(wù)模式,推送的?式,將??的數(shù)據(jù)發(fā)送到遠(yuǎn)程服務(wù)器
rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST
rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST

#遠(yuǎn)程服務(wù)模式,拉取的?式,從遠(yuǎn)程服務(wù)器拉取數(shù)據(jù)
rsync [OPTION]... [USER@]HOST:SRC [DEST]
rsync [OPTION]... [USER@]HOST::SRC [DEST]

2.本地模式

a. 本地備份數(shù)據(jù)(cp)

[root@nf01 backup]# cp /etc/host /tmp
[root@nf01 backup]# ll /tmp/host
-rw-r--r-- 1 root root 371 May 6 16:11 /tmp/hosts
[root@nf01 backup]# rsync /etc/host /tmp/host_rsync
[root@nf01 backup]# ll /tmp/host_rsync
-rw-r--r-- 1 root root 371 May 6 16:12 /tmp/host_rsync

b. 遠(yuǎn)程備份數(shù)據(jù)

說(shuō)明:scp命令它是全量模式備份
01.命令語(yǔ)法格式說(shuō)明:

2)遠(yuǎn)程備份數(shù)據(jù):(#最好是以root身份進(jìn)行遠(yuǎn)程傳輸,因?yàn)橛嘘P(guān)權(quán)限要求)
Access via remote shell:
Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
[USER@]     --- 以什么用戶身份拉取數(shù)據(jù)(默認(rèn)以當(dāng)前用戶)
HOST        --- 指定遠(yuǎn)程主機(jī)ip地址或者主機(jī)名稱
SRC         --- 要拉取的數(shù)據(jù)信息
dest        --- 保存到本地的路徑信息 

Push: rsync [OPTION...] SRC:... [USER@]HOST:DEST
SRC         --- 本地要進(jìn)行遠(yuǎn)程傳輸備份的數(shù)據(jù)
[USER@]     --- 以什么用戶身份推送數(shù)據(jù)(默認(rèn)以當(dāng)前用戶)
HOST        --- 指定遠(yuǎn)程主機(jī)ip地址或者主機(jī)名稱
dest        --- 保存到遠(yuǎn)程的路徑信息 

實(shí)例演示如下:
1.從存儲(chǔ)服務(wù)器主機(jī)上的/etc/hosts文件拉取到本地的/backup目錄下(默認(rèn)為root用戶)

[root@nf01 ~]# rsync -rp /etc/hosts 10.0.0.41:/backup/hosts_rsync
root@10.0.0.41's password:

2.如以oldboy的身份從存儲(chǔ)服務(wù)器主機(jī)上的/etc/hosts文件拉取到本地的/backup目錄下

[root@backup ~]# rsync -rp oldboy@nfs01:/etc/hosts /backup
oldboy@nf101's password:
[root@backup ~]# ll /backup/
-rw-r--r-- 1 root root 434 Jan 25 00:01 hosts
#若以olddog的身份從存儲(chǔ)服務(wù)器主機(jī)上的/etc/hosts文件拉取到本地的/backup目錄下,會(huì)報(bào)錯(cuò)
[root@backup ~]# rsync -rp olddog@10.0.0.31:/etc/hosts /backup
###
#說(shuō)明:首先備份服務(wù)器上要有olddog用戶,存儲(chǔ)服務(wù)器上也要相應(yīng)的olddog用戶,其次還得要有權(quán)限(屬主屬組)
[root@backup ~]# ll /backup/
-rw-r--r-- 1 olddog olddog 434 Jan 25 00:01 hosts

3.需求把存儲(chǔ)服務(wù)器里的/etc/hosts文件備份到備份服務(wù)器指定的目錄下

[root@nf01 ~]# scp -rp /etc/hosts root@10.0.0.41:/backup
root@10.0.0.41's password:
hosts       100%    371  42.8KB/s 00:00
-r  --- 遞歸復(fù)制傳輸數(shù)據(jù)
-p  --- 保持文件屬性信息不變
[root@nf01 ~]# rsync -rp /etc/hosts root@10.0.0.41:/backup/hosts_rsync
root@10.0.0.41's password:
##說(shuō)明以上備份的都是文件

02.rsync遠(yuǎn)程備份目錄--(rsync命令它是增量模式備份:如果執(zhí)行命令多次,它會(huì)進(jìn)行比較看是否已有)

[root@nf01 ~]# rsync -rp /oldboy root@10.0.0.41:/backup (備份的目錄后面沒(méi)有'/')
root@10.0.0.41's password:
[root@backup ~]# ll /backup
total 0
drwxr-xr-x 2 root root 48 May 6 16:22 oldboy
[root@backup ~]# tree /backup/
/backup/
|--oldboy
   |-- oldboy01.txt
   |-- oldboy02.txt
   |-- oldboy03.txt

[root@nf01 ~]# rsync -rp /oldboy/ root@10.0.0.41:/backup  (備份的目錄后面有'/')
root@10.0.0.41's password:
[root@backup ~]# ll /backup
total 0
-rw-r--r-- 1 root root   0 Dec 18 17:17 oldboy01.txt
-rw-r--r-- 1 root root   0 Dec 18 17:17 oldboy02.txt
-rw-r--r-- 1 root root   0 Dec 18 17:17 oldboy03.txt

03.總結(jié):在使用rsync備份目錄時(shí)

備份目錄后面有 / -- /oldboy/:只將目錄下的內(nèi)容進(jìn)行備份傳輸
備份目錄后面沒(méi)有/ -- /oldboy: 會(huì)將目錄本身及下面的內(nèi)容進(jìn)行傳輸備份

c.替代刪除命令(rm)

[root@nf01 ~]# mkdir /unll
[root@nf01 ~]# ll /null/
total 0
[root@nf01 ~]#  rsync -rp --delete /null 10.0.0.41:/backup
root@10.0.0.41's password:
--delete  實(shí)現(xiàn)無(wú)差異同步數(shù)據(jù)
#說(shuō)明: 
無(wú)差異指的是我這個(gè)'null'目錄沒(méi)有數(shù)據(jù),那么你/backup/目錄下也就沒(méi)有,用--delete就實(shí)現(xiàn)這個(gè)目的,
也會(huì)把你/backup/目錄中跟我不一樣的文件也會(huì)一并刪除,這就叫無(wú)差異同步
面試題目:有一個(gè)存儲(chǔ)數(shù)據(jù)信息的目錄,目錄中數(shù)據(jù)存儲(chǔ)了50G數(shù)據(jù),如何將目錄中的數(shù)據(jù)快速刪除: rm /目錄/* -rf 
使用rm命令刪除小文件可以,但刪除大文件效率極低,因?yàn)樗獜拇疟P讀取數(shù)據(jù);故刪除大文件時(shí)則用rsync命令效率高

d.替代查看文件命令(ls)

[root@backup ~]# ls /etc/hosts
/etc/hosts
[root@backup ~]# rsync /etc/hosts
-rw-r--r--           371 2019/08/08  12:12:12 hosts

3.遠(yuǎn)程模式

#PUSH 推送模式
rsync -avz bakup41.txt 10.0.0.7:/root/
#PULL 拉取模式
rsync -avz 10.0.0.7:/root/web.txt /opt/web-41.txt
#傳輸目錄注意
rsync -avz dir1 10.0.0.7:/root/     #傳輸整個(gè)目錄,包含目錄本身
rsync -avz dir1/ 10.0.0.7:/root/    #只傳輸目錄下的文件,不包含目錄本身
#不同主機(jī)之間同步數(shù)據(jù)
rsync -avz /root/html/ 10.0.0.41:/backup/web-7/
rsync -avz --delete /root/html/ 10.0.0.41:/backup/web-7/

#坑:如果/和一個(gè)空目錄進(jìn)行完全同步,那么效果和刪根一樣
rsync -avz --delete 10.0.0.41:/backup/web-7/ /
#坑:傳輸過(guò)程不限速導(dǎo)致帶寬被占滿
dd if=/dev/zero of=/root/5G.txt bs=100M count=50
rsync -avzP --bwlimit=50 5G.txt 10.0.0.7:/opt/

第四章 rsync服務(wù)模式-服務(wù)端配置

1.為什么需要服務(wù)模式

Rsync借助SSH 協(xié)議同步數(shù)據(jù)存在的缺陷:
1.使用系統(tǒng)用戶(不安全)
2.使用普通用戶(會(huì)導(dǎo)致權(quán)限不足情況)
3.守護(hù)進(jìn)程傳輸方式:rsync自身非常重要的功能(不使用系統(tǒng)用戶,更加安全)

2.rsync服務(wù)端部署

1) 安裝rsync

yum install rsync -y

2) 修改配置文件

cat > /etc/rsyncd.conf << 'EOF'
uid = www 
gid = www 
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 600
ignore errors
read only = false
list = false
auth users = rsync_backup
secrets file = /etc/rsync.passwd
log file = /var/log/rsyncd.log
#####################################
[backup]
comment = welcome to oldboyedu backup!
path = /backup

[data]
path = /data
EOF

3) 配置文件解釋

uid = www                   # 運(yùn)行進(jìn)程的用戶
gid = www                   # 運(yùn)行進(jìn)程的用戶組
port = 873                  # 監(jiān)聽端口
fake super = yes            # 無(wú)需讓 rsync 以 root 身份運(yùn)行,允許接收文件的完整屬性
use chroot = no             # 禁錮推送的數(shù)據(jù)至某個(gè)目錄, 不允許跳出該目錄
max connections = 200       # 最大連接數(shù)
timeout = 600               # 超時(shí)時(shí)間
ignore errors               # 忽略錯(cuò)誤信息
read only = false           # 對(duì)備份數(shù)據(jù)可讀寫
list = false                # 不允許查看模塊信息
auth users = rsync_backup          # 定義虛擬用戶,作為連接認(rèn)證用戶
secrets file = /etc/rsync.passwd   # 定義 rsync 服務(wù)用戶連接認(rèn)證密碼文件路徑

[backup]                    # 定義模塊信息
comment = commit            # 模塊注釋信息
path = /backup              # 定義接收備份數(shù)據(jù)目錄

4) 創(chuàng)建用戶以及數(shù)據(jù)目錄

[root@backup-41 ~]# useradd -u 1000 -M -s /sbin/nologin www
[root@backup-41 ~]# id www
uid=1000(www) gid=1000(www) groups=1000(www)
[root@backup-41 ~]# mkdir /data
[root@backup-41 ~]# mkdir /backup
[root@backup-41 ~]# chown -R www:www /data/
[root@backup-41 ~]# chown -R www:www /backup/

5) 創(chuàng)建虛擬用戶密碼文件并授權(quán)

[root@backup-41 ~]# cat /etc/rsync.passwd
rsync_backup:oldboy
[root@backup-41 ~]# chmod 600 /etc/rsync.passwd 
[root@backup-41 ~]# ll /etc/rsync.passwd 
-rw------- 1 root root 20 Apr 20 10:54 /etc/rsync.passwd

5) 加入開機(jī)自啟動(dòng)

[root@backup-41 ~]# systemctl start rsyncd

6) 檢查服務(wù)是否運(yùn)行

[root@backup-41 ~]# ps -ef|grep [r]sync
root      12312      1  0 10:58 ?        00:00:00 /usr/bin/rsync --daemon --no-detach
[root@backup-41 ~]# netstat -lntup|grep 873
tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      12312/rsync         
tcp6       0      0 :::873                  :::*                    LISTEN      12312/rsync 

第五章 rsync服務(wù)模式-客戶端配置

1) 安裝rsync

[root@web-7 ~]# yum install rsync -y

2) 配置密碼文件及授權(quán)

方法1:將密碼寫入文件

[root@web-7 ~]# echo "oldboy" > /etc/rsync.pass
[root@web-7 ~]# chmod 600 /etc/rsync.pass
[root@web-7 ~]# cat /etc/rsync.pass 
oldboy
[root@web-7 ~]# ll /etc/rsync.pass 
-rw------- 1 root root 7 Apr 20 11:16 /etc/rsync.pass
[root@web-7 ~]# rsync -avz --password-file=/etc/rsync.pass /root/web-7.txt rsync_backup@10.0.0.41::backup
[root@web-7 ~]# rsync -avz --password-file=/etc/rsync.pass /root/web-7.txt rsync_backup@10.0.0.41::data

方法2:使用環(huán)境變量-推薦

[root@web-7 ~]# export RSYNC_PASSWORD=oldboy
[root@web-7 ~]# rsync -avz /root/web-7.txt rsync_backup@10.0.0.41::backup
[root@web-7 ~]# rsync -avz /root/web-7.txt rsync_backup@10.0.0.41::data

疑問(wèn)??

問(wèn)題1:配置文件運(yùn)行用戶是www,為什么進(jìn)程里是root

[root@backup-41 ~]# ps -ef|grep [r]sync
root      12312      1  0 10:58 ?        00:00:00 /usr/bin/rsync --daemon --no-detach
原因:
因?yàn)閣ww進(jìn)程是工作進(jìn)程,只有出現(xiàn)任務(wù)的時(shí)候才會(huì)被創(chuàng)建啟動(dòng)

問(wèn)題2:發(fā)送主機(jī)的文件是root用戶的,為什么接收過(guò)來(lái)顯示是www用戶

原因:
配置文件里控制,無(wú)論客戶端的文件是什么用戶,接收文件時(shí)都強(qiáng)制轉(zhuǎn)換成www用戶

第六章 rsync排錯(cuò)指南

1.報(bào)錯(cuò)1

[root@backup-41 ~]# rsync -avz bakup41.txt 10.0.0.7:/root/
root@10.0.0.7's password: 
bash: rsync: command not found
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: remote command not found (code 127) at io.c(226) [sender=3.1.2]
原因:
使用rsync傳輸,需要兩邊機(jī)器都安裝有rsync軟件
yum install rsync -y

2.報(bào)錯(cuò)2

[root@web-7 ~] # rsync -avz /root/111.txt rsync_backup@10.0.0.41::backup
@ERROR: auth failed on module backup
rsync error: error starting client-server protocol (code 5) at main.c(1649) [sender=3.1.2]
原因:
密碼文件里的虛擬用戶名寫錯(cuò)了

3.報(bào)錯(cuò)3

[root@web-7 ~]# rsync -avz /root/web-7.txt rsync_backup@10.0.0.41::backup
rsync: failed to connect to 10.0.0.41 (10.0.0.41): Connection refused (111)
rsync error: error in socket IO (code 10) at clientserver.c(125) [sender=3.1.2]
原因:
服務(wù)端啟動(dòng)命令出錯(cuò),少加了d
systemctl start rsyncd

4.報(bào)錯(cuò)4

[root@web-7 ~]#rsync -avz /root/web-7.txt rsync_backup@10.0.0.41::backup
@ERROR: Unknown module 'backup'
rsync error: error starting client-server protocol (code 5) at main.c(1649) [sender=3.1.2]
原因:
[root@backup-41 ~]#cat /etc/rsyncd.conf 
cat > /etc/rsyncd.conf << 'EOF'
uid = www 
gid = www 
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 600
ignore errors
read only = false
#省略部分信息


復(fù)制粘貼沒(méi)有看清楚,直接一把梭了

5.報(bào)錯(cuò)5

[root@web-7 ~]# rsync -avz /root/a/123.txt rsync_backup@10.0.0.41::backup
Password: 
@ERROR: auth failed on module backup
rsync error: error starting client-server protocol (code 5) at main.c(1649) [sender=3.1.2]
原因:
客戶端沒(méi)有配置密碼
客戶端密碼出錯(cuò)

6.報(bào)錯(cuò)6

[root@web-7 ~]# export RSYNC_PASSWORD=oldboy
[root@web-7 ~]# rsync -avz /root/456.txt  rsync_backup@10.0.0.41::backup
@ERROR: Unknown module 'backup'
rsync error: error starting client-server protocol (code 5) at main.c(1649) [sender=3.1.2]
原因:
#####################################
##[backup]
##comment = welcome to oldboyedu backup!
##path = /backup
##
##[data]
##path = /data
#
[root@backup-41 ~]# cat /etc/rsync.passwd
cat: /etc/rsync.passwd: No such file or directory

1.配置文件注釋有問(wèn)題
2.沒(méi)有創(chuàng)建密碼文件

7.報(bào)錯(cuò)7

[root@ceisi tmp]# rsync -avzP /tmp/wordpress rsync_backup@10.0.0.7::backup
rsync: failed to connect to 10.0.0.7 (10.0.0.7): No route to host (113)
rsync error: error in socket IO (code 10) at clientserver.c(125) [sender=3.1.2]
原因:
#防火墻沒(méi)有關(guān)閉
[root@backup ~]# iptables -nL
[root@backup ~]# systemctl stop firewalld.service

第七章 rsync服務(wù)模式實(shí)戰(zhàn)

1.客戶端推送 /backup?錄下所有內(nèi)容?rsync服務(wù)端

export RSYNC_PASSWORD=oldboy
rsync -avz /backup/ rsync_backup@172.16.1.41::backup

2.客戶端拉取rsync服務(wù)端backup模塊數(shù)據(jù)?本地客戶端的/backup?錄

export RSYNC_PASSWORD=oldboy123
rsync -avz rsync_backup@172.16.1.41::backup /backup/

3.rsync 實(shí)現(xiàn)數(shù)據(jù)?差異同步

#拉取遠(yuǎn)端數(shù)據(jù):遠(yuǎn)端與本地保持?致,遠(yuǎn)端沒(méi)有本地有會(huì)被刪除, 造成客戶端數(shù)據(jù)丟失
export RSYNC_PASSWORD=oldboy
rsync -avz --delete rsync_backup@172.16.1.41::backup /data/

#推送數(shù)據(jù)?遠(yuǎn)端:本地與遠(yuǎn)端保持?致, 本地沒(méi)有遠(yuǎn)端會(huì)被刪除, 造成服務(wù)器端數(shù)據(jù)丟失
export RSYNC_PASSWORD=oldboy
rsync -avz --delete /data/ rsync_backup@172.16.1.41::backup

4.rsync的 Limit 限速

#企業(yè)案例: 某 DBA 使? rsync 拉取備份數(shù)據(jù)時(shí),由于?件過(guò)?導(dǎo)致內(nèi)部交換機(jī)帶寬被沾滿,導(dǎo)致?戶的請(qǐng)求?法響應(yīng)

export RSYNC_PASSWORD=oldboy
rsync -avz --bwlimit=1 rsync_backup@172.16.1.41::backup /data/

第八章 全網(wǎng)備份項(xiàng)目

<<每日備份任務(wù)需求>>

客戶端需求:

1.客戶端每天凌晨1點(diǎn)在服務(wù)器本地打包備份(/etc目錄和/var/log目錄) ;
2.客戶端備份的數(shù)據(jù)必須存放至以 "主機(jī)名_ip地址_當(dāng)前時(shí)間" 命名的目錄中;
3.客戶端最后通過(guò)rsync推送本地已經(jīng)打包好的備份文件至backup服務(wù)器 ;
4.客戶端服務(wù)器本地保留最近7天的數(shù)據(jù),避免浪費(fèi)磁盤空間.

服務(wù)端需求:

1.服務(wù)端部署rsync,用于接收客戶端推送過(guò)來(lái)的備份數(shù)據(jù) ;
2.服務(wù)端需要每天校驗(yàn)客戶端推送過(guò)來(lái)的數(shù)據(jù)是否完整; 
3.服務(wù)端需要每天校驗(yàn)的結(jié)果通知給管理員 ;
4.服務(wù)端僅保留6個(gè)月的備份數(shù)據(jù),其余的全部刪除 ;
注意:所有服務(wù)器的備份目錄必須都為/backup;

<< 解決方案思路如下:將多個(gè)任務(wù)需求進(jìn)行拆分 >>

A:客戶端需求拆解

1.打包備份

客戶端每天凌晨1點(diǎn)在服務(wù)器本地打包備份(/etc目錄和/var/log目錄)

cd /
tar zcvf etc.tar.gz etc 
tar zcvf log.tar.gz var/log 
2.目錄命名

客戶端備份的數(shù)據(jù)必須存放至以 "主機(jī)名ip地址當(dāng)前時(shí)間" 命名的目錄中,期望的結(jié)果:

web-7_172.16.1.7_2021-04-21
命令拆解:
主機(jī)名: hostname
ip地址: ifconfig eth1|awk 'NR==2{print $2}'
當(dāng)前時(shí)間: date +%F
命令拼接:
mkdir -p /backup/$(hostname)_$(ifconfig eth1|awk 'NR==2{print $2}')_$(date +%F)

3.文件傳輸

rsync -avz /backup/$(hostname)_$(ifconfig eth1|awk 'NR==2{print $2}')_$(date +%F) rsync_backup@172.16.1.41::backup

4.刪除過(guò)期文件

find /backup -mtime +7 |xargs rm -rf

5.最終腳本

現(xiàn)在shell里面運(yùn)行:

mkdir -p /backup/$(hostname)_$(ifconfig eth1|awk 'NR==2{print $2}')_$(date +%F)
cd /
tar zcvf /backup/$(hostname)_$(ifconfig eth1|awk 'NR==2{print $2}')_$(date +%F)/etc.tar.gz etc 
tar zcvf /backup/$(hostname)_$(ifconfig eth1|awk 'NR==2{print $2}')_$(date +%F)/log.tar.gz var/log 
rsync -avz /backup/$(hostname)_$(ifconfig eth1|awk 'NR==2{print $2}')_$(date +%F) rsync_backup@172.16.1.41::backup
find /backup -mtime +7 |xargs rm -rf

然后再寫入腳本,注意,要添加注釋:

6.最終客戶端備份腳本

[root@ceisi scripts]# vim back_cm.sh 
#!/bin/bash

#time:2021-04-21  name: date_backup  by:tan
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
export RSYNC_PASSWORD=oldboy123

#1.創(chuàng)建備份目錄
mkdir /backup/ -p

#2.本地打包備份
cd /
tar -cf backup/$(hostname)_$(ifconfig eth0|awk 'NR==2{print $2}')_$(date +%F).etc.tar.gz etc
tar -cf backup/$(hostname)_$(ifconfig eth0|awk 'NR==2{print $2}')_$(date +%F).log.tar.gz var/log

#3.將打包文件生成指紋件
md5sum /backup/*.tar.gz >/backup/$(hostname)_$(ifconfig eth0|awk 'NR==2{print $2}')_$(date +%F).finger.txt

#4.將本地備份文件推送到備份服務(wù)器 
rsync -az /backup/$(hostname)_$(ifconfig eth0|awk 'NR==2{print $2}')_$(date +%F).finger.txt rsync_backup@10.0.0.200::backup
rsync -az /backup/*.tar.gz rsync_backup@10.0.0.200::backup

#5.保留最近7天的數(shù)據(jù)
find /backup/ -time +7|xargs rm -rf

7.客戶端定時(shí)任務(wù)

[root@ceisi scripts]# crontab -l
#time sync by oldboy at 2021-01-24
* * * * * /usr/sbin/ntpdate time1.aliyun.com >/dev/null 2>&1

#數(shù)據(jù)備份
#time=2021-04-21  by=tan
00 01 * * * /bin/bash /server/scripts/back_cm.sh 2>&1

B.服務(wù)端需求拆解

1.服務(wù)部署

服務(wù)端部署rsync,用于接收客戶端推送過(guò)來(lái)的備份數(shù)據(jù)

#!/bin/bash
yum install rsync -y
cat > /etc/rsyncd.conf << 'EOF'
uid = www 
gid = www 
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 600
ignore errors
read only = false
list = false
auth users = rsync_backup
secrets file = /etc/rsync.passwd
log file = /var/log/rsyncd.log
[backup]
comment = welcome to oldboyedu backup!
path = /backup
EOF
useradd -u 1000 -M -s /sbin/nologin www
mkdir -p /{backup,data}
chown -R www:www /{backup,data}
echo "rsync_backup:oldboy" > /etc/rsync.passwd
chmod 600 /etc/rsync.passwd
systemctl start rsyncd

2.校驗(yàn)數(shù)據(jù)完整性

服務(wù)端需要每天校驗(yàn)客戶端推送過(guò)來(lái)的數(shù)據(jù)是否完整

3.郵件通知

#1.安裝配置mailx:
yum install mailx -y

#2.郵箱配置文件
cat > /etc/mail.rc << 'EOF' 
set from=526195417@qq.com
set smtp=smtps://smtp.qq.com:465
set smtp-auth-user=526195417@qq.com
set smtp-auth-password=xxxxxxxx
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb/
EOF

#3.服務(wù)端生成校驗(yàn)結(jié)果文件:
md5sum -c /backup/md5.txt > /backup/check.txt

#4.校驗(yàn)發(fā)送命令
mail -s "check-rsync-$(date +%F)" 526195417@qq.com < /backup/check.txt

4.刪除過(guò)期文件

find /backup -mtime +180 |xargs rm -rf

5.最終服務(wù)端檢查備份腳本

#!/bin/bash

#time:2021-04-21   name:check_backup    by:tan
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

#1.部署rsync服務(wù)
#bash /server/scripts/rsync_sv.sh

#2.校驗(yàn)客戶端推送過(guò)來(lái)的數(shù)據(jù)是否完整 
md5sum -c /backup/ceisi_10.0.0.100_$(date +%F).finger.txt >/backup/check.txt

#3.每天校驗(yàn)的結(jié)果郵件通知
mail -s "$(date +%F)_log" 1987623828@qq.com </backup/check.txt

#4.僅保留6個(gè)月的備份數(shù)據(jù),其余的全部刪除 
find /backup/ -mtime +180|xargs rm -rf 

6.服務(wù)端檢查備份定時(shí)任務(wù)

[root@oldboy scripts]# crontab  -l
#time sync by oldboy at 2021-01-24
* * * * * /usr/sbin/ntpdate time1.aliyun.com >/dev/null 2>&1

#檢查備份數(shù)據(jù)是否完整 
#time:2012-04-21   by:tan
00 01 * * * /bin/bash /server/scripts/check_backup.sh 2>&1
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容