rsync全网备份服务

一、 需求

每天晚上12点整在Web服务器A(web01 )上打包备份网站程序目录并通过rsync命令推送到服务器B(backup)上备份保留
(备份思路可以是先在本地按日期打包,然后再利用rsync推到备份服务器上)。

二、 具体要求如下:

1)Web服务器A和备份服务器B的备份目录必须都为/backup。 #扩展要求/backup/ip地址命名目录中
2)Web服务器站点目录假定为(/var/www/html)。
3)Web服务器本地仅保留7天内的备份。
4)备份服务器上每周六的数据都保留,其他备份仅保留180天备份。
5)备份服务器上检查备份结果是否正常(备份内容变?),并将每天的备份结果发给管理员信箱。

三、 全网备份部署过程
image.png

四、环境部署

4.1 模拟环境

外网 内网 主机名
rsync服务端 10.0.0.41 172.16.1.41 backup
rsync客户端 10.0.0.7 172.16.1.7 web01

4.2 配置rsync服务端

4.2.1 编写rsync服务配置文件/etc/rsyncd.conf

[root@backup ~]# cat /etc/rsyncd.conf  
#rsync server  
##created by oldboy 15:01 2019-5-20  
##rsyncd.conf start##  
fake super = yes    
uid = rsync      
gid = rsync      
use chroot = no  
max connections = 2000    
timeout = 600     
pid file = /var/run/rsyncd.pid  
lock file = /var/run/rsync.lock   
log file = /var/log/rsyncd.log   
ignore errors  
read only = false    
list = false  
#hosts allow = 10.0.0.0/24    
#hosts deny = 0.0.0.0/32      
auth users = rsync_backup     
secrets file = /etc/rsync.password 
#####################################  
[data]      
comment = www by old0boy 14:18 2012-1-13    
path = /data    
#####################################  [backup]      
comment = www by wwj 14:18 2019-5-20    
path = /backup

4.2.2 创建rsync服务虚拟用户rsync

[root@backup ~]# useradd rsync -M -s /sbin/nologin
[root@backup ~]# grep 'rsync' /etc/passwd
rsync:x:1001:1001::/home/rsync:/sbin/nologin
[root@backup ~]#

4.2.3 创建要备份的目录,并修改备份目录的所有者和所有者属组为rsync

[root@backup ~]# mkdir -p /backup
 [root@backup ~]# chown -R rsync.rsync /backup
[root@backup ~]# ls -ld /backup
drwxr-xr-x 2 rsync rsync 6 May 20 20:55 /backup
[root@backup ~]#

4.2.4 编辑/etc/rsyncd.conf配置文件,在里面配置backup模块

#####################################
[backup]    
comment = www by wwj 14:18 2019-5-20 #注释
path = /backup    

4.2.5 创建密码文件,并设置权限为600

[root@backup ~]# echo "rsync_backup:123456">/etc/rsync.password  
[root@backup ~]# chmod 600 /etc/rsync.password  [root@backup ~]# ls -ld /etc/rsync.password  -rw------- 1 root root 20 May 20 21:09 /etc/rsync.password  [root@backup ~]#

4.2.6 启动服务

启动服务:systemctl restart rsyncd
设置开机自启动:systemctl enable rsyncd

4.2.7 服务端自我检查

[root@backup ~]# rsync -avz /etc/hostname [rsync_backup@172.16.1.41::backup](mailto:rsync_backup@172.16.1.41::backup)

4.3 配置rsync客户端

[root@nfs01 ~]# echo "123456" >/etc/rsync.password  [root@nfs01 ~]# rsync -avz /etc/hostname rsync_backup@172.16.1.41::backup --password-file /etc/rsync.password  
sending incremental file list  
hostname  
sent 101 bytes received 49 bytes 300.00 bytes/sec  
total size is 6 speedup is 0.04  
[root@nfs01 ~]#

五、在客户端编写脚本

脚本存放目录:/server/scripts/
脚本名称:client_rsync_backup.sh

5.1 先根据需求在客户端命令行写对应的命令并测试

5.1.1 创建对应ip地址的目录

[root@web01 ~]# Ip=$(hostname -I |awk '{print $NF}')  [root@web01 ~]# mkdir -p /backup/$Ip  
[root@web01 ~]# tree /backup/  /backup/  
└── 172.16.1.7  1 
directory, 0 files 
 [root@web01 ~]#

5.1.2 打包备份:打包备份/etc /var/www/html到/backup/172.16.1.7下,压缩包叫conf-2019-5-21-1.tar.gz,以时间命名

