shell实现自动备份mysql、整站数据的两个脚本分享

 更新时间:2014年06月03日 09:11:01   作者:  
这篇文章主要介绍了shell实现自动备份mysql、整站数据的两个脚本分享,使用了cron实现实现定时备份,并会自动删除N天前的备份,以及自动FTP上传到别的服务器,需要的朋友可以参考下

案例一:shell+cron实现MySQL自动备份且自动删除N天前备份

复制代码 代码如下:

#!/bin/sh
DUMP=/usr/local/mysql/bin/mysqldump
OUT_DIR=/home/ldl/xxx/backup/
LINUX_USER=ldl

DB_NAME=ldl
DB_USER=ldl
DB_PASS=xxx
#How much days backup most
DAYS=1

#Core of script
cd $OUT_DIR
DATE=`date +%Y_%m_%d`
OUT_SQL="$DATE.sql"
TAR_SQL="mysql_$DATE.tar.gz"
$DUMP --default-character-set=utf8 --opt -u$DB_USER -p$DB_PASS $DB_NAME > $OUT_SQL
tar -czf $TAR_SQL ./$OUT_SQL
rm $OUT_SQL
chown $DB_NAME:nobody ./$TAR_SQL
find ./ -name "mysql*" -type f -mtime +$DAYS -exec rm {} \;


+++++++++++++++++++++++++++++++++++++++++++++++++++++
mysqldump不用解释了吧,注意-uuser -ppass这样才可以,不能有空格。

复制代码 代码如下:
find ./ -name “mysql*” -type f -mtime +$DAYS -exec rm {} \;

这一句主要是在-mtime上-mtime +5表示5天前的文件,统一删除

我的操作系统是CentOS 5.4,只要把脚本拷贝到/etc/cron.daily,并设置为相同的权限就可以执行了,不用再添加crontab。

案例二:CentOS下自动备份网站和数据库的脚本并上传至FTP

假定这台服务器的网站目录为:/home/www,数据库程序路径为:/usr/local/mysql/bin,数据库名为:levil,ftp服务器为:ftphost,下面先来看完整的自动备份脚本(自动备份脚本保存位置为:/home/backup.sh):

复制代码 代码如下:

#!/bin/bash
cd /home
WebBakName=web_$(date +%y%m%d).tar.gz
tar zcvf $WebBakName www
SqlBakName=sql_$(date +%y%m%d).tar.gz
/usr/local/mysql/bin/mysqldump -uusername -ppassword levil>backup.sql
tar zcvf $SqlBakName backup.sql
ftp -nv ftphost << EOF
user ftpname ftppass
put $WebBakName
put $SqlBakName
quit
EOF
rm -f backup.sql $WebBakName $SqlBakName

下面来给大家一一讲解:首先进入/home目录,定义WebBakName变量为网站备份的文件名,文件名格式为web日期.tar.gz,定义SqlBakName变量为数据库备份的文件名,文件名格式为sql日期.tar.gz,把整个网站目录www打包到WebBakName文件名中,使用mysqldump导出指定数据库内容到backup.sql,然后把数据库备份打包到SqlBakName文件中,本机备份工作至此结束,如果你没有足够大的远程ftp空间的话,可以直接把备份文件下载到本机,但我还是建议直接备份到另外一个服务器上的ftp空间中,做到完全自动化备份,这时你需要把脚本中的ftphost、ftpname和ftppass分别替换成你的ftp信息,整个备份过程就完成了。

接着输入chmod +x backup.sh给脚本添加执行权限,再输入:crontab -e编辑任务自动开始时间,比如我输入:

00 05 1 /home/backup.sh 就代表每周1的上午5点整执行该自动备份操作。

在这一切完成之后,你可以先把自动任务时间改为当前的接近时间,看自动备份脚本是否工作正常,测试OK的话以后就不用担心这台服务器出现任何问题导致数据丢失了,当然如果你的数据更新比较频繁的话,建议把自动备份时间调整为每日

相关文章

  • Shell脚本实现复制文件到多台服务器的代码分享

    Shell脚本实现复制文件到多台服务器的代码分享

    这篇文章主要介绍了Shell脚本实现复制文件到多台服务器的代码分享,用在多机集群环境中非常方便,需要的朋友可以参考下
    2014-09-09
  • shell实现俄罗斯方块脚本

    shell实现俄罗斯方块脚本

    这篇文章主要为大家详细介绍了shell实现俄罗斯方块的脚本,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-06-06
  • Linux下的tar压缩解压缩命令详解(小结)

    Linux下的tar压缩解压缩命令详解(小结)

    这篇文章给大家分享了linux下的tar 压缩解压缩命令,非常不错,具有参考借鉴价值,需要的朋友参考下
    2017-03-03
  • Shell中特殊字符的用法总结大全

    Shell中特殊字符的用法总结大全

    这篇文章主要给大家总结了关于Shell中特殊字符的相关资料,文中包括分好、&、#、!、$、大于号、单双引号等等一系列特殊字符的用法,通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-08-08
  • Shell调用curl实现IP归属地查询的脚本

    Shell调用curl实现IP归属地查询的脚本

    这篇文章主要介绍了Shell调用curl实现IP归属地查询,文中给大家提到了查询IP归属地的shell脚本,在批量查找数据的时候经常会遇到,今天给大家分享出来,需要的朋友可以参考下
    2021-07-07
  • linux几个没用但是有趣的命令(收藏)

    linux几个没用但是有趣的命令(收藏)

    今天给大家分享一些linux几个没用但是有趣的命令,非常不错,喜欢的朋友快快收藏吧
    2021-11-11
  • Linux目录与文件的权限意义详解

    Linux目录与文件的权限意义详解

    ls -l和ls -al的区别:第一个不会显示隐藏文件,第二个会显示隐藏文件(以点(.)开头的文件)。下面通过本文给大家分享Linux目录与文件的权限意义,需要的朋友参考下吧
    2018-03-03
  • shell中case的用法学习笔记

    shell中case的用法学习笔记

    这篇文章主要为大家介绍shell中的case语句:可以把变量的内容与多个模板进行匹配,再根据成功匹配的模板去决定应该执行哪部分代码
    2013-11-11
  • Shell脚本实现温和方式重启Centos系统

    Shell脚本实现温和方式重启Centos系统

    这篇文章主要介绍了Shell脚本实现温和方式重启Centos系统,本文脚本主要目的是用于重启后台比较重要的进程,需要的朋友可以参考下
    2014-12-12
  • shell递归输出文件名和目录名的方法

    shell递归输出文件名和目录名的方法

    今天小编就为大家分享一篇shell递归输出文件名和目录名的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06

最新评论