用Cronjob定时备份数据库并发送至邮箱

2009年6月1日08:45:39 技术分享 8 8,088

貌似标题比较长么,分段说明下我们要做的:

1. 定时备份mysql数据库(每天、每周或者每几个小时)。

2.不用WordPress插件,用一般主机都自带的cronjob (或者叫定时任务、crontab、计划任务之类的)。

3.每次备份完都把备份的文件发送到你制定的邮箱。

WordPress的话能少个插件就少个插件吧,另外大多数主机虽然不提供ssh,但是cronjob功能还是开放的,我们充分利用下,顺便当作学习~~一起来用cronjob备份数据库吧。

(关于什么是cronjob,请参看这里

下面开始(下文中的目录结构我以DA面板为例,cpanel的作相应更改)

1. 首先我们创建一个用于存放备份文件的文件节,我就放在了 /home/neo/backups 了

2.用你喜欢的文本编辑器创建一个“backup.sh”文件,并输入如下代码:
cd /home/neolee/backups/ #把neolee该为你的用户名,下面那个也是
mkdir archives
mkdir mysql #创建了两个零时的文件夹
suffix=$(date +%y%m%d)
mysqldump --opt -uusername -ppassword databasename > mysql/backup1.$suffix.sql #-u后紧跟数据库用户名 -p后紧跟数据库密码 无需空格 databasename改为你需要备份的数据库名
tar zcf archives/backup1.$suffix.tar.gz mysql/* #将sql压缩一下
rm -r mysql/ #删除了零时文件夹mysql
mutt mail@email.com -a /home/neolee/backups/archives/backup1.$suffix.tar.gz -s "Database Backup" #把mail@email.com改为你的邮箱, "Database Backup"指的是邮件主题
rm -r archives #删除了零时文件夹archives

3.保存backup.sh 并上传到/backups 文件夹下,权限设为755。

4.进入DA后台的”计划任务“一项,新增一个cron任务来定时执行这个.sh。我们预定每晚12:00备份一次数据库:
用Cronjob定时备份数据库并发送至邮箱

5.命令填写:

/home/neolee/backups/backup.sh

(记得改用户名)
好了,这样就ok了,准备每晚收邮件吧。

最后,做一下说明 sh文件里我删除了archives文件夹,那么里面的备份文件也就没有了,这是为了不让备份文件把主机空间撑满。如果你需要把备份文件保存在空间中,可以删除rm -r archives这段。

评论已关闭!

目前评论:8   其中:访客  8   博主  0

    • cr cr 3

      这篇作者又是黑酋~ 不简单!+不是人!

      • cuiqingyao cuiqingyao 5

        老大,你好,能不能写一个CPA面板的,教程。谢了,

        我在CPA面板中没有找到任务选项,

          • 酋 长 酋 长 9

            @cuiqingyao CPA的在论坛有的,在IDC板块,你可以找找。

          • Centeur Centeur 2

            一般的主机怎么会有 mutt 这类工具呢?用 sendmail 代替更具普适性。

              • Cat. Cat. 1

                @Centeur sendmail 写来看看

              • cuiqingyao cuiqingyao 5

                感谢老大。

                • yeevan yeevan 0

                  怎样备份多个数据库呢?用这个方法

                  • maxling maxling 0

                    我的弄了3个钟头都没成功!就指点