[root@web01 ~]# tar zcf /backup/172.16.1.7/conf-$(date +%F-%w).tar.gz /etc /var/www/html  
tar: Removing leading `/' from member names  
[root@web01 ~]# tree /backup/  /backup/  
└── 172.16.1.7   
  └── conf-2019-05-22-3.tar.gz  
1 directory, 1 file  
[root@web01 ~]#

5.1.3 制作md5---用于后面校验(备份服务器上检查备份结果是否正常(备份内容变?))

[root@web01 ~]# md5sum $(find /backup/ -type f -name '*.tar.gz') >/backup/$Ip/$(hostname).md5  
[root@web01 ~]# tree /backup/  /backup/  
└── 172.16.1.7   
  ├── conf-2019-05-22-3.tar.gz   
  └── web01.md5 
 1 directory, 2 files  
[root@web01 ~]#

5.1.4 推送备份---将客户端的备份推送到backup服务器上的backup模块

[root@web01 ~]# rsync -avz /backup/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password  
sending incremental file list  
./  
172.16.1.7/  
172.16.1.7/conf-2019-05-22-3.tar.gz  
172.16.1.7/web01.md5  
sent 10,015,630 bytes received 73 bytes 6,677,135.33 bytes/sec
total size is 10,214,471 speedup is 1.02  
[root@web01 ~]#

[root@backup ~]# tree /backup  
/backup  
└── 172.16.1.7
   ├── conf-2019-05-22-3.tar.gz
   └── web01.md5  1 directory, 2 files 
 [root@backup ~]#

注:编写到脚本中的时候,可以将-avz中v取消,即-az

5.1.5 删除备份---删除7天之前的备份

rm -rf $(find /backup/ -type f -mtime +7 -name '*.tar.gz')

5.2 将以上脚本编写到定时任务脚本中

[root@web01 ~]# cat /server/scripts/client_rsync_backup.sh
#!/bin/bash  
. /etc/profile  
Host=$(hostname)          
#ip var         
Ip=$(ip a s eth1|awk -F'[ /]+' 'NR==3{print $3}')    
#date var  
Date=$(date +%F-%w)           
#make backup dir  
mkdir -p /backup/${Ip}  
#tar /etc/ /var/www/html to /backup  
tar zcf /backup/${Ip}/conf-${Date}.tar.gz /etc/ /var/www/html
#make md5  
md5sum $(find /backup/ -type f -name '*.tar.gz') >/backup/${Ip}/${Host}.md5  
#push tar file to server 
 rsync -az /backup/ rsync_backup@172.16.1.41::backup --password-file /etc/rsync.password  
#delete 7 day ago  
#rm -rf $(find /backup/ -type f -mtime +7 -name '*.tar.gz'
[root@web01 ~]#

5.3 编写定时任务

注:根据需求编写定时任务之前,先按照每分钟进行测试,没问题之后修改为需求中的具体执行时间

[root@web01 /server/scripts]# crontab -l
#backup meige server rsync
00 00 * * * sh /server/scripts/client_rsync_backup.sh >/dev/null 2>&1

5.4 遇到的错误

5.4.1 Connection refused 连接拒绝

[root@web01 ~]# rsync -avz /backup/$Ip rsync_backup@172.16.1.41::backup --password-file /etc/rsync.password
rsync: failed to connect to 172.16.1.41 (172.16.1.41): Connection refused (111)
rsync error: error in socket IO (code 10) at clientserver.c(125) [sender=3.1.2]

原因:backup服务端的rsync服务没有启动,systemctl restart rsyncd启动即可

六、 在服务端编写脚本

存放脚本文件的位置:/server/scripts/
脚本名称:server_backup_check.sh

6.1 进行md5检查,检查数据是否修改

方法1:md5sum -c /backup/*/*.md5 >/backup/md5.txt
方法2:find /backup/ -type f -name '*.md5'|xargs md5sum -c >/backup/md5.txt

6.2 备份服务器上每周六的数据都保留,其他备份仅保留180天备份。

find /backup/ -type f -name '*.tar.gz' ! -name '*-6.tar.gz' -mtime +180 |xargs rm -rf

6.3 将每天的备份结果发给管理员信箱。

6.3.1 配置mail使用外部SMTP发邮件

1> 注册一个163邮箱
2> 检查邮件服务是否启动及开机自启动

[17:47 root@backup ~]# systemctl restart postfix.service
[17:50 root@backup ~]# systemctl is-active postfix.service
active
[17:50 root@backup ~]# systemctl is-enabled postfix.service
enabled

3> 修改/etc/mail.rc最后一行加入

set from=xinxiangyu_wwj@163.com smtp=smtp.163.com 
set smtp-auth-user=xinxiangyu_wwj@163.com smtp-auth-password=wwjfly520 smtp-auth=login

说明:
from:是发送的邮件地址
smtp:是发生的外部smtp服务器的地址
smtp-auth-user:是外部smtp服务器认证的用户名
smtp-auth-password:是外部smtp服务器认证的用户密码(授权码)
smtp-auth:是邮件认证的方式
提示:这部分要和邮件服务商提供的地址一样才行!

6.3.2 测试邮箱配置是否正确

[root@backup ~]# mail -s 'ceshi youxiang' xinxiangyu_wwj@163.com </backup/md5.txt

image

6.4 编写服务端定时任务脚本

[root@backup ~]# cat /server/scripts/server_backup_check.sh
#!/bin/bash  
. /etc/profile  
#check  
md5sum -c /backup/*/*.md5 >/backup/md5.txt  
#find /backup/ -type f -name '*.md5'|xargs md5sum -c >/backup/md5.txt  
#del 180 ago  
#find /backup/ -type f -name '*.tar.gz' ! -name '*-6.tar.gz' -mtime +180 |xargs rm -rf  
#send mail  
mail -s 'Rsync Backup Warn' xinxiangyu_wwj@163.com </backup/md5.txt  
[root@backup ~]#

6.5 编写服务器端定时任务

注:根据需求编写定时任务之前,先按照每分钟进行测试,检查没问题之后修改为需求中的具体执行时间

[root@ backup /server/scripts]# crontab -l
#backup meige server rsync
00 00 * * * sh /server/scripts/ server_backup_check.sh >/dev/null 2>&1
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,047评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,807评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,501评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,839评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,951评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,117评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,188评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,929评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,372评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,679评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,837评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,536评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,168评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,886评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,129评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,665评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,739评论 2 351

推荐阅读更多精彩内容