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

  1. backup_website.sh
  2. backup_mysql.sh

以下是经过处理的文本:

backup_website.sh

backup_website.sh

backup_mysql.sh

backup_mysql.sh

这里还有一篇文章是用PHP备份的,zen-cart利用CRON自动备份mysql数据库。

可以选择使用。

注意目录的权限问题,我是设置成777才执行成功的,其他的权限等级没有试过。如果想要更安全一些,可以设置为其他的权限。

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

  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/*

rm -r mysql/

mutt [email protected] -a /home/neolee/backups/archives/backup1.$suffix.tar.gz -s "Database Backup"
#把[email protected]改为你的邮箱, "Database Backup"指的是邮件主题

rm -r archives
  1. 保存backup.sh并上传到/backups文件夹下,将权限设置为755。
  2. 进入DA后台的”计划任务”一项,新增一个cron任务来定时执行这个.sh文件。我们预定每晚12:00备份一次数据库:
    • 命令填写:/home/neolee/backups/backup.sh(记得改用户名)

好了,这样就完成了,准备每晚收邮件吧。

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

用Cronjob定时将站点备份发送到邮箱2

前几天,Leeiio筒子说他在BlueHost上的数据全部丢失,再加上我另一个博客的账户在没有任何通知的情况下被暂停使用,于是开始考虑如何定时地自动备份站点。原本上周末就打算研究一下,但是工作一直很忙,所以一直拖着。

闲暇的时候逛到老N的博客,看到了一篇关于如何使用Cronjob定时备份数据库的文章,顿时眼前一亮,这不就是现成的方案吗?今天终于有点空闲时间了,于是开始着手工作!

基本思想很简单,利用Cronjob定时执行一个脚本,脚本中依次执行压缩指定文件、将压缩文件发送到邮箱以及删除压缩文件的操作。非常简单,对吧?另外,考虑到文件的大小和重要性,本方案将WordPress自带的文件排除在外,当然,如果你自己修改了部分代码,也可以将修改后的文件一起备份。

以下操作是基于cPanel完成的,其他面板请参考相应的文档。

创建备份工作目录

为了方便操作和管理,在用户主目录下创建一个名为”Backup”的文件夹(即”/home/(用户名)”目录)。

创建文件列表

使用你喜欢的编辑器创建一个文本文件,随意命名,建议以”.lst”结尾,比如我的是”BackupFiles.lst”。在文件中输入要备份的文件和目录,每行一条记录。路径以”public_html”开头,便于后续操作。

注意:文件夹路径的末尾不要加上”/“,不要包含除路径和文件名之外的其他内容,比如注释。

例如我的列表:

public_html/index.php
public_html/robots.txt
public_html/cgi-bin
public_html/wp-content

创建脚本

再创建一个文本文件,同样随意命名,建议以”.sh”结尾,比如下所示是文本的后续部分:

如我的脚本名为”backup_website.sh”。在该文件中输入以下内容:

#!/bin/bash

# 设置备份文件的名称和位置
BACKUP_DIR="/home/(用户名)/Backup"
FILE_LIST="/home/(用户名)/BackupFiles.lst"
BACKUP_FILE="website_backup_$(date +'%Y%m%d_%H%M%S').tar.gz"

# 创建备份文件夹
mkdir -p $BACKUP_DIR

# 压缩指定文件和目录
tar -czvf $BACKUP_DIR/$BACKUP_FILE -T $FILE_LIST

# 发送备份文件到指定邮箱
mutt -s "Website Backup" -a $BACKUP_DIR/$BACKUP_FILE -- (你的邮箱地址) < /dev/null

# 删除备份文件
rm $BACKUP_DIR/$BACKUP_FILE

请将上述代码中的”(用户名)”替换为你的用户名,”(你的邮箱地址)”替换为你的邮箱地址。

保存脚本文件,并将其上传至服务器的适当位置(比如”/home/(用户名)”目录)。

设置定时任务

  1. 登录到你的主机控制面板(如cPanel)。
  2. 寻找”Cron Jobs”或类似的选项。
  3. 在”Cron Jobs”页面中,选择创建一个新的Cron任务。
  4. 在命令或脚本字段中输入以下内容,以每天凌晨3点执行备份任务为例:
bash /home/(用户名)/backup_website.sh

请将”(用户名)”替换为你的用户名。
5. 点击”Add New Cron Job”(添加新的Cron作业)或类似按钮以保存设置。

现在,你已经成功设置了定时任务,系统将会每天凌晨3点自动执行备份操作,并将备份文件发送到你指定的邮箱地址。

注意:使用该脚本进行备份时,请确保文件和目录的权限设置正确,以允许脚本访问并压缩这些文件和目录。此外,你还可以根据自己的需求进行脚本的定制和修改。


欢迎指出任何有错误或不够清晰的表达,可以在下面评论区评论。

×

喜欢就点赞,疼爱就打赏

//