需求: 每天晚上凌晨2点30分开始对数据库进行数据备份到/backup/目录下,并且只保留30天的备份数据
1.备份数据库命令
//备份 账号 密码 数据库 / 路径/备份名
mysqldump -uroot -padmin wms>/dbback/wmsbf
2.日期date命令
后面可跟格式化表达式
date +%Y%m%d%H%M%S
注意:跟格式化表达式的时候,date与后面的 '+'一定要有空格, '+'与后面的一定不能有空格
//时间基本命令
[root@lab01 userdb]# echo $(date +%Y%m%d:%H%M%S)
20180125:131410
//备份带有时间的数据库
mysqldump -uroot -padmin wms>/backup/wms$(date +%Y%m%d).sql
3.find命令查找符合条件的文件
-mtime +30 30天之前的文件
-mmin +1 1分钟前的文件
-name xxx 指定文件名 可以用*通配符
/*
find:查询
/userdb/:要查询的目录
-mmin:查询多久之前的,这里指分钟
+1:1分钟以前,大小根据前面的值确定(如果是mtime则是一天以前),不写 '+'正好就是1分钟
-name "*.sql":匹配条件
*/
[root@lab01 userdb]# find /userdb/ -mmin +1 -name "*.sql"
/userdb/wms.sql
/userdb/wms2018-01-2513:07:45.sql
删除查找出来的结果
在后面添加-exec rm -fr '{}' \;
{}占位符表示把查找到的结果放到此处来
可以通过man手册来看说明
find /userdb/ -mmin +1 -name "*.sql" -exec rm -fr '{}' \;
4.编写wmsbackup.sh脚本文件
#!/bin/bash
find /backup/ -mtime +1 -name '*.sql' -exec rm -fr '{}' \;
DATE=$(date +%Y%m%d-%H:%M)
mysqldump -uroot -padmin wms>/backup/wms$DATE.sql
5.添加定时任务-crontab
- 如果没有安装则先安装
//1.测试有没有安装定时软件crontab,没有安装则提示下面的细信息
[root@lab01 userdb]# crontab -l
-bash: crontab: command not found
//2.查找contab的安装软件
[root@lab01 userdb]# yum list |grep crontab
crontabs.noarch 1.10-33.el6 base
//3.开始进行crontabs的安装
[root@lab01 userdb]# yum install -y crontabs.noarch
注意:该软件要重启才有效 init 6
- 安装完成或者已经安装直接启动crontab服务
//编辑定时任务
crontab -e
//表示每天凌晨2:30执行
30 2 * * * /userdb/backup.sh
//保存之后启动crontab
/sbin/service crond start //启动服务
操作相关
1.检查是否安装crontab
yum list installed |grep crontab
2.查看yum仓库是否有该安装包
yum list |grep crontab
3.安装crontab
yum -y install crontabs.noarch
4.编辑定时任务
crontab -e
*/1 * * * * /home/dbbackup/db1backup.sh
5.查看定时任务
crontab -l
- 重启linux或者处理服务
服务操作说明:
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置
- 查看crontab服务状态:
service crond status
注意sh脚本要有x执行的权限
chmod +x filename
- crontab功能是在一定的时间间隔调度一些命令的执行。
minute - 从0到59的整数
hour - 从0到23的整数
day - 从1到31的整数 (必须是指定月份的有效日期)
month - 从1到12的整数 (或如Jan或Feb简写的月份)
dayofweek - 从0到7的整数,0或7用来描述周日 (或用Sun或Mon简写来表示)
command - 需要执行的命令
0 3 * * * /home/dbbackup/db1backup.sh
*/5 * * * * /home/dbbackup/db2backup.sh
其他例子:
* * * * * 每分钟执行
*/1 * * * * 每分钟执行
0 5 * * * 每天五点执行
0-59/2 * * * * 每隔两分钟执行,且是偶数分钟执行,比如2,4,6
1-58/2 * * * * 每隔两分钟执行,且是奇数分钟执行,比如3,5,7
0 0 1,5,10 * * 每个月1号,5号,10号执行
0 0 1-5 * * 每个月 1到5号执行