shell备份脚本

  1 #!/bin/bash
  2 export PATH=$PATH:$JAVA_HOME/bin:/usr/local/lnmp/php5/bin:/usr/local/lnmp/php5/sbin
  3
  4 #start------------------------------------------------------------------------------------------------------------------------------------------------------
  5
  6 #定义0.程序rsync目录,1.程序rsync网站目录,2.备份目录,3.日志目录,4程序目录,5.数据库备份目录,6.oss名称,7.项目名称
  7 #注意1和4一定不能写反了
  8 backup_dir=(‘/backup/data/‘ ‘/backup/data/www_root/‘ ‘/backup/old/‘ ‘/backup/logs/‘ ‘/www_root/‘ ‘/backup/mysql/‘ ‘www186‘ ‘www_root‘)
  9
 10 tomcat_dir=‘/zenghui/tomcat/apache-tomcat-7.0.53/logs/‘
 11 tomcat_dir2=‘/backup/tomcat_logs/‘
 12
 13 #定义0.数据库登陆用户名,1.数据库登陆密码,2.数据库名,3.数据库ip地址
 14 mysql_message=(‘zenghui‘ ‘zenghui‘ ‘zenghui‘ ‘10.109.1.196‘)
 15
 16 #定义脚本所在目录
 17 scripts_dir=`dirname $0`
 18
 19 #定义时间
 20 month=`date +%Y%m`
 21 hours=`date +%Y-%m-%d-%H`
 22 hours2=`date -d"6 hour ago" "+%Y-%m-%d-%H"`
 23 time=`date +%Y-%m-%d`
 24 yestd=`date -d"4 day ago" "+%Y-%m-%d"`
 25 yestd2=`date -d"1 day ago" "+%Y-%m-%d"`
 26 ht=`date +%H`
 27 dy=`date +%d`
 28
 29
 30 #获取backup_dir长度
 31 len=$(( ${#backup_dir[@]}-1 ))
 32
 33 #定义oss目录
 34 month_dir=("${backup_dir[$len]}${month}" "mysql${month}" "log${month}")
 35
 36 #end------------------------------------------------------------------------------------------------------------------------------------------------------
 37
 38 #共享函数
 39 function share_comm()
 40 {
 41      eval "$1"
 42      echo $1"  ...is ok"
 43 }
 44
 45 #定义目录存不存在,不存在创建它
 46 function rsync_dir()
 47 {
 48 len2=$(( $len-1 ))
 49 for i in ${backup_dir[@]:0:${len2}}
 50 do
 51      if [ ! -d $i ];then
 52           share_comm "mkdir -p $i"
 53      fi
 54 done
 55 }
 56
 57 #定义rsync同步更新程序
 58 function rsync_upload()
 59 {
 60      rsync_file="rsync --delete -az ${backup_dir[4]} ${backup_dir[1]}"
 61      share_comm "$rsync_file"
 62
 63 }
 64
 65
 66 #对rsync同步好的文件进行打包备份
 67 function backup_targz()
 68 {
 69      file_tar="tar zcfP ${backup_dir[2]}${backup_dir[${len}]}${time}.tar.gz ${backup_dir[1]} >/dev/null"
 70      yestd_rm_file="rm -rf ${backup_dir[2]}${backup_dir[${len}]}${yestd2}.tar.gz"
 71      share_comm "$file_tar"
 72      share_comm "$yestd_rm_file"
 73 }
 74
 75
 76 #数据库操作
 77 function mysql_export()
 78 {
 79      mysql_dump="mysqldump -u${mysql_message[0]} -p${mysql_message[1]}  -h${mysql_message[3]}  ${mysql_message[2]} > ${backup_dir[5]}${mysql_message[2]}${hours}.sql"
 80      share_comm "$mysql_dump"
 81      mysql_rm
 82 }
 83 function mysql_rm()
 84 {
 85      sql_hours="rm -rf ${backup_dir[5]}${mysql_message[2]}${hours2}.sql"
 86      share_comm "$sql_hours"
 87 }
 88 function mysql_targz()
 89 {
 90      sql_tar="tar zcfP ${backup_dir[2]}mysql${time}.tar.gz ${backup_dir[5]}"
 91      sql_rm_tar="rm -rf ${backup_dir[2]}mysql${yestd}.tar.gz"
 92      sql_rm="rm -rf ${backup_dir[5]}*"
 93      share_comm "$sql_tar"
 94      share_comm "$sql_rm_tar"
 95      share_comm "$sql_rm"
 96 }
 97
 98
 99 #对日志文件进行操作
100 function log_targz()
101 {
102      log_tar="tar zcfP ${backup_dir[2]}log${time}.tar.gz ${backup_dir[3]}"
103      log_rm_tar="rm -rf ${backup_dir[2]}log${yestd}.tar.gz"
104      log_rm="rm -rf ${backup_dir[3]}*"
105      share_comm "$log_tar"
106      share_comm "$log_rm_tar"
107      share_comm "$log_rm"
108      nginx_reload
109 }
110 function nginx_reload()
111 {
112      nginx_re="`ps -ef | grep "nginx: master" | grep -v grep | awk ‘{print $NF}‘` -s reload"
113      share_comm "$nginx_re"
114 }
115
116
117 function tomcat_log()
118 {
119      if [ -d "$tomcat_dir" ] && [ -d "$tomcat_dir2"]
120      then
121           tomcat_rm="find ${tomcat_dir} -ctime +10 -type f -name ‘"*"‘ | xargs -exec rm -rf {};"
122           tomcat_rm2="find ${tomcat_dir2} -ctime +5 -type f -name ‘"*"‘ | xargs -exec rm -rf {};"
123           share_comm "$tomcat_rm"
124           share_comm "$tomcat_rm2"
125      fi
126 }
127
128
129 #定义上传
130 function file_upload()
131 {
132      #判断oss目录存不存在
133      mn_mess="`python ${scripts_dir}/oss/osscmd ls oss://wdzjoss/${backup_dir[6]}/`"
134      for i in ${month_dir[*]}
135      do
136           if ! echo "$mn_mess" | grep "$i" >/dev/null
137           then
138                py_mkdir="python ${scripts_dir}/oss/osscmd mkdir oss://wdzjoss/${backup_dir[6]}/${i} 2>/dev/null"
139                share_comm "$py_mkdir"
140           fi
141      done
142      bc_oss="python ${scripts_dir}/oss/osscmd put ${backup_dir[2]}${backup_dir[${len}]}${time}.tar.gz oss://wdzjoss/${backup_dir[6]}/${month_dir[0]}/ >/dev/null"
143      ms_oss="python ${scripts_dir}/oss/osscmd put ${backup_dir[2]}mysql${time}.tar.gz oss://wdzjoss/${backup_dir[6]}/${month_dir[1]}/ > /dev/null"
144      log_oss="python ${scripts_dir}/oss/osscmd put ${backup_dir[2]}log${time}.tar.gz oss://wdzjoss/${backup_dir[6]}/${month_dir[2]}/ > /dev/null"
145      share_comm "$bc_oss"
146      share_comm "$ms_oss"
147      share_comm "$log_oss"
148 }
149
150 echo "开始时间:"`date +%H:%M:%S`
151 echo "-------------------"
152
153 rsync_dir
154 mysql_export
155 tomcat_log
156 rsync_upload
157 #定义凌晨2点更新打包文件
158 if [ "$ht" == "02" ];then
159      backup_targz
160      mysql_targz
161      log_targz
162 fi
163
164 #定义每2天上传一次oss
165 if [ "$ht" == "04" ] && [ `echo "scale=1;${dy}%3"|bc` == "0" ]
166 then
167      file_upload
168 fi
169 echo "结束时间:"`date +%H:%M:%S`
170 echo "-------------------"
171 echo ""
时间: 2024-10-11 07:27:44

shell备份脚本的相关文章

oracle数据库shell备份脚本

1.root用户下创建备份路径: mkdir /opt/backup chown oralce:oinstall /opt/backup 2.oracle用户创建备份脚本路径: mkdir /opt/app/oracle/bin cd /opt/app/oracle/bin 3.创建备份脚本 vi backup.sh #!/bin/sh export ORACLE_BASE=/opt/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/11.2.

Linux下Shell 备份脚本集合

说到Shell大家都不陌生,Shell是Linux下批处理脚本,类似windows下的Vbs脚本等等,能协助我们完成一些自动化的任务,我们前面也介绍了一些Shell脚本协助我们完成了一些计划任务,当然说计划任务也不对,是通过计划任务来调用shell脚本来完成一些自动化任务.废话不多说了,来点实际的,今天呢,我们主要介绍的是环境还是工作中遇到的问题,通过远程来完成一些还原任务, 1.首先是,我们需要将本地备份目录下的Weaver.proternt文件定时还原覆盖到指定目录下: 将/OAFS/Bkf

非常简单的shell备份脚本

所要备份的库,以参数的形式传递进去,删除30天以前的备份文件 备份目录若不存在就创建之,/back/mysql/ #!/bin/bash DATABASE=$1 USERNAME="root" PASSWD="redhat" BACKUPDIR="/backup/mysql" CURDATE=`date +%F` lOG="/var/log/mysqlbackup.log" [ $? -eq 1 ] || { echo &qu

基于dockerMysql的shell备份脚本

#!/bin/bash#For Backup Mysql#Date:XXXDOCKERNAME="dockernames"USER="xx"PASS="xx"MYSQL_BAKDIR="/data/mysqlback/"MYSQL_DIR="/data/mysqlback/date +%Y%m%d"function CMD() {docker exec ${DOCKERNAME} mysqlshow -u$

mysql备份脚本(shell)

mysql数据库shell备份脚本 任何项目的运行都离不开数据,持久化数据对于一个企业尤为重要,任何时候都不可掉以轻心,下面是我自己写的一个shell脚本,用来备份数据,分享给大家. #!/bin/bash # 数据库连接信息 MY_user="" MY_pass="" MY_port="3306" # 环境变量 PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/

企业Shell实战-MySQL分库分表备份脚本

本文来自http://www.xuliangwei.com/xubusi/252.html 免费视频讲解见 http://edu.51cto.com/course/course_id-5064.html 企业Shell实战-MySQL分库分表备份 今天是2015年的最后一天,大家都开心的跨年,而我还在苦逼的呵呵-省略 此处内容来自老男孩教育oldboy以及老男孩26期王续精彩分享整理而来  为表示感谢,特整理此篇博文分享给大家! 项目联系笔者QQ:572891887   也可以加入架构师交流群:

(转)企业Shell实战-MySQL分库分表备份脚本

本文来自http://www.xuliangwei.com/xubusi/252.html 免费视频讲解见 http://edu.51cto.com/course/course_id-5064.html 企业Shell实战-MySQL分库分表备份 今天是2015年的最后一天,大家都开心的跨年,而我还在苦逼的呵呵-省略 此处内容来自老男孩教育oldboy以及老男孩26期王续精彩分享整理而来  为表示感谢,特整理此篇博文分享给大家! 项目联系笔者QQ:572891887   也可以加入架构师交流群:

shell判断oracle主备数据库备份脚本

1. 脚本如下 说明:按照客户要求,在主备数据库上同时部署脚本,自动判断是否是主库,如果是主库则进行备份,备库不需要备份,记录日志为备份库即可,以下脚本仅供参考,可以进一步优化. 脚本说明: 1.DATABASE_ROLE查看主备库角色变量 2.Main()函数 数据库备份脚本 3.根据主备库关键字判断是否执行main()函数 #!/bin/bash # Author:roidba # filename:/backup/backup.sh #logfile:/backup/rman_fullba

mysql自动备份脚本,MySQLdump+shell+crontab模式(附备份记录日志)

1.MySQL备份脚本 [[email protected] ~]# mkdir -p /root/data/backup #备份文件存放于此路径下 [[email protected] ~]# vim /root/mysql.back.sh #!/bin/bash backup_path="/root/data/backup" user="root" passwd="123456" dbname="test" host=&q