WordPress 网站上有一件重要的事情经常被搁置在一旁,那就是备份。我知道一开始,很多人已经在为主题和插件而苦苦挣扎,试图拥有一个功能强大的 WP 网站……但是,一旦您的 WordPress 网站/博客在设计和功能方面或多或少地达到了您的期望,并且您花时间为您的读者创建内容后,您应该快速建立一个自动备份 WordPress 网站的系统。
设置自动备份通常会被推迟,因为我们总是有其他在待办事项列表中看起来更重要的任务……但是当我说备份应该位于您的待办事项列表顶部时,请相信我。问问自己这个问题:
如果您的网站在一夜之间丢失,您会有什么感受?这会如何影响你?
如果在问自己这些问题时,您意识到丢失站点会让您感到沮丧,或者您根本负担不起,那么您需要设置备份以备不时之需。
目录
为什么备份 WordPress 网站如此重要?
我应该在我的 WordPress 网站上备份什么?
备份所有 WordPress 站点文件
WordPress 数据库备份
好的 WordPress 备份有哪些特点?
WP 备份必须是自动的
在外部存储上进行 WordPress 备份
有多个备份副本
WordPress 备份的频率
增量备份
知道如何从备份中恢复您的 WordPress 网站
备份 WordPress 网站的不同方法
使用您的托管服务提供商备份您的 WP 站点?
Kinsta
WP Engine
使用 WordPress 插件备份您的 WordPress 网站
UpdraftPlus
WPvivid Backup
其他插件
对您的 WordPress 网站进行编程备份
2021 年初的消息再次残酷地提醒我们(我当然说的是斯特拉斯堡OVH 数据中心的毁灭性火灾),如果您管理网站,则必须始终为最坏的情况做好准备!至于我,我在这个数据中心有 3 台服务器,如果我没有外部备份,我根本无法恢复我的网站,因为数据真的烟消云散了……
但这只是可能发生在您身上的不幸事件的一个例子。以下是一些其他情况,仅凭这些情况就可以证明为您的 WordPress 站点设置备份是合理的:
如您所见,可能会发生很多事情。即使这些事件并不常见,也只需要一次让您后悔没有为您的 WordPress 站点自动备份。
为了能够在出现问题时完全恢复您的 WP 站点,您实际上需要进行两种类型的备份:
通过“你的WordPress站点文件”我的意思是WordPress的核心文件(即您使用的WordPress版本),你有你已经安装的插件,您使用的主题,所有的媒体(图片、视频、PDF等)上传到您的网站等…
如果您在共享主机上并且您通常通过 cpanel 或 ftp 访问您的站点文件,那么这些文件大部分时间都位于名为public_html/www 的文件夹中(该文件夹称为您站点的 Web 根目录,可能会有所不同,具体取决于托管服务提供商)。必须保存此文件夹的内容。
您应该或多或少地在 Web 根目录中看到的文件和文件夹
即使您对站点上的所有文件进行了备份,在出现问题时仍不足以恢复它。您必须备份 WordPress 数据库,其中包含您网站的所有内容和设置(帖子、页面、类别、设置等)。
通常在共享主机上,您可以使用 phpmyadmin 工具通过 Cpanel 访问您站点的数据库。
这是 phpmyadmin 中 WordPress 数据库的样子
因此,您认为您只需要在某处拥有网站文件的副本和数据库的导出即可放松……实际上它比这要复杂一些,一个好的 WordPress 备份必须具有以下特征。
因此,如果您只想通过 ftp 在您的计算机或外部硬盘驱动器上复制您的 WP 文件并手动导出数据库,让我立即阻止您。一个好的备份应该自动完成,而不是手动完成。
问题是,即使您非常自律,也会有忘记备份的时候。您还可以确定,在出现问题的那一天,您将不会进行数周的备份,因此您将面临失去大量工作的风险。
为了能够安心,最好将这个过程自动化并经常进行备份,而不必时时考虑它。
如果许多 OVH 客户在今年 3 月痛切地了解到一件事,那就是您应该始终将备份存储在与网站服务器不在同一位置的外部服务器上。在 OVH 发生火灾的情况下,即使您在外部服务器上有备份但它位于同一个数据中心,您也会同时丢失站点和备份!
我认为最简单的方法是使用专门用于数据存储的外部服务,如 Amazon S3、google drive 或 Dropbbox 来存储您的备份。
想象一下,黑客已将内容插入到您的所有网页中,而您仅在一周后才发现。这意味着在那一周内对您的站点进行的备份也包含该问题,因此毫无用处。这是您应该存储多个备份副本的原因之一。
就个人而言,我每天都会备份数据库,并保留最近 30 个备份的副本。对于站点文件备份(通常要大得多,特别是如果您有很多图片),我每周通过在 2 个位置之间交替进行备份。这样我就有了 2 个站点文件的副本,它们不会同时备份,以防其中一个备份也被黑客感染。
因此备份的频率将取决于您的站点被修改(或信息添加到您的数据库)的频率。如果您经常修改站点,则可以每天轻松备份数据库,例如每周备份一次站点文件。由于数据库中存储的信息变化最频繁(您站点的文件变化主要是在您进行更新、安装插件或添加媒体时),因此您应该备份最频繁的数据库。
您所有网站文件的大小可能很大(通常为 Gb 甚至数十或数百 Gb)。因此,如果每次备份站点文件时,都会创建这些文件的新副本,这可能会使服务器过载,尤其是在共享主机上时。
此外,亚马逊 S3 等存储解决方案也按传输的数据量收费。因此,如果您每次都创建文件的新备份,则成本会更高。
此问题的解决方案称为增量备份。使用此技术,您只需备份现有备份和新备份之间的差异(即不会再次备份自上次备份以来未修改的文件)。这样,只有第一次备份才会真正占用资源,因为接下来的备份只会备份新文件或自上次以来修改过的文件。
这似乎很明显,但您需要知道如何使用备份重新安装站点。如果您使用 WordPress 插件进行备份,通常会有自动恢复备份的功能。如果没有,您将需要知道如何手动执行此操作。
让我们看看备份 WordPress 网站的不同可能性
正如我上面所解释的,如果您选择通过您的虚拟主机进行备份,您需要确保您的备份符合上述标准(即,多个备份存储在不同位置的外部服务器上)。还要确保您知道如何恢复您的站点,因为即使您可以访问备份,大多数托管公司也不提供通过一次单击轻松恢复站点的选项(由您来查找站点的文件)在备份中,找到数据库并恢复这些文件)。
但是,有一些托管公司专门从事 WordPress 网站,并因其备份质量和出现问题时的易用性而脱颖而出:
Kinsta 是一家专门从事 WordPress 网站的高级托管公司。除了提供许多有趣的功能(加载速度、开发环境、安全性……)之外,他们还根据所有计划提供您网站的每日备份。这些备份可以通过管理一键轻松恢复。由于 Kinsta 使用谷歌云,您的数据以冗余方式备份(不同地方的多个副本),并且在发生 OVH 等灾难时是安全的。
如果这还不够,Kinsta 仍然提供外部备份服务,将您的备份存储在 Amazon S3 或 Google 云存储上。
WP Engine 也是专门从事 WordPress 网站的高级主机(它是 Kinsta 的第一个竞争对手)。就像 Kinsta 一样,他们提供许多有趣的功能(速度、CDN、开发环境等),包括所有计划中的自动备份服务。他们的备份工具比 Kinsta 的更灵活,可以进行完整或部分备份,一键恢复等……此外,备份存储在 Amazon S3 上以确保完全安全。
顺便说一句,如果您是从头开始创建一个网站,我对 WP Engine 有一点偏好,自从他们收购 Studiopress 和Genesis以来,它也提供了对高级 WP 主题的访问。一服客建站平台 也具备对至少10多个Genesis子主题的访问,因为我们购买了终生无限制站点许可。
我承认这些托管公司并不便宜,它们面向较高级的用户,一服客建站平台 的托管要便宜的多。但是当您考虑到它们提供的所有功能时。对于没有技术技能而只想拥有一个安全快速的 WordPress 网站的人来说,这种专门的 WordPress 托管显然很有趣。
如果您没有像 Kinsta 或 WP Engine 这样的高级主机,备份 WordPress 网站的最简单方法是使用插件。有几十个 WordPress 备份插件。因此,为了让您更轻松,我已经测试了很多,以选择我认为最好的。可以想象,所有这些插件还提供高级版本。我在下面选择了那些已经允许您在其免费版本中进行高质量备份的内容(自动在外部服务器上保存多个副本)。显然,通过订阅高级版本,您将拥有更多可能有趣的选项,但使用这些插件,最低限度是免费的。
这显然是我研究中最常出现的插件,也是安装最活跃(和好评最多)的插件。我必须说,在测试之后,它取决于它的声誉!
该插件非常易于使用,并且已经在免费版本中提供了许多功能:
高级版对我来说的主要优点是
在我的测试过程中,我花了 2 分钟将插件连接到我的 Amazon S3 帐户,在外部服务器上进行备份并测试以恢复备份。我将在下面放一些插件菜单的屏幕截图,以便您了解。但除此之外,您可以在此处找到使用此插件的完整指南。
这是另一个流行的插件,用于备份您的 WP 站点(超过 100’000 次安装,几乎只有 5 星评论)。同样,这不是巧合,因为就像 Updraft plus 一样,这个插件在免费版本中已经非常广泛并且非常易于使用。
使用免费版本,您已经可以:
我认为高级版的主要优点如下:
就像 Updraft plus 一样,这个插件非常容易使用。在 3 分钟内,我在 Amazon S3 上设置了我的外部存储并进行了第一次备份。恢复功能也很容易使用。
老实说,我必须尝试过十几个其他 WP 备份插件,但没有一个在其免费版本中提供与 Updraft plus 和 WPVivid 一样多的功能。当您想要连接外部存储(如 Amazon S3)时,大多数其他插件要求您付费。所以我推荐这两个插件,因为如果您需要更多高级功能,您已经可以免费进行体面的备份并升级到高级版本。
我想添加WP Backup 插件,它非常新,非常有前途。它仍在开发中,目前尚无法连接外部存储。但它已经有一些有趣的自定义选项,它应该很快就会允许在其免费版本中连接到主要的外部存储提供商。一个值得关注的插件
最后,您还可以以编程方式备份您的 WP 站点。有无数种方法可以做到这一点,但我将在下面详细说明如何以编程方式备份所有站点。
原理很简单,您需要一个脚本,定期将数据库备份导出到文件夹并保留备份的最后 x 个副本。您还需要一个脚本,允许您将文件夹从您的服务器复制到外部存储服务,在我的例子中是 Amazon S3。这将用于将包含数据库备份的文件夹和包含站点文件的文件夹复制到 Amazon S3。
为了您的信息,我使用 docker 来运行我的所有站点,并且下面的脚本旨在与 docker 一起使用。但是如果你理解了这个想法,你应该能够根据自己的需要调整它们。
让我们从 bash 脚本开始,它允许您将数据库的备份导出到一个文件夹中并保留最后的 x 份副本。该脚本执行从 mysql docker 容器到备份文件夹的数据库转储。然后它只在备份文件夹中保留数据库的最后 x 个备份。
#!/bin/bash
# backup script to dump database from a docker container
# usage :
# scripts/backup.sh /path/to/backup/folder/ docker-container-name password database-name 30
set -e
if [ $# -ne 5 ]; then
echo "Usage: $0 "
exit 1
fi
BACKUPPATH=$1
CONTAINERNAME=$2
PASSWORD=$3
DATABASE=$4
BACKUPNBR=$5
docker exec ${CONTAINERNAME} /usr/bin/mysqldump -u root --password=${PASSWORD} ${DATABASE} | gzip > ${BACKUPPATH}db_dump_`date +%Y-%m-%d:%H>
cd ${BACKUPPATH}
# only keep the x latest backups
if [ `ls -l db_dump* | wc -l` -gt ${BACKUPNBR} ]; then
ls -t db_dump* | sed -e "1,${BACKUPNBR}d" | xargs -d '\n' rm
然后我们需要一个脚本,允许我们将备份文件夹(其中包含我们最后的 x 数据库备份)和包含我们站点的所有文件的文件夹复制到 Amazon S3。以下示例使用 docker 和 garland/aws-cli-docker 映像将服务器上的任何文件夹增量备份到 Amazon S3:
#!/bin/bash
# Mount and backup any local folder to amazon S3
# usage :
# scripts/s3-backup.sh /folder/to/mount:/mount /mount/folder/to/backup s3-bucket-name/backup/path
set -e
if [ $# -ne 3 ]; then
echo "Usage: $0 "
exit 1
fi
MOUNT=$1
SERVERPATH=$2
S3PATH=$3
docker run \
-d --rm \
--env AWS_ACCESS_KEY_ID=your-access-key \
--env AWS_SECRET_ACCESS_KEY=your-secret-key \
--env AWS_DEFAULT_REGION=amazon-s3-region \
-v ${MOUNT} \
garland/aws-cli-docker \
aws s3 sync ${SERVERPATH} s3://${S3PATH} --delete
然后,您只需将脚本添加到服务器的 Cron 选项卡中,即可根据需要安排它们的执行。为此,您只需输入:
crontab -e
并安排脚本的执行。
# m h dom mon dow command
0 0 * * * /path/to/script/backup.sh /path/to/backup/folder/ docker-container-name password database-name 30
0 1 * * * /path/to/script/s3-backup.sh /mount/db-backup/folder:/db-backup /db-backup/path/to/backups s3-bucket-name/backup/path
0 2 1,15 * * /path/to/script/s3-backup.sh /mount/website/folder:/website /website/path/to/files s3-bucket-name/backup/path1
0 2 8,22 * * /path/to/script/s3-backup.sh /mount/website/folder:/website /website/path/to/files s3-bucket-name/backup/path2
以上几行的意思是,每天午夜,执行备份数据库副本的脚本将最后 30 个备份保存在备份文件夹(第一行)中。然后每天凌晨 1 点,将包含数据库备份的文件夹复制到 Amazon S3 外部服务器(第 2 行)。最后,在每月的 1 号和 15 号(第 3 行),包含所有站点文件的文件夹将备份到 Amazon S3 上的一个文件夹中。每个月的 8 日和 22 日,相同的文件都会备份到另一个位置(第 4 行)。通过这种方式,我们通过每周进行增量备份来保留所有站点文件的 2 个副本。
所以我希望这篇博文让你相信你必须为你的 WordPress 网站设置一个自动备份系统。没有人是安全的,为了安心,最好花时间进行正确的备份……尤其是因为它并不那么困难,对吧?
希望本文能让您了解备份 WordPress 网站的重要性和常用的备份插件,您也许还想看看我们的7款最佳WordPress备份插件比较。