时间:2021-07-01 10:21:17 帮助过:8人阅读
[root@vm***** wewang]# ls
autobackupmysql_qas.sh qas_db_bak
打开脚本文件:
[root@vm***** wewang]# vi autobackupmysql_qas.sh
在脚本中添加内容:
#!/bin/bash backupdir=/home/**/wewang/qas_db_bak Now=$(date +"%Y-%m-%d--%H:%M:%S") /usr/bin/mysqldump -u ghs -pacxiom qas|gzip > $backupdir/qas_bak_$Now.sql.gz find $backupdir -name "qas_bak_*.sql.gz" -type f -mtime +10 -exec rm {} \; > /dev/null 2>&1 |
:wq 返回退出后,对文件进行执行权限的更改,保证脚本可以被执行:
[root@vm***** wewang]# chmod +xautobackupmysql_qas.sh
截图如下:
解析:
name:自定义备份文件前缀标识。
-type f 表示查找普通类型的文件,f表示普通文件。
-mtime +10 按照文件的更改时间来查找文件,+10表示文件更改时间距现在10天以前;如果是 -mmin +10 表示文件更改时间距现在5分钟以前。
-exec rm {} \; 表示执行一段shell命令,exec选项后面跟随着所要执行的命令或脚本,然后是一对儿{ },一个空格和一个\,最后是一个分号。
/dev/null 2>&1 把标准出错重定向到标准输出,然后扔到/DEV/NULL下面去。通俗的说,就是把所有标准输出和标准出错都扔到垃圾桶里面;其中的&表示让该命令在后台执行。
Step 2: 更改定时执行脚本,这里有两种case:
Case 1: 一般情况。打开自动执行文件 /etc/crontab,在crontab文件中加入如下内容,让其自动执行任务
[root@vm10074 wewang]# vi /etc/crontab
添加如下代码:
这里的例子是每小时26分的时候执行:
26 * * * * root /home/**/wewang/autobackupmysql_qas.sh
若是每天三点执行,则:
00 3 * * * root /home/**/wewang/autobackupmysql_qas.sh
Case 2: Redhat情况。(也就是当前用的Linux系统)将刚才编辑的脚本复制到相应的目录即可
[root@vm***** wewang]# cp autobackupmysql_qas.sh /etc/cron.daily/ |
截图如下:
解析: 这里是每天4点28分左右才执行,但是这个job执行的时间也是随机的。
Redhat的crontab采用按时间调用4个目录(
/etc/cron.hourly:每小时;
/etc/cron.daily:每天;
/etc/cron.weekly:每周;
/etc/cron.monthly:每月)中脚本出来运行的方式。
Step 3: 重启etc
[root@vm10074 wewang]# /etc/rc.d/init.d/crondrestart
Stopping crond: [ OK ]
Starting crond: [ OK ]
定时备份的效果如下:
Ps: 如果想要解压查看,则通过命令查看:gunzip -c qas-bak-2015-07-30--04:29:02.gz > 1.bak
版权声明:本文为博主原创文章,未经博主允许不得转载。
程序猿(媛)Shell脚本必备技能之一: 在Linux下如何自动备份mysql数据
标签:shell linux mysql 自动备份