在爱立信实习Linux管理员也有一个月了。最近老大让我修改一个rsync自动备份的脚本。提出两个需求:第一,把不需要的文件过滤掉。第二,report的格式要好看一点。改好的脚本如下,分享一下:

#!/bin/bash
set -x#Get hostname
HOSTNAME=`hostname`#Check autofs availablity
ls /net/150.236.72.6/vol/vol_ipos_etos17
if [ $? = 0 ] ; thenecho AUTOFS GOOD on "$HOSTNAME" > /tmp/fasdkl921jkl.`date  +%Y%m%d`
elseecho AUTOFS NOT Working on "$HOSTNAME" > /tmp/fasdkl921jkl.`date  +%Y%m%d`
fi#Create log file
LOG=/net/150.236.72.6/vol/vol_ipos_etos17/scripts/LOG/"$HOSTNAME"_RSYNC`date  +%Y%m%d%H%M`.log
if [ ! -f $LOG ] ; thentouch $LOGecho $LOG
fiGENERAL_LOG=/net/150.236.72.6/vol/vol_ipos_etos17/scripts/LOG/general.log
if [ ! -f $GENERAL_LOG ] ; thentouch $GENERAL_LOGecho $GENERAL_LOG
fi#if `hostname`
DATA=`date  +%Y%m%d`
time rsync -avzpo --delete  --exclude "sjenkins" --exclude "tof-projectDir*" --exclude "ersoam-projectDir*" --exclude "build-rp-wr*" /local/workspace/* /net/150.236.72.6/vol/vol_ipos_etos17/$HOSTNAME/ >> $LOG
if [ $? = 0 ] ; thenecho Backup of "$HOSTNAME" on "$DATA" success at_`date  +%Y%m%d%H%M` start at__"$DATA" >> $GENERAL_LOGelseecho Backup of "$HOSTNAME" on "$DATA" fail at_`date  +%Y%m%d%H%M`start at__"$DATA" >> $GENERAL_LOG
fi#Mail function
COUNT_BACKUP=`more $GENERAL_LOG |grep $DATA |wc -l`
if [ $COUNT_BACKUP -eq 9 ]
then
TODAY=`date +%Y-%m-%d`
MAIL_LOG=`pwd`/$TODAY.html
MAIL_FROM=ge.jiang@ericsson.com
MAIL_TO=ge.jiang@ericsson.com
cd /net/150.236.72.6/vol/vol_ipos_etos17/
used=`df -h .|grep %|grep -v Filesystem|awk '{print $4}'`
if [ -f $MAIL_LOG ];then
rm $MAIL_LOG
touch $MAIL_LOG
fi
echo "From: ${MAIL_FROM}">>${MAIL_LOG}
echo "To: ${MAIL_TO}">>${MAIL_LOG}
echo "Content-type: text/html;charset=UTF-8 ">>${MAIL_LOG}
echo "Subject:server backup report  on ${TODAY} ">>${MAIL_LOG}
echo "">>${MAIL_LOG}
echo "<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
Backup has been finished,and $used diskspace has been used.
<br>
<br />+++++++++++++++++++++  Backup  Results on $TODAY  +++++++++++++++++++++<br />">>${MAIL_LOG}
echo "<table width=\'90%\' border=\'1\'>">>${MAIL_LOG}
declare -a s
declare -a t
declare -a f
declare -i l
l=`more $GENERAL_LOG |grep $DATA|wc -l`
s=`more $GENERAL_LOG |grep $DATA|awk '{print $3}'`
t=`more $GENERAL_LOG |grep $DATA|awk '{print $7}'|awk -F "_" '{print $2}'|cut -c 7-`
f=`more $GENERAL_LOG |grep $DATA|awk '{print $6}'`
echo " <tr  bgcolor=\'#EF9024\'><td>Server name</td>">>${MAIL_LOG}
for i in $s
do
echo "<td>$i</td>">>${MAIL_LOG}
done
echo "</tr>">>${MAIL_LOG}
echo " <tr  bgcolor=\'#EF9024\'><td>Finish time</td>">>${MAIL_LOG}
for i in $t
do
echo "<td>$i</td>">>${MAIL_LOG}
done
echo "</tr>">>${MAIL_LOG}
echo " <tr  bgcolor=\'#EF9024\'><td>Finish status</td>">>${MAIL_LOG}
for i in $f
do
echo "<td>$i</td>">>${MAIL_LOG}
done
echo "</tr>">>${MAIL_LOG}
cat ${MAIL_LOG} | sendmail -t
elseecho Backup partially finished.
fi

  第一个需求,通过修改这条语句实现:

time rsync -avzpo --delete  --exclude "sjenkins" --exclude "tof-projectDir*" --exclude "ersoam-projectDir*" --exclude "build-rp-wr*" /local/workspace/* /net/150.236.72.6/vol/vol_ipos_etos17/$HOSTNAME/ >> $LOG  

--exclude 过滤掉不需要备份的文件,这里采用的是通配符的方法。有点偷懒。如果要过滤掉的文件较多的话,可以放到一个文件中,命令改成 --exclude-from=file-dir,更加详细的参考这边文章。http://blog.csdn.net/leo_farari/article/details/7699339

第二个需求,我采用sendmail发送html邮件实现。主要是对general.log文件进行分析,把分析结果写进html,然后发送给老大。让我更加熟悉了awk和cut等的使用。

sendmail功能通过语句
cat ${MAIL_LOG} | sendmail -t   实现。但是脚本要注意添加邮件头如下:
echo "From: ${MAIL_SENDER}">>${MAIL_LOG}
echo "To: ${MAIL_TO}">>${MAIL_LOG}
echo "Content-type: text/html;charset=UTF-8 ">>${MAIL_LOG}
echo "Subject:server backup report  on ${TODAY} ">>${MAIL_LOG}

至此,脚本实现了全部需求。

转载于:https://www.cnblogs.com/ahujack/p/3286516.html

一个rsync自动备份并发信通知的shell脚本相关推荐

  1. Sql2005自动备份并邮件通知状态之二创建维护计划

    Sql2005自动备份并邮件通知状态之二创建维护计划 创建维护计划 本篇是上篇配置数据邮件的后续篇章,上篇数据库邮件已经配置成功能正常发送邮件了,这篇我们就开始创建一个新的维护计划,我们以备份数据库和 ...

  2. Linux系统防CC攻击自动拉黑IP增强版Shell脚本

    Linux系统防CC攻击自动拉黑IP增强版Shell脚本 文章目录 一.Shell代码 二.执行脚本 三.效果测试 四.附加说明 前天没事写了一个防CC攻击的Shell脚本,没想到这么快就要用上了,原 ...

  3. Linux系统防CC攻击自动拉黑IP增强版(Shell脚本)

    这篇文章主要介绍了Linux系统防CC攻击自动拉黑IP增强版(Shell脚本),需要的朋友可以参考下 前天没事写了一个防CC攻击的Shell脚本,没想到这么快就要用上了,原因是因为360网站卫士的缓存 ...

  4. Android启动过程中执行一个C语言的应用程序或者执行shell脚本

    Android启动过程中执行一个C语言的应用程序或者执行shell脚本 一.Android启动过程中去对系统做一些设置,如修改某些文件夹的属性和文件的权限,可在init.rc中增加service执行s ...

  5. Linux服务器rsync自动备份

    一.在 server 端配置 1. 编辑配置文件 #vi /etc/rsyncd.conf 添加下面的配置参数: uid = nobody # 该选项指定当该模块传输文件时守护进程应该具有的uid.默 ...

  6. mysql自动备份脚本linux_一个Mysql自动备份脚本,定时备份MYSQ脚本,linux下Mysql自动备份脚本...

    本文转自:http://hi.baidu.com/visual_art/item/6713e2091b41ea33a2332a15 #!/bin/bash #This is a ShellScript ...

  7. Windows Server下DB2自动备份、复原和前滚的脚本编程

    最近在参与负责某线上MySQL项目时,客户要求实现MySQL数据库备份.复原和前滚的全流程自动化. 在RHEL下使用Perl语言编写脚本结合CRON指令来共同实现MySQL数据库备份.复原和前滚流程的 ...

  8. 一个备份MySQL数据库的简单Shell脚本(转)

    Shell脚本是我们写不同类型命令的一种脚本,这些命令在这一个文件中就可以执行.我们也可以逐一敲入命令手动执行.如果我们要使用shell脚本就必须在一开始把这些命令写到一个文本文件中,以后就可以随意反 ...

  9. 初级SHELL脚本(如何书写一个CentOS7的更改单网卡IP的shell脚本)

    问题描述: 目前公司项目现场使用的Centos7服务器越来越多,有的时候更改ip地址很麻烦,nmcli和nmtui命令对linux的新手来说很麻烦,所以写一个简单的shell脚本,让新人可以独立的更改 ...

  10. c语言脚本的软件测试,编写自动测试c语言程序的shell脚本

    [一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高? ] 根据这样的要求我编写了一个解决这个问题的程序: #include #in ...

最新文章

  1. artTemplate的使用总结
  2. Python适合大数据处理吗?
  3. mysqlfor循环中出错继续_运维大佬教你“打僵尸”——处理Linux系统中大量的僵尸进程(2)...
  4. linux 输出数据到csv,Linux-从外壳输出CSV文件
  5. linux下查看进程与线程
  6. Android之线性布局的4个重要参数
  7. iOs LightBlue与cc2540 BLE开发板之间的通信实验 [原创, 多图]
  8. 2020区块链百强榜暨战疫优秀企业评选|链塔智库
  9. Python爬虫—爬取京东商品信息(自动登录,换关键词,换页)
  10. Spring Boot入门教程(三十八):支付宝集成-电脑网站支付和查询对账单下载地址
  11. python 排列 组合_python实现排列和组合
  12. 使用Arduino和DS12C887芯片制作电子时钟(附Arduino源代码)
  13. 解决spring JdbcTemplate更新操作成功但数据库未插入值的方案
  14. docker- health check
  15. ppt复制切片器_手把手教你使用Excel切片器,小白也能做出好看又好玩的动态图表...
  16. DFD图练习题(信用卡管理系统CCMS)
  17. LDM522-MINI射频读卡模块 迷你款 手持平板门禁首选
  18. 音乐制作软件英文精简版-Nuendo 5 v5.1.1 WiN
  19. 行业分析网站-网站分析软件-免费网站详细数据分析软件
  20. 10.数据库-Matplotlib

热门文章

  1. ubuntu安装Nvidia-docker2详细步骤
  2. LINUX下使用scp命令与其他机器远程交换文件
  3. 门描述符gate descriptors
  4. oracle 判断最后一笔_美股道琼斯日线杀跌一笔结束,向上一笔的反弹顺理成章。又到金秋弯腰拾金时...
  5. textfilestream_C#里的文件流(FileStream)
  6. sql怎么select中位数_怎么能避免写出慢SQL?
  7. python+php+变量传递,将变量从php传递给python,将python传递给php
  8. java判断语句总结,JAVA常用操作语句 项目中的总结六
  9. html输入表,HTML 表单输入
  10. java debug 宏_#ifdef _DEBUG用法小结