32-linux任务调度定时备份mysql数据库和文件夹

来源:互联网 发布:域名whois查询 编辑:程序博客网 时间:2024/05/14 12:37

定时调度备份mysql数据库中的数据实现步骤如下:


在SSH Secure中进行操作

1.在usr目录下面新建bakscript文件夹,来保存任务调度命令文件.sh

mkdir bakscript

2.在usr目录下面新建bak文件夹,用来保存sql文件和其他文件

mkdir bak

3.打开bakscript文件夹,新建文件mysqlbak.sh(备份sql文件),imagesbak.sh(备份项目下的图片文件)

      touch mysqlbak.sh

      touch imagesbak.sh

4.在脚本文件中分别写入一下内容

vi mysqlbak.sh

#DataBase NameDB_NAME="blog"#DataBase UserDB_USER="root"#DataBase PassWordDB_PASS="root"#MySQL mysqldump dirBIN_DIR="/alidata/server/mysql/bin"#backup dirBCK_DIR="/usr/bak"#current datetimeDATE=`date +%Y%m%d_%H%M%S`$BIN_DIR/mysqldump -u $DB_USER -p$DB_PASS $DB_NAME | gzip > $BCK_DIR/$DB_NAME$DATE.sql.gz#delete file before 1 minute   -mmin +1#delete fiel before 7 days     -mtime +7#out errorlog   >>$BCK_DIR/error.log 2>&1find $BCK_DIR -name "*.sql.gz" -type f -mmin +1 -exec rm -rf {} \; >  /dev/null 2>&1

:wq退出保存

imagesbak.sh

cp -r /usr/tomcat6/webapps/blog/UploadImgs /usr/bak

:wq退出保存


5.给imagesbak.sh和mysqlbak.sh添加可执行权限

chmod +x mysqlbak.sh

chmod +x imagesbak.sh

6.配置任务调度命令执行的时间

crontab -e

7.按下i,进行插入命令

0 0 * * * /usr/bakscript/mysqlbak.sh >>/tmp/error.log 2>&10 0 * * * /usr/bakscript/imagesbak.sh

8.重新启动cron

service cron restart


---------------------------------------------------------------------以上是执行过程,下面进行解释--------------------------------------------------------------------------------------------------------------

1.mkdir bakscript表示创建一个bakscript名字的文件夹

2.touch mysqlbak.sh新建一个mysqlbak.sh的文件

3.vi mysqlbak.sh使用vim编辑器进行编辑

4.

#要备份的数据库名称blogDB_NAME="blog"#数据库中的用户名DB_USER="root"#数据库中的密码DB_PASS="root"#mysql数据库中mysqldump可执行文件的位置<span style="font-family: Arial, Helvetica, sans-serif;">/alidata/server/mysql/bin/mysqldump</span>BIN_DIR="/alidata/server/mysql/bin"#备份文件夹地址BCK_DIR="/usr/bak"#当前系统的时间,为了使文件名不重复DATE=`date +%Y%m%d_%H%M%S`

$BIN_DIR/mysqldump -u $DB_USER -p$DB_PASS $DB_NAME | gzip > $BCK_DIR/$DB_NAME$DATE.sql.gz

$BIN_DIR表示对上面声明的变量进行引用

mysqldump为mysql备份数据库的命令

-u  $DB_USER  为数据库用户名

-p$DB_NAME   为数据库密码,明文密码比如你项目连接使用的是root,这里就写root

$DB_NAME要备份的数据库的名称

| 管道命令将前面

$BIN_DIR/mysqldump -u $DB_USER -p$DB_PASS $DB_NAME

执行的结果交给后面的命令进行处理

gzip > $BCK_DIR/$DB_NAME$DATE.sql.gz
gzip表示对文件进行压缩

>表示定向输出到文件,如果文件不存在,就创建文件,如果文件存在,就将其清空

find $BCK_DIR -name "*.sql.gz" -type f -mmin +1 -exec rm -rf {} \; >  /dev/null 2>&1
find为查找文件

$BCK_DIR表示要在该目录下面查找

-name表示以文件名进行查找

“*.sql.gz”表示查找通配后缀为.sql.gz的文件

-type f 表示查找普通文件类型  f表示普通文件

-mtime +7   按照文件的更改时间来查找文件,+7表示文件更改时间距现在7天以前;如果是 -mmin +7表示文件更改时间距现在7分钟以前

-exec rm -rf {} \;

表示执行一段shell命令,exec选项后面跟随着所要执行的命令或脚本,然后是一对儿{},一个空格和一个\,最后是一个分号

> /dev/null 2>&1

把标准出错重定向到标准输出,然后扔到/DEV/NULL下面去。通俗的说,就是把所有标准输出和标准出错都扔到垃圾桶里面;其中的&表示让该命令在后台执行。

5.

cp -r /usr/tomcat6/webapps/blog/UploadImgs /usr/bak
复制文件夹


6.

0 0 * * * /usr/bakscript/mysqlbak.sh >>/tmp/error.log 2>&10 0 * * * /usr/bakscript/imagesbak.sh

0 0 * * * /usr/bakscript/mysqlbak.sh
每天凌晨执行该文件,并将错误信息追加(>>)到error.log文件中




0 0