WordPress备份: 整站备份+MySQL导出+还原/恢复+FTP迁移【自动脚本】

WordPress备份/还原

对于博主而言,除了研究原创文章和拓展流量之外,最重要的就是WordPress备份了。

回想起很久很久以前,在使用虚拟主机建站时,博主根本就没做过备份。

原因主要有两点:

一是因为当时用WordPress建站只是一种简单的爱好,对博客的重要性认识不足;二是知识欠缺,脑子里压根就没有备份这根弦。

直到有一天,悲剧来了。。

不知道此刻正在看文章的你是否也和博主一样,忍受不了管理后台的WordPress更新提示。每次看到有更新的插件,总忍不住去升级。

一般来说,为了系统安全,插件和主题升级到最新版本是推荐的,有时候也是必需的。

但这往往会忽略一个重要问题,就是兼容性。

这包括两个方面:插件和主机系统的兼容性,以及插件和插件之间的兼容性。

比如,某个插件旧的版本是用PHP5.X写的,新版本则是用PHP7.X写的,而你的主机系统使用的是PHP5.X,升级后则可能就会出现不兼容。

或者,一个插件升级后和另一个或几个插件运行时有冲突,同样会导致不兼容。

不兼容的后果就是:网站打不开!500 Internal Server Error

WordPress 500 Internal Server Error / 500错误

是不是有点眼熟?

于是,那天我登入WordPress后台,在升级了几个插件之后,网站突然就显示500错误了。

当时博主的建站知识非常有限,只能去找虚拟主机商家解决。

一封接着一封的工单,耗费了差不多一整天的时间,最后主机商答应可以限时下载他们自己备份的网站数据。

但是,这个数据是十几天前的。因为他们只提供每半月一次的WordPress整站备份。

好在博客更新并不频繁,而且后续网站恢复也很顺利,所以丢失的数据并不算多。但是,这仍然让博主感觉非常不愉快,并且直到现在,想起来多少还有些后怕。

(现在看来,其实当时并不需要那么麻烦,只要把插件目录一个一个的改名再启用,然后找出异常插件并将其停用就可以了。)

从这件事上,博主学到了两点教训:

①WordPress整站数据一定要经常备份

②插件一定不要着急升级,最好等一段时间(比如半个月)后再升级,并且升级前做好整站备份和SnapShot快照备份(如果你的VPS支持的话)

所以,自那之后,博主所有的网站都会每周备份至少两次。

起初是通过手动备份,压缩整站数据并导出数据库,保存在服务器上,同时下载到电脑里。

后来,随着博主对Linux命令的日益熟练,发现在WordPress备份过程中,很多手动操作完全可以通过简单的编程来实现全程自动化,从而极大提高备份效率。

博主目前使用WordPress备份脚本(详见下文),每天定时自动备份一次,并上传到远程 VPS/FTP 空间。同时,本机VPS和远程VPS均保留最近N次的备份数据。

此外,使用Hostwinds提供的SnapShot快照备份功能,还可以随时备份整个VPS系统,更进一步确保网站数据的安全。

本机VPS + 远程VPS + SnapShot快照,构建起三重备份存储,再也不用担心数据丢失了。

WordPress备份丢失

当然,这完全得益于使用VPS且纯命令管理的这种建站方式。而那种采用可视化面板(比如 cPanel 或者 DirectAdmin )的建站方式,几乎是没有机会学习和实践这些Linux知识的。

下面,本文将分享博主自用的两种WordPress备份方法:以前使用过的手动备份命令,以及目前正在使用的自动备份脚本。

同时,也会涉及WordPress的还原和恢复,以及WordPress搬家和迁移等操作介绍。

#1、手动备份命令

在Linux系统下,对WordPress进行手动备份其实也并不难。主要涉及两部分:网站源文件备份和对应的数据库备份。

① 网站源文件备份

为了方便管理,我们先建立一个文件夹专门存放备份数据,比如 /home/backup/

# mkdir /home/backup

以本站 seoimo.com 为例,压缩网站根目录并移动到 /home/backup/ 文件夹下(为方便管理,博主添加了备份日期,建议你也这样做):

# cd /home/wwwroot
# tar -zcvf seoimo-2019-07-08.tar.gz seoimo.com
# mv seoimo-2019-07-08.tar.gz /home/backup/

好了,整站已经备份完成。接下来,开始备份网站数据库。

② 网站数据库备份

首先,打开 /home/backup/ 文件夹,我们需要将数据库备份在这里:

# cd /home/backup
# lnmp database list

