准备shell脚本

在/root/bin/目录下,创建backup.sh文件

#!/bin/bash

# 设置备份目录和MySQL登录信息

tstart=` date "+%Y/%m/%d %H:%M:%S" `
backup_dir="/data/backup"
mysql_user="root"
mysql_password="1qaz!QAZ"
mysql_database="mydb"


# 创建备份目录
mkdir -p $backup_dir

# 获取当前日期
current_date=$(date +%Y%m%d)

#获取当前机器的第一个IP地址
ip=`ip a  |grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}'  |tail -n +2 |head -1`

# 生成文件名称
filename="backup_"$ip"_"$current_date".dmp"

# 备份数据库
mysqldump -u $mysql_user -p$mysql_password $mysql_database > $backup_dir/$filename.sql

# 删除7天之前的备份文件
find $backup_dir -name "*.sql" -type f -mtime +43 -exec rm {} \;

tend=` date "+%Y/%m/%d %H:%M:%S" `

tee body <<EOF
经理你好,
今天从$tstart开始备份,到$tend秒结束,
文件名称为 $filename.sql,文件大小为 `stat -c %s $backup_dir/$filename.sql ` .
                           运维团队
`date`
EOF

mail -s '备份通知' rudolfyan@qq.com <body

将上述脚本保存为一个文件(例如backup.sh),然后使用crontab命令将其添加到定时任务中,以在每周日3点执行备份操作。

准备crontab任务

crontab -e

在打开的文件中添加以下行:

0 3 * * 0 /bin/bash /root/bin/backup.sh >backup.sh.log 2>&1

保存并关闭文件。现在,每周日3点,脚本将自动执行备份操作,并删除7天之前的备份文件。备份文件将以年月日的格式命名,并保存在指定的备份目录中。

验证


作者:严锋  创建时间:2023-09-20 15:27
最后编辑:严锋  更新时间:2025-05-09 15:48