内容纲要

mysql 数据库定时备份

首先创建一个文件夹存放备份文件

mkdir /bak
cd /bak

创建并编写 shell 脚本

vim mysql_bak.sh

#!/bin/bash

bakdir=/bak

today=$(date +%Y%m%d-%H%M%S)

host=localhost

username=root

password=******
#选择数据库,可以多个
databases=(blog)

#daysago=$(date -d "2 minutes ago" +%Y%m%d-%H%M%S)

for database in ${databases[@]}
do
echo "开始备份"$database
mysqldump -h$host -u$username -p$password $database | gzip > $bakdir/$database-$today.sql.gz
echo "成功备份"$databse"到"$bakdir/$database-$today.sql.gz
#if [! -f "$bakdir/$database-$daysago.sql.gz"]; then
#echo "没有要删除的备份文件"
#else
#rm -rf $bakdir/$database-$daysago.sql.gz
find $bakdir -name "*.sql.gz" -type f -mtime +7 -exec rm -f {} \; > /dev/null 2>&1
echo "删除7天前的备份文件"$bakdir/$database-$daysago.sql.gz
#fi
done

使用 crontab 对该脚本创建计划任务

执行crontab -e添加(每天00分备份一次)
 0 0 */1 * * /bak/mysql_bak.sh >> /bak/cron_mysql.txt

nginx 访问日志切割

nginx 所有的日志都会输出到一个文件中,随着时间的过去,那个文件变得越来越大,对我们分析日志非常不方便,所有这里我们用脚本来 定时分割日志

创建并编写 shell 脚本

mkdir /etc/nginx/logs cd /etc/nginx/logs vim nginx_log.sh

#!/bin/bash
#日志路径
LOGS_PATH=/etc/nginx/logs

YESTERDAY=$(date -d "yesterday" +%Y-%m-%d)

mv ${LOGS_PATH}/access.log ${LOGS_PATH}/access_${YESTERDAY}.log

## 向 Nginx 主进程发送 USR1 信号。USR1 信号是重新打开日志文件  
kill -USR1 $(cat /run/nginx.pid)
echo "备份access_"${YESTERDAY}".log成功"
find $LOGS_PATH -name "*.log" -type f -mtime +7 -exec rm -f {} \; > /dev/null 2>&1
echo "成功删除7天前的备份文件"$LOGS_PATH/access_${YESTERDAY}.log

使用 crontab 对该脚本创建计划任务

执行crontab -e添加
0 0 * * * bash /etc/nginx/logs/nginx_log.sh >> /bak/cron_nginx.txt

发表评论

电子邮件地址不会被公开。 必填项已用*标注