全网备份案例
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了全网备份案例相关的知识,希望对你有一定的参考价值。
50台集群全网数据备份项目方案1、需要备份的文件或目录(原则上,只要是运维人员写入或更改的数据,都需要备份):
/var/spool/cron/root、/etc/rc.local、/etc/sysconfig/iptables、/var/www/html、/app/logs
2、为了规范化,每台web服务器进行本地备份时都备份到/backup目录下
3、每台web服务器进行本地备份时,都备到/backup下以本机ip地址命名的目录中
4、打的tarball文件名中需要包含执行当天的日期
5、统一存储备份数据的服务器通过rsync daemon方式提供存储备份数据的目录/backup
6、由于web服务器本地的存储空间有限,需要将超过7天的备份数据删除
7、为了方便的知道每次备份是否成功,我们需要做如下操作:
在每台web服务器上检查备份是否成功
在存储备份数据的服务器上检查备份是否推送成功,并发送邮件至管理员邮箱
8、由于备份服务器空间有限,需要删除超过180天的备份数据,但每周六的备份数据需要永久保留
实施步骤
1、在rsync备份服务器上,配置rsync服务,客户端实现推送(backup服务器)
2、在客户端nfs服务器上,实现打包、推送、删除、定时任务推送(前端业务服务器,例如:web服务器)
打包
在客户端上打包以下目录到backup目录下面:
#要打包链接文件必须加上h,才能将链接的源文件打包
cd /
tar zcvfh /backup/backup_$(date +%F).tar/gz var/spool/cron/root etc/rc.local etc/sysconfig/iptables var/www/html app/logs
推送
rsync -avz /backup/ [email protected]::backup --password-file=/etc/rsync.password
删除
find /backup/ -type f -name "*.tar.gz" -mtime+7 #先查找,条件指定越多,越不容易删错
find /backup/ -type f -name "*.tar.gz" -mtime+7|xargs rm -f
编写脚本
在命令测试成功后,写入服务器上统一存放脚本的目录下
mkdir -p /server/scripts
cd /server/scripts/
vim bak.sh 填写如下内容:
#每条命令后面跟 &&\表示前面的命令执行成功,再执行下一条,因为要做定时任务,所以把v参数去掉
#因为要推送的客服端有多台,为了要分清哪些文件是属于哪台机的,所以要获得本机的IP地址来命名文件。
IP=$(ifconfig eth1|awk -F "[ :]+" 'NR==2 {print $4}')
Path=/backup
#这一个判断将要保留的周六的文件特殊命名,以便在备份服务器上永久保留
if [ $(date +%w) -eq 0 ];then
#每天00点备份,实际上文件内容是备份的前一天的。
Time="week_$(date +%F_%w -d "-1day")"
else
#实际工作当中没有这么严格,都是以日期命名,在每天晚上的23点多一些就开始备份
Time=$($(date +%F -d "-1day") #或者做完某个操作后备份。
fi
#这样不是很好,每次运行该脚本会创建这样的目录?以后自己写脚本
mkdir $Path/$IP/ -p
cd / &&\
#该例核心是打包完成后,给打包的文件创建md5sum指纹写入到标记文件当中,推送的时候,一起推送过去。在服务器上/backup目录,每台机IP命名的目录,存放每台机的备份
tar zcfh $Path/$IP/backup_$Time.tar.gz var/spool/cron/root etc/rc.local etc/sysconfig/iptables var/www/html app/logs &&\
#touch /backup/flag_$(date +%F).log &&\
#打完包后,在本地的目录里面创建一个flag标志,将来在备份服务器上,看是否有这个标志,来判断是否备份成功
#光打标记还不够,还需要为该标志文件做一个指纹,使用md5sum命令来完成。
#md5sum 可以为所有的文件做指纹标识,包括二进制文件,每一个文件的md5sum标记是不一样的。
#所以下面直接使用md5sum为打包的文件做指纹,并记录在标记文件中,将来在备份的服务器上,再使用md5sum为该文件做标记,与标记文件中的内容一样
#就说明在该文件在传输过程当中没有被篡改。
md5sum $Path/$IP/backup_$Time.tar.gz >/backup/flag_$(date +%F).log &&\
rsync -avz /backup/ [email protected]::backup --password-file=/etc/rsync.password &&\
find /backup/ -type f -mtime +7 \(-name "*.log" -o -name "*.tar.gz" \)|xargs rm -f
#find命令默认多条件是and,所以这里使用 -o 或者
保存退出,测试脚本,测试OK后,可以创建定时任务用于每天都执行。
创建定时任务
crontab -e
00 00 * * * /bin/sh /server/scripts/bak.sh >/dev/null 2>&1
crontab -l #查看
在rsync备份服务器上,做检查,发邮件给管理员
1、保留每周6的文件,可以在客户端的脚本当中,将每周6的文件特殊命名。
2、删除的时候文件名里有-6这个数字,就保留。
在备份服务器上创建脚本文件,所以服务器脚本存放的路径都要统一
mkdir -p /server/script
cd /server/script
vim del_date.sh #写入以下内容
find /backup/ -type f -mtime +180 ! -name "*week*_6*"|xargs rm -f
保存退出,删除就解决了
检查数据完整
#比较标志文件里的md5值,一样,就会输出ok字样:
md5sum -c /backup/172.16.4.31/flag_week_2016-04-30.log
通过查找文件来比对,错误和成功的信息都写入结果文件里面:
find /backup/ -type f -name "$(date +%F -d "+1day" )*.log" | xargs md5sum -c >>$(date +%F)_result.log 2>&1
将保存的结果发邮件:
mail -s "标题" 发给谁 <内容来源于哪
mail -s "$(date +%F) bak result" [email protected]<$Path/$(date +%F)_result.log
这样的结果比较粗焅,可以将成功的记录底纹变成绿的,不成功的文字底纹变成红的,再发送出去。
输出颜色文字
==================================
使用echo 显示输出文字的颜色
-e 启用转义符
ctrl 用\033来表示
前景色用数字3来引导:编号31-37
背景色用数字4来引导:编号41-47
字体格式,使用一位数字来表示
echo -e "\033[ 字体;前景色;背景色m要修饰的内容\033[0m"
echo -e "\033[31m显示的内容\033[0m"
后面的\033[0m表示颜色标记结束
==================================
然后将命令整理,放在脚本里,再创建计划任务,每天都检查备份是否成功
发送邮件
linux发邮件2种常见客户端命令:
1、mail命令语法(推荐)
mail -s "标题" 邮件地址 <文件
mail -s "oldboy" [email protected]< /etc/hosts
2、echo "正文" | mail -s "标题" [email protected]
mailq #查看邮件发送队列
邮件服务发送的端口: smtp 25 接收:pop3 110
在linux没有配置邮件服务器与DNS解析之前,通过命令发的邮件,会被当做垃圾邮件给屏蔽了,所以只有在正式的邮件服务器才这样发邮件
解决办法:
配置mail使用外部SMTP发邮件
通过修改配置文件可以使用外部SMTP服务器,可以达到不使用sendmail/postfix等内部邮件服务;
而用外部的smtp服务器送邮件到目的地,使用外部邮箱的时候,邮箱要将 smtp授权开启,使用第三方客户端发邮件smtp授权后,可以看到邮件下面的smtp地址
修改/etc/mail.rc文件,在最后一行加入
set [email protected] smtp=smtp.qq.com smtp-auth-user=308944299 smtp-auth-password=邮箱第三方授权密码 smtp-auth=login
说明:
from是发送的邮件地址
smtp是发送的外部smtp服务器地址
smtp-auth-user是外部smtp服务器认证的用户名
smtp-auth-password是外部smtp服务器认证的用户密码
awk '{print ["这里输入什么打印的就是什么"] $1}'
以上是关于全网备份案例的主要内容,如果未能解决你的问题,请参考以下文章