day33课堂笔记

Rsync 功能追加介绍


--exclude 排除参数

--exclude-from 从文件排除

--delete  删除参数(让两台服务器目录保持一致)

实践删除:

rsync作为镜像,相当于raid1,让两台服务器目录保持一致。

--delete 让两台服务器目录保持一致

推送:

rsync -avz --delete /data/  [email protected]::backup

本地目录有啥,远端就有啥。

注意:远端目录是不是东西更多,多了东西会被删除。提前备份backup对应的目录。

rsync -avz --delete [email protected]::backup /data/

远端有啥。本地目录就有啥,注意本地/data目录。把/data改成根。提前注意备份本地/data


--partial 支持大文件断点续传

--bwlimit=KBPS 限速


1、内部人员产生的数据(定时备份足矣

程序员开发代码(他电脑上)==>代码服务上(git/svn代码版本管理)==>测试环境测试===>正式环境

原则上程序代码可以不备份。

运维人员,写个定时任务,写个备份脚本,更改或增加服务配置rsyncd.conf,需要备份

运维人员修改配置(测试服务器)==>代码服务器上(git/svn代码版本管理)==>测试环境测试===>正式环境

原则上运维人员的变更可以不备份。


2、用户产生的数据(必须实时备份)

图片、视频等文件是放在存储服务器上的,任意时刻都可能传上来,必须实时备份。

文本(博客文章),放在数据库里,,任意时刻都可能发布,必须实时备份。


rsync企业项目练习

某公司里有一台 web 服务器,里面的数据很重要,但是如果硬盘坏了,数据 就会丢失,现在领导要求把数据做备份,这样 web 服务器数据丢失可以进行恢复, 要求如下:

每天晚上 00 点整在 web 服务器 A 上打包备份系统配置文件、网站程序目录 及访问日志并通过 rsync 命令推送到服务器 B 上备份保留(备份思路可以是先在 本地按日期打包,然后再推到备份服务器 B 上) 

已知 3 台服务器主机名分别为 web01、backup 、nfs01,主机信息见下表:

服务器说明外网IP(NAT)SSH 用内网IP(NAT)交换数据用主机名称

nginx web 服务器10.0.0.7/24          172.16.1.7/16      web01

NFS存储服务器10.0.0.31/24            172.16.1.31/16   nfs01

rsync备份服务器10.0.0.41/24           172.16.1.41/16   backup

备份要求

每天晚上 00 点整在 Web 服务器上打包备份系统配置文件、网站程序目录及 访问日志并通过 rsync 命令推送备份服务器 backup 上备份保留

备份思路

可以是先在本地按日期打包,然后再推到备份服务器 backup 上

NFS 存储服务器同 Web 服务器实际工作中就是运维主要管理的全部服务器

具体备份需求

所有服务器的备份目录必须都为/backup

要备份的系统配置文件包括但不限于:

a) 定时任务服务的配置文(/var/spool/cron/root) (适合 web 和 nfs 服 务器) 

b) 开机自启动的配置文件 (/etc/rc.local) (适合web 和 nfs 服务器)

c) 日常脚本的目录 (/server/scripts)。

Web 服务器站点目录假定为/var/html/www,如果没有可以先模拟创建

Web 服务器访问日志路径假定为/app/logs,如果没有可以先模拟创建

Web 服务器本地保留打包后的 7 天备份数据即可(本地留存不能多于 7 天, 因为太多硬盘会满)

备份服务器 backup 上,保留最近 7 天的备份数据,同时保留 6 个月内每周一 的所有数据副本

备份服务器上,要按照备份数据服务器的内网 IP 为目录保存备份,备份的文 件按照时间名字保存

需要确保备份的数据尽量完整正确,在 备份服务器上对备份的数据是否完整 进行检查

每天早晨 8:00 把备份成功或失败结果信息发给系统管理员邮箱中

解答:   

 41搭建好rsync服务,并在31  、7 上测试成功

创建备份目录

/backup 备份目录

/var/spool/cron/root /etc/rc.local /server/scripts /var/html/www /app/logs

