[三星]写一个备份MySQL数据库到邮件的脚本

除了美化之外,还可以来尝试挑战一下任务
回复
头像
oneleaf
论坛管理员
帖子: 10231
注册时间: 2005-03-27 0:06
系统: Ubuntu 12.04
送出感谢: 7 次
接收感谢: 103 次

[三星]写一个备份MySQL数据库到邮件的脚本

#1

帖子 oneleaf » 2011-02-18 16:46

1 任务内容: 写一个支持拆分的备份MYSQL数据库到邮件的脚本。

2 任务的难度: 三星

3 任务的目的: 学习 Linux 下脚本以及邮件

4 任务所涉及的软件: mutt

5 任务将大致消耗的时间: 1天
头像
oneleaf
论坛管理员
帖子: 10231
注册时间: 2005-03-27 0:06
系统: Ubuntu 12.04
送出感谢: 7 次
接收感谢: 103 次

Re: [三星]写一个备份MySQL数据库到邮件的脚本

#2

帖子 oneleaf » 2011-02-18 16:49

代码: 全选

#!/bin/bash
#Write by oneleaf@gmail.com

#数据库服务器地址
DBHOST=localhost
#数据库登录名
USERNAME=root
#数据库密码
PASSWORD=
#需要备份的数据库 或 输入类似 db1 db2 的列表清单
DBNAMES="all"
#备份MYSQL时生成CREATE数据库语句
CREATE_DATABASE="yes"
#备份的目录
BACKUPDIR="/tmp/mysqlbackup"
#发生到邮件的地址
MAILADDR="test@example.com"
#邮件最大附件尺寸2M
MAILMAXATTSIZE="2000000"

#当前备份日期和时间
DATE=`date +%Y-%m-%d_%H_%M`
OPT="--quote-names --opt"

#检查备份路径是否存在,不存在则建立
if [ ! -e "${BACKUPDIR}" ]; then
   mkdir -p "${BACKUPDIR}"
fi

