安装需要用到的依赖库
yum -y install sendmail
yum -y install mailx
yum -y install sshpass
yum install -y openssh-clients
shell代码
#!/bin/sh
#
# yum -y install sendmail
# yum -y install mailx
# yum -y install sshpass
# yum install -y openssh-clients
# systemctl start sendmail #启动sendmail
#
##检查是否是root
if [ $(id -u) != "0" ];then
echo "Error:请使用root用户进行操作"
exit 1
fi
day=$(date "+%Y%m%d") #年月日
time=`date +%s` #时间戳
databse="test"
backup_path="/root/mysql/data/"
upload="root@192.168.233.137:/root/mysql/upload"
passwd="123456"
filename=$day"_test.sql"
mailaddress="xxx@163.com"
if [ ! -d $backup_path ];then
mkdir -p $backup_path
if [ "$?" != "0" ];then
echo "cannot mkdir ..."
exit 1
fi
fi
/Data/apps/mysql/bin/mysqldump -uroot -proot --default-character-set=utf8 $databse > $backup_path$filename
if [ "$?" != "0" ];then
echo "cannot back up mysql data "
echo "cannot back up mysql data"|mail -s "send by shell" $mailaddress
exit 1
fi
#把备份的sql文件备份到远程服务器
sshpass -p $passwd scp $backup_path$filename $upload
if [ "$?" != "0" ];then
echo "cannot upload mysql data"
echo "cannot upload mysql data"|mail -s "send by shell" $mailaddress
exit 1
fi
#删除30天以前的备份
filelist=`ls $backup_path`
deltime=`expr $time - 30 \* 86400 ` #获取30天前的时间戳
#delday=`date -r $deltime "+%Y%m%d"` #获取30天前的日期mac os
#delday=`date -d @$deltime "+%Y%m%d"` #获取30天前的日期 linux
for file in $filelist
do
#获取备份文件的创建时间
file_time=`stat -c %Y $backup_path$file`
if [ "$file_time" -lt "$deltime" ];then
rm -rf $backup_path$file
fi
done
echo "${day} - 数据库备份成功"|mail -s "${filename} - 数据库备份成功" $mailaddress
网友评论