对于一个项目维护者来说,数据库维护至关重要,数据丢失绝对是致命的,所以今天抽空加了下在ubuntu通过用户调度任务crontab定时备份数据库的功能,记录下~
crontab命令常用语unix和类unix的操作系统中,用于设置周期性的被执行的指令。通常,crontab存储的指令被守护进程激活,crond常常在后台运行,每一分钟检查是否有预定的作业需要执行。这类作业一般称为cron jobs。
Linux下的任务调度分为两类,系统任务调度和用户任务调度。
系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。在/etc目录下的crontab文件中。
用户任务调度:用户定期要执行的工作,比如数据备份等,用户可以根据crontab工具来定制自己的计划任务,在/var/spool/cron/目录下。
1)、命令格式:crontab [-u user][-e|-l|-r]
其中:-u user:用来设定某个用户的crontab服务,此参数一般由root用户来运行。如果不指定用户则表示当前登录用户的crontab文件
file:file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。如果在命令行中没有指定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将它们载入crontab。
-e:编辑某个用户的crontab文件内容
-l:显示某个用户的crontab文件内容
-r:删除某个用户的crontab文件
-i:在删除用户的crontab文件时给确定提示
2)、编辑crontab文件的格式
minute hour day month week command
一共包含6个字段,其中:
minute:表示分钟,范围0到59的任意整数
hour:表示小时,范围0-23的任意整数
day:表示日期,范围1-31的任意整数
month:表示月份,范围1-12的任意整数
week:表示星期,范围0-7的任意整数,其中0和7表示星期日
commang:要执行的命令,可以是系统命令,也可以是自己编辑的脚本文件。
以上非命令字段中还可以使用以下特殊字符:
星号(*):代表所有可能的值
逗号(,):可以用逗号隔开的值指定一个列表范围,例如:“1,2,3”
中杠(-):表示一个整数范围,例如:"2-5"表示“2,3,4,5”
正斜杠(/):表示指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次;*/10:在minute字段中表示每10分钟执行一次。
1)、通过vim创建一个需要定期执行保存数据库备份的sheel脚本并进行保存
#!bin/bash
cd ~/backup/sqlbackup/
Now=$(date '+%Y%m%d%H%M%S')
File=wechat_$Now.sql
sudo musqldump -h host -u root -p'密码' datebaseName > 目录
注意:-p与密码之间
不能有空格,不然执行时会提示输入密码
2)、添加sheel脚本可执行权限
$ sudo chmod +x XXX.sh:+x有固定含义,表示文件可执行,而后面的XXX表示文件名
3)、通过crontab -e添加任务
第一次进入会提示选择编辑器
Select an editor. To change later, run 'select-editor'
选择你偏爱的一个即可,这里我选择的是vim base然后进行添加你的定时任务:如 0 0 */1 * * sudo sh XXX.sh :每一天执行一次XXX.sh脚本进行数据库备份(注意如果0 0是* *的话,则是每天的每小时的每分钟)。
4)、将新增的定时任务加到cron服务中
$ sudo service cron restart
添加定时任务见上,此处只说明如何编写删除7天前的命令,将其加到指定的sheel脚本中即可:
sudo find /home/ubuntu/backup/sqlbackup/ -mtime +7 -name "*.sql" -exec rm -rf {} \;
其中:find后紧跟想要清除的文件的目录
-mtime +7:表示7天前的时间
“*.sql”:以.sql结尾的文件
-exec rm -rf {} \;:执行文件清除(反斜杠\是分号;的转移符号)