项目场景:
通过定时任务进行数据库备份,并删除30天以前的备份文件。保证数据丢失或服务器异常时刻可找回数据进行恢复,保证数据的安全。
定时任务shell:
#!/bin/bash
DATE=`date +%Y%m%d_%H%M%S`
BACKPATH=/www/backup/database
mysqldump -uroot -proot 2021table table1 table2>${BACKPATH}/2021table_db_${DATE}.sql
完整版[保留30天内的数据备份及日志]:
-
shell文件
#!/bin/bash
DATE=`date +%Y%m%d_%H%M%S`
BACKPATH=/www/backup/database
mysqldump -uroot -p数据库密码 2021table table1 table2>${BACKPATH}/2021table_db_${DATE}.sql
find /www/backup/database -name "*.sql" -ctime +30 -exec rm -rf {} \;
echo "----------------------------------------------------------------------------"
endDate=`date +"%Y-%m-%d %H:%M:%S"`
echo "★[$endDate] Delete files from 30 day ago"
echo "★[$endDate] Successful"
echo "----------------------------------------------------------------------------"
-
定时任务命令
0 0 * * * /www/server/cron/back_table.sh >> /www/server/cron/back_table.log 2>&1
操作日志:
# 备份命令
mysqldump -uroot -proot 2021table table1 table2 > back.sql
# 生成压缩备份文件
mysqldump -uroot -proot 2021table table1 table2 | gzip>${BACKPATH}/2021solive_db_${DATE}.tar.gz
# 导入命令[进入mysql命令行,指定数据库进行操作]
source back.sql
#查看编辑定时任务
crontab -e
#通过定时任务执行的shell文件需具备权限 751
#rwx 421
chmod 751 back_table.sh
# 定时任务记录日志及错误信息
0 0 * * * /www/server/cron/back_table.sh >> /www/server/cron/back_table.log 2>&1
>>追加 > 覆盖
2>&1含义
&---文件描述符
1---标准输出
2---标准错误
2>&1 即将错误标准输出,且错误会重定向到前边的标准输出文件中。
example:
echo "111" >> 1.log 2>&1
假如发生错误,111和错误信息会全部输入到1.log文件中。
#删除30天之前的.sql文件
find /www/backup/database -name "*.sql" -ctime +30 -exec rm -f {} \;
参数说明:
-ctime +30 [创建时间在30天以前]
-name "*.sql" [.sql结尾的文件]
-exec rm -f [对匹配的文件执行shell命令]
错误提示
Using a password on the command line interface can be insecure.
分析:提示shell命令中直接使用了密码不安全,可通过配置直接使用变量加载密码
You have new mail in /var/spool/mail/root
分析:Linux运行的服务状态记录,可通过命令查看 You have new mail in /var/spool/mail/root文件
#查看命令
cat /var/spool/mail/root
vi /var/spool/mail/root