曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 3280|回复: 0
打印 上一主题 下一主题

定时备份数据库并发送往邮箱

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34395
跳转到指定楼层
楼主
发表于 2011-10-30 16:41:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在一次惨痛的 VPS 故障中,我丢失了一个 2 年的博客,数据全毁(正好恰逢自己的 PC 机在更换硬盘之际),原因正是没有及时将数据库及时备份到一个安全的地方。

下面这个简单的脚本和 crontab 配合便可实现简单的自动备份数据库并发往指定的邮箱中,这个邮箱最好是可以接收大附件的,否则你还需要将大文件分割为多个小文件再添加到附件中,分割文件使用 split 命令,组成多个分割文件可使用 cat 命令。

脚本如下:
[Bash shell] 纯文本查看 复制代码

#!/bin/sh
time=`date +%m%d`      #此处为了标识备份文件的时间,这里每天备份一次


mysqldump -uroot -p123456 pw87 > ~/pw87$time.sql      #比如这里备份 Mysql 里一个名为 pw87 的数据库


#可以进一步将生成的 SQL 文件打包压缩,如 tar 包,gzip 压缩的 gz 包:tar -czvp -f yourname.tar.gz pw87$time.sql 
#选项 z 的意思是用 gzip 来压缩,选项 p 是保持文件的原先属性


echo "backup time is $time" > pw$time.txt     #邮件的内容,随便写点


mutt -s "pw87$time" [email]l4nneret@163.com[/email] < pw$time.txt -a /root/pw87$time.sql      # mutt 是一个好用的命令行邮件客户端

脚本可以放在任意一个地方。接着用 crontab -e 命令设置一下定时执行脚本的时间,比如:
30 3 * * * (/var/www/html/pw87/backsql.sh)
上面命令的意思是在每天的凌晨 3 点 30 分时执行上面的那个备份脚本。

如果要备份整个数据库的话可以使用命令:mysqldump -u root -p123456 --all-databases > backup.sql

如果哪天需要还原数据库了可以使用命令:mysql -u root -p123456 pw87 < backup.sql

如果什么时候不想要这个计划任务了,就执行 crontab -r 来将其清除,如果有多个计划任务可执行 crontab -l 命令来查看。

mutt 命令可参考:http://www.groad.net/bbs/read.php?tid-5114.html

split命令可参考:http://www.groad.net/bbs/read.php?tid-2682.html
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-5-4 04:39 , Processed in 0.079793 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表