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语言,有点慌。