输入 root 数据库密码(参考 #6 + 搭建LAMP环境),即可查看当前数据库列表。

选择需要备份网站的对应数据库,以本站的 sjk_seoimo 为例:

# mysqldump -uroot -p sjk_seoimo > sjk_seoimo-2019-07-08.sql

再次输入 root 数据库密码,即可完成数据库备份。

通过命令 # ls -la 查看当前目录,应该能看到已经备份好了的压缩包。

此时,可通过 FTP 工具下载到本地电脑保存,也可以上传到其他 VPS/FTP 上保存。

#2、自动备份脚本

如果只是偶尔备份几次,用上面的方法进行手动备份倒没太大的不便。

但如果你需要经常备份,比如每天备份一次,那么手动备份的效率就太低了。

设想一下,你需要每天至少登录一次VPS,接着运行一系列命令,然后再上传到其他 VPS 或者 FTP 空间。

甚至,如果你想下载到本地电脑,几百MB甚至几个GB的压缩包,也是够传一段时间的。

实际上,在手动备份几次之后,博主就已经厌倦了这种单调且低效的备份方式。

所以,自己写了一个相对简单适用的WordPress自动备份脚本。

其主要功能有以下几点:

①自动备份当前VPS上所有WordPress根目录(网站数据)以及对应的数据库;
②同时备份整个数据库目录,以及网站相关目录比如SSL证书等;
③支持自动FTP上传到其他VPS或者FTP空间;
④支持自定义备份频率和保留最近N次备份;
⑤支持自动恢复(从本机VPS或者远程FTP),以及搬家/迁移。

如你需要,可在下面输入邮箱后订阅下载。(不要用QQ邮箱,否则大概率会接收不到)

有几点需要设置的变量(关于远程FTP、备份名称和备份保留次数等等),说明如下;若是没有远程FTP,相关设置可以不填,备份只保存在本机VPS上面。

FTP_IP=111.111.111.111 (远程FTP地址)
FTP_USER="ftpusername" (远程FTP用户名)
FTP_PASSWD="ftpuserpasswd" (远程FTP密码)
BACKUP_NAME="seoimo-wp-backup" (备份名称,建议只更改 seoimo 即可)
BACKUP_NUMBER=5 (备份保留次数)
MYSQL_ROOT_PASSWD="mysqlrootpasswd" (ROOT数据库密码)
FTP_BACKUP="/home/backup" (远程FTP备份目录,默认即可)
DIR_BACKUP="/home/backup" (本机VPS备份目录,默认即可)

#3、脚本使用方法

除了上面提到的相关变量需要设置以外,此脚本在使用前还需要做如下几点配置。主要是在本机VPS和远程 VPS/FTP 空间上的配置。

①本机 VPS 上的配置

第一、需要安装下 ftp 命令,否则可能会提示 -bash: ftp: command not found 错误:

# yum install ftp -y

然后,新建备份目录 /home/backup/ :

# mkdir /home/backup

如果已经提前创建好了此备份目录,则可直接跳过该步。

②远程 VPS/FTP 上的配置

这里演示的是远程VPS上创建 FTP 用户的操作,如果你已有 FTP 账户,可直接跳过该步。

首先,仍然是新建备份目录 /home/backup/ :

# mkdir /home/backup

其次,在lnmp1.6环境下安装 FTP 服务端:

# yum install ftp -y
# cd /root/lnmp1.6-full
# bash pureftpd.sh

然后,添加 FTP 用户:

# cd ~ && lnmp ftp add

自行设置FTP用户名、密码以及备份目录的绝对路径 /home/backup/ 如下:

+-------------------------------------------+
| Manager for LNMP, Written by Licess |
+-------------------------------------------+
| https://lnmp.org |
+-------------------------------------------+
Enter ftp account name: ftpusername
Enter password for ftp account ftpusername: ftpuserpasswd
Enter directory for ftp account ftpusername: /home/backup
Password:
Enter it again:
Created FTP User: ftpusername Sucessfully.

最后,为了防止在使用 FTP 工具上传时,可能会提示 “553 Can’t open that file: Permission denied” 的错误,建议更改下权限:

# chown www:www -R /home/backup

至此,关于FTP备份的准备工作已全部完成。

#4、写在最后

此WordPress自动备份脚本是在 CentOS7 + LNMP1.6/Apache 环境下进行编写和测试的,所以,博主也只推荐在此环境下使用。

假如,你是完全按照本站中的VPS建站教程搭建的WordPress博客,那么运行此脚本时应该不会有大的问题。

但是,鉴于博主水平有限,此备份脚本难免不会出现BUG。如果你在使用过程中发现了问题,或者有好的建议,烦请在下面留言讨论。

«

发表评论

电子邮件地址不会被公开。 必填项已用*标注