CSDN博客地址

Shell备份数据库

对数据库进行定时备份,保留7天内的数据。
代码如下:

#!/bin/bash
export LANG=en_US.UTF-8
BakDir=/usr/local/app/backup/db/
if [ ! -d $BakDir ];then
	mkdir -p $BakDir
else
	echo "文件夹已存在"
fi
LogFile=/usr/local/app/backup/backup.log
if [ ! -f $LogFile ];then
	LogPath=/usr/local/app/backup
	cd $LogPath
	touch backup.log
else
	echo "日志文件已存在"
fi
Begin=`date +"%Y年%m月%d日 %H:%M:%S"`
cd $BakDir
GZDumpFile=senseface_dump_$(date +\%Y\%m\%d).tgz
read -p "输入要备份的数据库:" database
read -p "输入数据库ip:" host
read -p "输入数据库port:" port
read -p "输入数据库密码:" password
read -p "输入要备份的表,格式如:a(表名1),b(表名2):" tables
OLD_IFS="$IFS" #保存旧的分隔符
IFS=","
array=($tables)
IFS="$OLD_IFS" # 将IFS恢复成原来的 
for db in ${database[@]};do
	for i in "${!array[@]}"; do
		/usr/bin/mysqldump -h $host -P $port -uroot -p$password $db ${array[i]} > $BakDir/"${array[i]}"_dump_$(date +\%Y\%m\%d).sql
		done
	done
if [ -e $GZDumpFile ];then
	rm -f $GZDumpFile
	tar -czvf $GZDumpFile *.sql
else
	rm -f $GZDumpFile
	tar -czvf $GZDumpFile *.sql
fi
rm *.sql

#只保留过去7天的数据库内容
find $BakDir -name "*.tgz" -mtime +7 | xargs rm -f

Last=`date +"%Y年%m月%d日 %H:%M:%S"`
echo 开始:$Begin 结束:$Last $GZDumpFile succ >> $LogFile


第一次尝试写Shell语言,有点慌。

posted @ 2020-07-08 10:16  Yi_warmth  阅读(144)  评论(0编辑  收藏  举报
CSDN博客地址