编写脚本打包


模拟创建:

[root@nfs01 ~]# mkdir -p /server/scripts

[root@web01 ~]# mkdir -p /server/scripts /var/html/www /app/logs

全部创建  mkdir -p /backup


web01服务器

测试打包

[root@web01 /]# cd /

[root@web01 /]# tar zcvhf /backup/bak_$(date +%F_%w).tar.gz /var/spool/cron/root /etc/rc.local /server/scripts /var/html/www /app/logs 

[root@web01 /]# ls /backup/

bak_2019-04-16_2.tar.gz


编写脚本:

[root@web01 /backup]# vim /server/scripts/bak.sh

#!/bin/sh

exportPATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"

exportRSYNC_PASSWORD=oldboy

IP=$(hostname -i)

mkdir -p /backup/$IP

#1.打包

tar zchf /backup/$IP/bak_${IP}_$(date +%F_%w).tar.gz /var/spool/cron/root /etc/rc.local /server/scripts /var/html/www /app/logs&>/dev/null &&\

touch /backup/$IP/bak_${IP}_$(date +%F_%w).flag &&\ 

#2.采集指纹

find /backup/ -type f -name "*.tar.gz"|xargs md5sum >/backup/$IP/bak_${IP}_$(date +%F_%w).flag &&\

#3.删除

find /backup/ -type f -name"*.tar.gz"-mtime +7|xargs rm -f &&\

#4.推送

rsync -az /backup/ [email protected]::backup&>/dev/null

find /backup/ -type f -name"*.flag"|xargs rm -f  &>/dev/null



创建定时任务

[root@web01 /backup]# crontab -e

[root@web01 /server/scripts]# crontab -l|tail -2

######backupweb_site

00 00* * * /bin/sh /server/scripts/bak.sh  &>/dev/null


nfs01服务器

编写脚本

[root@nfs01 /backup]# vim /server/scripts/bak.sh

#!/bin/sh

exportPATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"

exportRSYNC_PASSWORD=oldboy

IP=$(hostname -i)

mkdir -p /backup/$IP

#1.打包

tar zchf /backup/$IP/bak_${IP}_$(date +%F_%w).tar.gz /var/spool/cron/root /etc/rc.local /server/scripts &>/dev/null &&\

touch /backup/$IP/bak_${IP}_$(date +%F_%w).flag &&\

#2.采集指纹

find /backup/ -type f -name"*.tar.gz"|xargs md5sum >/backup/$IP/bak_${IP}_$(date +%F_%w).flag &&\

#3.删除

find /backup/ -type f -name"*.tar.gz"-mtime +7|xargs rm -f &&\

#4.推送

rsync -az /backup/ [email protected]::backup&>/dev/null

find /backup/ -type f -name"*.flag"|xargs rm -f  &>/dev/null


创建定时任务

[root@web01 /backup]# crontab -e

[root@web01 /server/scripts]# crontab -l|tail -2

######backupweb_site

00 00* * * /bin/sh /server/scripts/bak.sh  &>/dev/null


rsync(backup)服务器

编写脚本

[root@backup /backup]# vim /server/scripts/bak.sh

#!/bin/bash

exportPATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"

#指纹

find /backup  -type f -name"*$(date +%F_%w).flag"|xargs md5sum -c >/tmp/fail.log

##删除

find /backup/ -type f -name"*.tar.gz"-mtime +180 -mtime +7 |xargs rm -f &&\

find /backup/ -type f ! -name"*_1.tar.gz"-mtime +7|xargs rm -f &&\

find /backup/ -type f  -name"*.flag"-mtime +7|xargs rm -f

##发送邮件

mail -s "oldboy" [email protected] 


配置邮件,在etc/mail.rc 最后加入

jya 2019/4/18 星期四 14:52:15

set bsdcompat

set [email protected]

set smtp=smtp.qq.com

set [email protected]

set smtp-auth-password=***************

set smtp-auth=login


重启邮件服务

systemctl restart postfix


执行

sh /server/scripts/bak.sh

你可能感兴趣的:(day33课堂笔记)