以下是经过处理的文本:
backup_website.sh
backup_mysql.sh
这里还有一篇文章是用PHP备份的,zen-cart利用CRON自动备份mysql数据库。
可以选择使用。
注意目录的权限问题,我是设置成777才执行成功的,其他的权限等级没有试过。如果想要更安全一些,可以设置为其他的权限。
貌似标题比较长,我来分段说明下我们要做的事情:
- 定时备份MySQL数据库(每天、每周或者每几个小时)。
- 不使用WordPress插件,而是使用主机自带的cronjob(也叫定时任务、crontab、计划任务等)。
- 每次备份完成后,将备份的文件发送到你指定的邮箱。
WordPress的话能少用一个插件就少用一个插件吧,另外大多数主机虽然不提供SSH,但是cronjob功能还是开放的,我们充分利用一下,顺便当作学习的机会,一起来用cronjob备份数据库吧。
(关于什么是cronjob,请参考这里)
下面我们开始(下文中的目录结构以DA面板为例,cPanel的话需要作相应更改):
- 首先我们创建一个用于存放备份文件的文件夹,我放在了
/home/neo/backups
。 - 用你喜欢的文本编辑器创建一个名为
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
- 保存
backup.sh
并上传到/backups
文件夹下,将权限设置为755。 - 进入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/(用户名)”目录)。
设置定时任务
- 登录到你的主机控制面板(如cPanel)。
- 寻找”Cron Jobs”或类似的选项。
- 在”Cron Jobs”页面中,选择创建一个新的Cron任务。
- 在命令或脚本字段中输入以下内容,以每天凌晨3点执行备份任务为例:
bash /home/(用户名)/backup_website.sh
请将”(用户名)”替换为你的用户名。
5. 点击”Add New Cron Job”(添加新的Cron作业)或类似按钮以保存设置。
现在,你已经成功设置了定时任务,系统将会每天凌晨3点自动执行备份操作,并将备份文件发送到你指定的邮箱地址。
注意:使用该脚本进行备份时,请确保文件和目录的权限设置正确,以允许脚本访问并压缩这些文件和目录。此外,你还可以根据自己的需求进行脚本的定制和修改。
欢迎指出任何有错误或不够清晰的表达,可以在下面评论区评论。