通过Crontab定时备份

目地

通过Linux下的定时任务Crontab来定期的执行脚本,备份服务器中的MySQL数据。

Shell脚本解释

#!/bin/sh
t=$(date +%Y%m%d%H%M%S);
cd /backup/mysql
mysqldump -uroot -pyourpassword yourdatabase > yourdatabase.sql
tar -czf yourdatabase.${t}.tar.gz yourdatabase.sql
rm -r yourdatabase.sql
  • 按照项目使用的db来备份
  • 默认备份在/backup/xxx项目/mysql
  • 默认的文件格式为xxx项目+14位时间戳(例如:20190709131051)
  • 需要删除mysqldump导出的sql文件

Crontab使用方法

Crontab是Linux内置的一个定时命令,可以帮助我们定期执行一些工作。

语法为

crontab   [-e   [UserName]|-l   [UserName]|-r   [UserName]|File ]

  • -e 编辑当前的定时任务表
  • -l 列出目前的定时任务
  • -r 删除目前的定时任务

Crontab的执行参数

minute hour day month week command

  • minute(分钟)取值范围0~59
  • hour(小时)取值范围0~23
  • day(天)取值范围1~31「注意这里是1」
  • month(月)取值范围1~12「注意这里是1」
  • week(星期)取值范围0~6
  • command为需要执行的命令

Crontab中常用的特殊符号

  • * 表示任何时间
  • , 表示分割
  • - 表示时间区段,例如1-5,就为1到5
  • /n 表示每n个单位执行一次,*/1,就表示每个1个单位执行一次命令

示例

  • 0 0 */1 * * ls : 每天执行一次ls
  • */10 * * * * ls : 每十分钟执行一次ls
  • 更多示例可以参考这里

实现

  • 将上面的bash保存为backup.sh
  • chmod +x backup.sh修改为可执行的权限
  • 执行 crontab -e​将任务添加到定时任务表中
  • service cron restart #重启cron

REF:

  1. [crontab 定时任务](https://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/crontab.html)
  2. [Ubuntu中使用crontab添加定时任务](https://blog.csdn.net/tianyafeng123xin/article/details/70195843)