前言
为了对web网站进行定时的备份数据,需要进行定时脚本任务的编写,采用shell脚本方式,亦可使用python脚本去完成
shell备份脚本
mkdir -p /data/backup
cat > /data/backup/backup_data.sh <<-EOF
#!/usr/bin/env bash
# 备份网站数据库函数
function backupWebMysql() {
backupFilename=(backup-database_name-$(date "+%Y%m%d").sql) # database_name为备份的数据库名
backupMainDir=/opt/backup_data/mysql
mkdir -p ${backupMainDir} &> /dev/null
cd ${backupMainDir}
docker exec mysql mysqldump -udatabase_user -p'xxx' database_name > $backupFilename # 本案例使用的是docker部署mysql,database_user为数据库用户,一般不为root,创建mysql用户并授权访问database_name的权限
}
# 备份网站根目录数据函数
function backupWebData() {
for backup in "$@"
do
backupMainDir=/opt/backup_data/$backup
mkdir -p ${backupMainDir} &> /dev/null
cd ${backupMainDir}
currentDate=$(date +%Y%m%d)
backupFileName="backup-${backup}-${currentDate}.tar"
backupFileDir="${backupMainDir}/${backupFileName}"
tar -zcvf ${backupFileDir} /var/www/html &> /dev/null
done
}
# 保留两份最近数据函数
function retainTwoData() {
cd /opt/backup_data/$1
ls -t | awk 'NR>2{print "rm -rf " $0}' | xargs rm -rf &> /dev/null
}
# 备份mysql数据
backupWebMysql
# 保留最近两次的mysql备份数据
retainTwoData mysql
# 备份web网站数据
backupService=(web)
backupWebData ${backupService[*]}
# 保留最近两次的web备份数据
retainTwoData web
EOF
chmod 777 /data/backup/backup_data.sh
每周六凌晨两点执行备份任务
cat >> /etc/crontab <<-EOF
30 2 * * 6 root /usr/bin/bash /data/backup/backup_data.sh &> /dev/null
EOF
systemctl restart crond
结语
… …