- 0
- 0
- 约2.68千字
- 约 3页
- 2021-10-17 发布于江苏
- 举报
对任何一个已经上线的网站站点来说,数据备份都是必须的。无论版本更新还是服务器迁移,
备份数据的重要性不言而喻。人工备份数据的方式不单耗费大量时间和精力,还灰常不专业
的说。于是,有了下面这段脚本的出现。参考了网上的很多教程,外加自己的测试,以下脚
本经测试可用。
#!/bin/bash
#Shell Command For Backup MySQL Database Everyday Automatically By Crontab
#Author : Carlos Wong
#Date : 2010-08-24
#配置参数
USER=root #数据库用户名
PASSWORD=××××× #数据库用户密码
DATABASE=TIENIUZAI #数据库名称
WEBMASTER=tieniuzai@ #管理员邮箱地址,用以发送备份失败消息提醒
BACKUP_DIR=/var/www/Data_Backup/topons/ #备份文件存储路径
LOGFILE=/var/www/Data_Backup/topons/data_backup.log # 日记文件路径
DATE=`date ‘+%Y%m%d-%H%M’` #日期格式(作为文件名)
DUMPFILE=$DATE.sql #备份文件名
ARCHIVE=$DATE.sql.tgz #压缩文件名
OPTIONS=”-u$USER -p$PASSWORD –opt –extended-insert=false –triggers=false -R
–hex-blob –flush-logs –delete-master-logs -B $DATABASE” #mysqldump 参数 详情
见帮助 mysqldump -help
#判断备份文件存储目录是否存在,否则创建该目录
if [ ! -d $BACKUP_DIR ] ;
then
mkdir -p “$BACKUP_DIR”
fi
#开始备份之前,将备份信息头写入日记文件
echo ” ” $LOGFILE
echo ” ” $LOGFILE
echo “———————————————–” $LOGFILE
echo “BACKUP DATE:” $(date +”%y-%m-%d %H:%M:%S”) $LOGFILE
echo “———————————————– ” $LOGFILE
#切换至备份目录
cd $BACKUP_DIR
#使用 mysqldump 命令备份制定数据库,并以格式化的时间戳命名备份文件
mysqldump $OPTIONS $DUMPFILE
#判断数据库备份是否成功
if [[ $? == 0 ]]; then
#创建备份文件的压缩包
tar czvf $ARCHIVE $DUMPFILE $LOGFILE 21
#输入备份成功的消息到日记文件
echo “[$ARCHIVE] Backup Successful!” $LOGFILE
#删除原始备份文件,只需保 留数据库备份文件的压缩包即可
rm -f $DUMPFILE
else
echo “Database Backup Fail!” $LOGFILE
#备份失败后向网站管理者发送邮件提醒,需要 mailutils 或者类似终端下发送邮件工具的
支持
#mail -s “Database:$DATABASE Daily Backup Fail” $WEBMASTER
fi
#输出备份过程结束的提醒消息
echo “Backup Process Done”
使用:
1. 将以上代码保存到: /usr/sbin/DataBackup (文件名随意,只要不跟系统原有的命
令同名即可;代码可以放到任何地方,放在 sbin 目录下只是为了方便执行,sbin
目录下的文件/ 目录可在终端直接调用,类似于windows 下 PATH 变量指定的目录)
2. 为脚本添加可执行权限: sudo chmod +x /usr/sbin/DataBackup
3. 执行脚本: sudo DataBackup
4. 如果需要定时执行备份命令的,只需将下面这段代码放到 crontab 文件(sudo vim
/etc/crontab)中去就可以了:
01 3 * * * root /usr/sbin/DataBackup #它代表着将于每天 3 点执行 DataBackup 脚本
注意:
1. linux 下的 shell 脚本定义变量的格式为:
原创力文档

文档评论(0)