#删除备份路径下的所有文件
rm -fv ${BACKUPDIR}/*

#检查是否需要生成CREATE数据库语句
if [ "${CREATE_DATABASE}" = "yes" ]; then
   OPT="${OPT} --databases"
else
   OPT="${OPT} --no-create-db"
fi

#检查是否是备份所有数据库
if [ "${DBNAMES}" = "all" ]; then
   DBNAMES="--all-databases"
fi

BACKUPFILE=${DATE}.sql.gz

cd ${BACKUPDIR}

#备份数据库
`which mysqldump` --user=${USERNAME} --password=${PASSWORD} --host=${DBHOST} ${OPT} ${DBNAMES} |gzip > "${BACKUPFILE}"

#获取备份文件的尺寸
BACKFILESIZE=`du -b ${BACKUPFILE}|sed -e "s/\t.*$//"`
#检查是否需要分割
if [ ${BACKFILESIZE} -ge ${MAILMAXATTSIZE} ]; then
#分割数据库,合并使用 cat ${BACKUPFILE}.* > ${BACKUPFILE}
   `which split` -b ${MAILMAXATTSIZE} ${BACKUPFILE} ${BACKUPFILE}.
   for BFILE in ${BACKUPFILE}.*
   do
       echo "Backup Databases: ${DBNAMES}; Use cat ${BACKUPFILE}.* > ${BACKUPFILE}" | mutt ${MAILADDR} -s "MySQL Backup SQL Files for ${HOST} - ${DATE}" -a "${BFILE}"
   done
else
   echo "Backup Databases: ${DBNAMES}" | mutt ${MAILADDR} -s "MySQL Backup SQL Files for ${HOST} - ${DATE}" -a "${BACKUPFILE}" 
fi

头像
leeaman
帖子: 30702
注册时间: 2007-02-02 18:14
系统: debian sid
送出感谢: 1 次
接收感谢: 23 次

Re: [三星]写一个备份MySQL数据库到邮件的脚本

#3

帖子 leeaman » 2011-02-18 16:58

一叶自己出题自己做,悲剧 :em06
醉了星星,醉月亮●●●●●The Long Way To Go(*^_^*)
头像
oneleaf
论坛管理员
帖子: 10231
注册时间: 2005-03-27 0:06
系统: Ubuntu 12.04
送出感谢: 7 次
接收感谢: 103 次

Re: [三星]写一个备份MySQL数据库到邮件的脚本

#4

帖子 oneleaf » 2011-02-18 17:06

:em01 刚好写了一个,于是贴出来,供参考, 呵呵
头像
枫叶饭团
论坛版主
帖子: 14685
注册时间: 2010-06-16 1:05
系统: Mac OS X
来自: Tencent
送出感谢: 1 次
接收感谢: 132 次
联系:

Re: [三星]写一个备份MySQL数据库到邮件的脚本

#5

帖子 枫叶饭团 » 2011-02-18 17:15

好东西mark。 :em11 :em11
头像
月下叹逍遥
论坛版主
帖子: 33999
注册时间: 2010-10-07 14:23
系统: Archdows10
来自: 某系某星某洲某国某省某市
送出感谢: 8 次
接收感谢: 63 次
联系:

Re: [三星]写一个备份MySQL数据库到邮件的脚本

#6

帖子 月下叹逍遥 » 2011-03-10 21:02

:em11
心似浮云常自在,意如流水任东西。
此事背后一定有个天大的咪咪
广告:
1、走过路过,不要错过,dropbox网盘2.25G大放送
py大法好,退C保平安
java多妖孽,VB本异端
日诵一千遍,快活似神仙
头像
pocoyo
论坛版主
帖子: 25878
注册时间: 2008-03-25 15:49
来自: 谁知道?
送出感谢: 5 次
接收感谢: 9 次
联系:

Re: [三星]写一个备份MySQL数据库到邮件的脚本

#7

帖子 pocoyo » 2011-03-10 21:42

依旧看不懂。
头像
wean
帖子: 686
注册时间: 2007-04-23 14:47
系统: Gentoo
来自: 常熟
送出感谢: 1 次
接收感谢: 1 次
联系:

Re: [三星]写一个备份MySQL数据库到邮件的脚本

#8

帖子 wean » 2011-03-10 22:09

用mail发邮件的算不算- -!
头像
yjcong
帖子: 2470
注册时间: 2006-02-28 3:11
送出感谢: 0
接收感谢: 0

Re: [三星]写一个备份MySQL数据库到邮件的脚本

#9

帖子 yjcong » 2011-05-12 23:33

是啊, 为什么不用mail命令加"-a file"的参数呢?
一梦三年,
松风依旧,
萝月何曾老.


灵幽听微, 谁观玉颜?
灼灼春华, 绿叶含丹.
oh!yes
帖子: 1
注册时间: 2011-07-29 12:14
送出感谢: 0
接收感谢: 0

Re: [三星]写一个备份MySQL数据库到邮件的脚本

#10

帖子 oh!yes » 2011-07-29 12:16

:em20 看的头晕眼花
头像
shinelynn
帖子: 78
注册时间: 2010-09-26 22:54
来自: 安徽合肥
送出感谢: 0
接收感谢: 0
联系:

Re: [三星]写一个备份MySQL数据库到邮件的脚本

#11

帖子 shinelynn » 2011-08-18 13:24

:em06 辛苦啦
林叶星空——重要的东西
http://www.linyea.net
315xiaoyao
帖子: 3
注册时间: 2011-11-11 15:59
送出感谢: 0
接收感谢: 0

Re: [三星]写一个备份MySQL数据库到邮件的脚本

#12

帖子 315xiaoyao » 2011-12-07 23:51

写的太好了,但是我现在只要一个可以自动备份数据库并自动上传到FTP服务器上面就可以。可以,帮写一个不,谢谢!jiangqh@pkusz.edu.cn

心桥文章网。www.kanmw.com
头像
mswwjick
帖子: 642
注册时间: 2009-01-28 21:42
送出感谢: 0
接收感谢: 1 次

Re: [三星]写一个备份MySQL数据库到邮件的脚本

#13

帖子 mswwjick » 2011-12-08 9:22

pocoyo 写了:依旧看不懂。
头像
liu滔
帖子: 7211
注册时间: 2010-10-09 23:01
送出感谢: 5 次
接收感谢: 14 次

Re: [三星]写一个备份MySQL数据库到邮件的脚本

#14

帖子 liu滔 » 2011-12-08 12:24

我表示没看懂这个题目 :em06
回复

回到 “非常任务”