为什么以及如何自动备份 WordPress 网站

#brave_popup_35952__step__0 .brave_popup__step__desktop…

#brave_popup_35952__step__0 .brave_popup__step__desktop .brave_popup__step__inner{ width: 560px; height: 280px;border-radius: 6px;margin-top:-140px;font-family:Arial;}#brave_popup_35952__step__0 .brave_popup__step__desktop .brave_element__wrap{ font-family:Arial;}#brave_popup_35952__step__0 .brave_popup__step__desktop .brave_popup__step__popup{ box-shadow: 0 0 15px rgba(0, 0, 0, 0.2);border-radius: 6px; }#brave_popup_35952__step__0 .brave_popup__step__desktop .brave_popup__step__content{ background-color: rgba(238,238,238, 1); }#brave_popup_35952__step__0 .brave_popup__step__desktop .brave_popup__step__overlay{ background-color: rgba(0,0,0, 0.7);}#brave_popup_35952__step__0 .brave_popup__step__desktop .brave_popup__close{ font-size:24px; width:24px; color:rgba(0,0,0, 1);top:-32px}
#brave_popup_35952__step__0 .brave_popup__step__desktop .brave_popup__close svg{ width:24px; height:24px;}
#brave_popup_35952__step__0 .brave_popup__step__desktop .brave_popup__close svg path{ fill:rgba(0,0,0, 1);}#brave_popup_35952__step__0 #brave_element–Mb-_ai8cLFR3mNil7Ml{ width: 403px;height: 99px;top: 28px;left: 79px;z-index: 0;}#brave_popup_35952__step__0 #brave_element–Mb-aMziWWku4qvTNQod{ width: 447px;height: 149px;top: 116px;left: 56px;z-index: 1;}#brave_popup_35952__step__0 .brave_popup__step__mobile .brave_popup__step__inner{ width: 300px; height: 240px;margin-top:-120px;font-family:Arial;}#brave_popup_35952__step__0 .brave_popup__step__mobile .brave_element__wrap{ font-family:Arial;}#brave_popup_35952__step__0 .brave_popup__step__mobile .brave_popup__step__popup{ box-shadow: 0 0 15px rgba(0, 0, 0, 0.2); }#brave_popup_35952__step__0 .brave_popup__step__mobile .brave_popup__step__content{ background-color: rgba(238,238,238, 1); }#brave_popup_35952__step__0 .brave_popup__step__mobile .brave_popup__step__overlay{ background-color: rgba(0,0,0, 0.7);}#brave_popup_35952__step__0 .brave_popup__step__mobile .brave_popup__close{ font-size:24px; width:24px; color:rgba(0,0,0, 1);top:-32px}
#brave_popup_35952__step__0 .brave_popup__step__mobile .brave_popup__close svg{ width:24px; height:24px;}
#brave_popup_35952__step__0 .brave_popup__step__mobile .brave_popup__close svg path{ fill:rgba(0,0,0, 1);}#brave_popup_35952__step__0 #brave_element–McUZC0gGrT3hDJ1lf_d{ width: 237px;height: 72px;top: 25px;left: 31px;z-index: 0;}#brave_popup_35952__step__0 #brave_element–McUZMuScVPDU6f4byqO{ width: 257px;height: 140px;top: 93px;left: 24px;z-index: 1;}#brave_popup_35952__step__0 #brave_element–Mb-_ai8cLFR3mNil7Ml .brave_element__text_inner{
text-align: center;font-size: 22px;line-height: 1.5em;letter-spacing: -1.6px;font-weight: bold;text-transform: uppercase;color: rgba(0,0,0, 1);}#brave_popup_35952__step__0 #brave_element–Mb-aMziWWku4qvTNQod .brave_element__styler, #brave_popup_35952__step__0 #brave_element–Mb-aMziWWku4qvTNQod .brave_form_fields .formfield__checkbox_label{ font-size: 12px;font-family: Arial;color: rgba(0,0,0, 1);}#brave_popup_35952__step__0 #brave_element–Mb-aMziWWku4qvTNQod input, #brave_popup_35952__step__0 #brave_element–Mb-aMziWWku4qvTNQod textarea, #brave_popup_35952__step__0 #brave_element–Mb-aMziWWku4qvTNQod select{
padding: 12px;background-color: rgba(255, 255, 255, 1);color: rgba(51,51,51, 1);font-size: 14px;border-width: 1px;border-color: rgba(221,221,221, 1);border-radius: 20px;font-family: Arial; border-style: solid;}#brave_popup_35952__step__0 #brave_element–Mb-aMziWWku4qvTNQod .brave_form_field { margin: 7.5px 0px;line-height: 21px;}#brave_popup_35952__step__0 #brave_element–Mb-aMziWWku4qvTNQod .braveform_label { font-size: 12px;font-family: Arial;color: rgba(68,68,68, 1);}#brave_popup_35952__step__0 #brave_element–Mb-aMziWWku4qvTNQod input[type=”checkbox”]:checked:before, #brave_popup_35952__step__0 #brave_element–Mb-aMziWWku4qvTNQod input[type=”radio”]:checked:before{ color: rgba(73,71,226, 1);}#brave_popup_35952__step__0 #brave_element–Mb-aMziWWku4qvTNQod .brave_form_button button{ font-family: Arial;width: 100%;height: 43px;border-radius: 38px;background-color: rgba(73,71,226, 1);color: rgba(255,255,255, 1);font-size: 15px;font-family: Arial;border-width: 0px;border-color: rgba(0,0,0, 1);}#brave_popup_35952__step__0 #brave_element–Mb-aMziWWku4qvTNQod .brave_form_field–step .brave_form_stepNext{ font-family: Arial;width: 100%;height: 43px;border-radius: 38px;background-color: rgba(73,71,226, 1);color: rgba(255,255,255, 1);font-size: 15px;line-height: 43px;}#brave_popup_35952__step__0 #brave_element–Mb-aMziWWku4qvTNQod .bravepopform_socialOptin_button{font-family: Arial;height: 43px;border-radius: 38px;font-size: 15px;font-family: Arial;border-width: 0px;border-color: rgba(0,0,0, 1);line-height: 43px;}#brave_popup_35952__step__0 #brave_element–Mb-aMziWWku4qvTNQod .bravepopform_socialOptin_button–email{background-color: rgba(73,71,226, 1);color: rgba(255,255,255, 1);}#brave_popup_35952__step__0 #brave_element–Mb-aMziWWku4qvTNQod .brave_element-icon{ font-size: 12.75px}#brave_popup_35952__step__0 #brave_element–Mb-aMziWWku4qvTNQod .brave_icon svg{ fill: rgba(255,255,255, 1);}#brave_popup_35952__step__0 #brave_element–Mb-aMziWWku4qvTNQod .formfield__inner__image–selected img{ border-color: rgba(73,71,226, 1);}#brave_popup_35952__step__0 #brave_element–Mb-aMziWWku4qvTNQod .formfield__inner__image__selection{ border-color: rgba(73,71,226, 1) transparent transparent transparent;}#brave_popup_35952__step__0 #brave_element–Mb-aMziWWku4qvTNQod .brave_form_field–checkbox_borderd .formfield__inner__checkbox label{border-width: 1px;border-color: rgba(221,221,221, 1);border-radius: 20px;}#brave_popup_35952__step__0 #brave_element–Mb-aMziWWku4qvTNQod .brave_form_custom_content{ font-size: 13px;color: rgba(107, 107, 107, 1);}#brave_popup_35952__step__0 #brave_element–McUZC0gGrT3hDJ1lf_d .brave_element__text_inner{
text-align: center;font-size: 16px;line-height: 1.5em;letter-spacing: -1.6px;font-weight: bold;text-transform: uppercase;color: rgba(0,0,0, 1);}#brave_popup_35952__step__0 #brave_element–McUZMuScVPDU6f4byqO .brave_element__styler, #brave_popup_35952__step__0 #brave_element–McUZMuScVPDU6f4byqO .brave_form_fields .formfield__checkbox_label{ font-size: 19px;font-family: Arial;color: rgba(0,0,0, 1);}#brave_popup_35952__step__0 #brave_element–McUZMuScVPDU6f4byqO input, #brave_popup_35952__step__0 #brave_element–McUZMuScVPDU6f4byqO textarea, #brave_popup_35952__step__0 #brave_element–McUZMuScVPDU6f4byqO select{
padding: 12px;background-color: rgba(255, 255, 255, 1);color: rgba(51,51,51, 1);font-size: 9px;border-width: 1px;border-color: rgba(221,221,221, 1);border-radius: 20px;font-family: Arial; border-style: solid;}#brave_popup_35952__step__0 #brave_element–McUZMuScVPDU6f4byqO .brave_form_field { margin: 7.5px 0px;line-height: 21px;}#brave_popup_35952__step__0 #brave_element–McUZMuScVPDU6f4byqO .braveform_label { font-size: 12px;font-family: Arial;color: rgba(68,68,68, 1);}#brave_popup_35952__step__0 #brave_element–McUZMuScVPDU6f4byqO input[type=”checkbox”]:checked:before, #brave_popup_35952__step__0 #brave_element–McUZMuScVPDU6f4byqO input[type=”radio”]:checked:before{ color: rgba(73,71,226, 1);}#brave_popup_35952__step__0 #brave_element–McUZMuScVPDU6f4byqO .brave_form_button button{ font-family: Arial;width: 100%;height: 35px;border-radius: 38px;background-color: rgba(73,71,226, 1);color: rgba(255,255,255, 1);font-size: 11px;font-family: Arial;border-width: 0px;border-color: rgba(0,0,0, 1);}#brave_popup_35952__step__0 #brave_element–McUZMuScVPDU6f4byqO .brave_form_field–step .brave_form_stepNext{ font-family: Arial;width: 100%;height: 35px;border-radius: 38px;background-color: rgba(73,71,226, 1);color: rgba(255,255,255, 1);font-size: 11px;line-height: 35px;}#brave_popup_35952__step__0 #brave_element–McUZMuScVPDU6f4byqO .bravepopform_socialOptin_button{font-family: Arial;height: 35px;border-radius: 38px;font-size: 11px;font-family: Arial;border-width: 0px;border-color: rgba(0,0,0, 1);line-height: 35px;}#brave_popup_35952__step__0 #brave_element–McUZMuScVPDU6f4byqO .bravepopform_socialOptin_button–email{background-color: rgba(73,71,226, 1);color: rgba(255,255,255, 1);}#brave_popup_35952__step__0 #brave_element–McUZMuScVPDU6f4byqO .brave_element-icon{ font-size: 9.35px}#brave_popup_35952__step__0 #brave_element–McUZMuScVPDU6f4byqO .brave_icon svg{ fill: rgba(255,255,255, 1);}#brave_popup_35952__step__0 #brave_element–McUZMuScVPDU6f4byqO .formfield__inner__image–selected img{ border-color: rgba(73,71,226, 1);}#brave_popup_35952__step__0 #brave_element–McUZMuScVPDU6f4byqO .formfield__inner__image__selection{ border-color: rgba(73,71,226, 1) transparent transparent transparent;}#brave_popup_35952__step__0 #brave_element–McUZMuScVPDU6f4byqO .brave_form_field–checkbox_borderd .formfield__inner__checkbox label{border-width: 1px;border-color: rgba(221,221,221, 1);border-radius: 20px;}#brave_popup_35952__step__0 #brave_element–McUZMuScVPDU6f4byqO .brave_form_custom_content{ font-size: 13px;color: rgba(107, 107, 107, 1);}

WordPress 网站上有一件重要的事情经常被搁置在一旁,那就是备份。我知道一开始,很多人已经在为主题和插件而苦苦挣扎,试图拥有一个功能强大的 WP 网站……但是,一旦您的 WordPress 网站/博客在设计和功能方面或多或少地达到了您的期望,并且您花时间为您的读者创建内容后,您应该快速建立一个自动备份 WordPress 网站的系统

设置自动备份通常会被推迟,因为我们总是有其他在待办事项列表中看起来更重要的任务……但是当我说备份应该位于您的待办事项列表顶部时,请相信我。问问自己这个问题:

如果您的网站在一夜之间丢失,您会有什么感受?这会如何影响你?

如果在问自己这些问题时,您意识到丢失站点会让您感到沮丧,或者您根本负担不起,那么您需要设置备份以备不时之需。

为什么备份 WordPress 网站如此重要?

2021 年初的消息再次残酷地提醒我们(我当然说的是斯特拉斯堡OVH 数据中心的毁灭性火灾),如果您管理网站,则必须始终为最坏的情况做好准备!至于我,我在这个数据中心有 3 台服务器,如果我没有外部备份,我根本无法恢复我的网站,因为数据真的烟消云散了……

但这只是可能发生在您身上的不幸事件的一个例子。以下是一些其他情况,仅凭这些情况就可以证明为您的 WordPress 站点设置备份是合理的:

  • 服务器故障:OVH 数据中心火灾只是您无法控制的问题的一个例子,它可能会使您的网站损失惨重(这并不是 OVH 独有的,许多最好的托管公司的数据中心都遇到了重大问题)。服务器可能因多种原因停机,您永远不应假设您的主机已为您备份了数据。当然,许多托管公司都提供备份服务,但由您来确保备份的质量很好(我将在下面回到这一点)。
  • 黑客攻击:由于 WordPress 是世界上使用最广泛的用于在互联网上发布内容的平台,因此它自然是黑客的主要目标。黑客的攻击类型千差万别(在过去的几年里,我看到人们无法访问他们的管理员仪表盘,页面用日语发布,所有页面上都出现垃圾邮件)……但是如果你有多个备份站点并且您及时发现问题,您始终可以恢复站点的旧版本(但请注意备份不被黑客感染)。
  • 更新 WordPress 或插件时的问题:好的做法是建议您始终拥有一个开发环境(您可以在其上测试内容的站点副本)来测试更新,然后再将它们部署到生产版本上。但是,在实践中,我认为 99% 拥有 WordPress 网站的人直接在其网站的生产版本上进行更新。有时插件与新版本的 WordPress 不兼容,这可能会在更新时产生意外和不幸的后果。如果您进行了备份,则可以随时从更新之前恢复站点的版本,以防发生崩溃。
  • 人为错误:即使您有使用 WordPress 的经验,也不要认为自己不会犯错。您可能通过 ftp 或 ssh 删除错误的文件夹,在您的站点管理中进行错误的操作或其他任何……如果您有备份,您至少有办法返回。

如您所见,可能会发生很多事情。即使这些事件并不常见,也只需要一次让您后悔没有为您的 WordPress 站点自动备份

我应该在我的 WordPress 网站上备份什么?

为了能够在出现问题时完全恢复您的 WP 站点,您实际上需要进行两种类型的备份:

备份所有 WordPress 站点文件

通过“你的WordPress站点文件”我的意思是WordPress的核心文件(即您使用的WordPress版本),你有你已经安装的插件,您使用的主题,所有的媒体(图片、视频、PDF等)上传到您的网站等…

如果您在共享主机上并且您通常通过 cpanel 或 ftp 访问您的站点文件,那么这些文件大部分时间都位于名为public_html/www 的文件夹中(该文件夹称为您站点的 Web 根目录,可能会有所不同,具体取决于托管服务提供商)。必须保存此文件夹的内容。

WordPress 数据库备份

即使您对站点上的所有文件进行了备份,在出现问题时仍不足以恢复它。您必须备份 WordPress 数据库,其中包含您网站的所有内容和设置(帖子、页面、类别、设置等)。

通常在共享主机上,您可以使用 phpmyadmin 工具通过 Cpanel 访问您站点的数据库。

好的 WordPress 备份有哪些特点?

因此,您认为您只需要在某处拥有网站文件的副本和数据库的导出即可放松……实际上它比这要复杂一些,一个好的 WordPress 备份必须具有以下特征。

WP 备份必须是自动的

因此,如果您只想通过 ftp 在您的计算机或外部硬盘驱动器上复制您的 WP 文件并手动导出数据库,让我立即阻止您。一个好的备份应该自动完成,而不是手动完成

问题是,即使您非常自律,也会有忘记备份的时候。您还可以确定,在出现问题的那一天,您将不会进行数周的备份,因此您将面临失去大量工作的风险。

为了能够安心,最好将这个过程自动化并经常进行备份,而不必时时考虑它。

在外部存储上进行 WordPress 备份

如果许多 OVH 客户在今年 3 月痛切地了解到一件事,那就是您应该始终将备份存储在与网站服务器不在同一位置的外部服务器上。在 OVH 发生火灾的情况下,即使您在外部服务器上有备份但它位于同一个数据中心,您也会同时丢失站点和备份!

我认为最简单的方法是使用专门用于数据存储的外部服务,如 Amazon S3、google drive 或 Dropbbox 来存储您的备份。

有多个备份副本

想象一下,黑客已将内容插入到您的所有网页中,而您仅在一周后才发现。这意味着在那一周内对您的站点进行的备份也包含该问题,因此毫无用处。这是您应该存储多个备份副本的原因之一。

就个人而言,我每天都会备份数据库,并保留最近 30 个备份的副本。对于站点文件备份(通常要大得多,特别是如果您有很多图片),我每周通过在 2 个位置之间交替进行备份。这样我就有了 2 个站点文件的副本,它们不会同时备份,以防其中一个备份也被黑客感染。

WordPress 备份的频率

因此备份的频率将取决于您的站点被修改(或信息添加到您的数据库)的频率。如果您经常修改站点,则可以每天轻松备份数据库,例如每周备份一次站点文件。由于数据库中存储的信息变化最频繁(您站点的文件变化主要是在您进行更新、安装插件或添加媒体时),因此您应该备份最频繁的数据库

增量备份

您所有网站文件的大小可能很大(通常为 Gb 甚至数十或数百 Gb)。因此,如果每次备份站点文件时,都会创建这些文件的新副本,这可能会使服务器过载,尤其是在共享主机上时。

此外,亚马逊 S3 等存储解决方案也按传输的数据量收费。因此,如果您每次都创建文件的新备份,则成本会更高。

此问题的解决方案称为增量备份。使用此技术,您只需备份现有备份和新备份之间的差异(即不会再次备份自上次备份以来未修改的文件)。这样,只有第一次备份才会真正占用资源,因为接下来的备份只会备份新文件或自上次以来修改过的文件。

知道如何从备份中恢复您的 WordPress 网站

这似乎很明显,但您需要知道如何使用备份重新安装站点。如果您使用 WordPress 插件进行备份,通常会有自动恢复备份的功能。如果没有,您将需要知道如何手动执行此操作。

备份 WordPress 网站的不同方法

让我们看看备份 WordPress 网站的不同可能性

  1. 手动备份:可以通过 ftp 对 WP 文件和数据库进行手动备份。但是,如果您已经阅读了上面所写的内容,那么您应该避免这种做法,而是自动执行此任务。所以不要这样做!
  2. 通过您的主机提供商备份:大多数主机提供自动备份选项。这些选项因主机而异,您有责任确保备份符合我上面概述的标准(如 OVH 火灾的情况)。例如,像Kinsta或WP Engine这样的专业 WordPress 主机在其所有计划中都包含高质量的自动备份。一服客建站平台 也有自动备份计划。
  3. 使用 WP 备份插件:这是进行备份的最简单方法,WordPress 有许多备份插件。下面我将向您展示我认为最适合进行备份的插件。
  4. 程序化备份:如果您精通技术,可以创建一个简单的脚本来自动处理您的备份。这是我为所有 WP 网站选择的方式,我将在下面解释我是如何做的。

使用您的托管服务提供商备份您的 WP 站点?

正如我上面所解释的,如果您选择通过您的虚拟主机进行备份,您需要确保您的备份符合上述标准(即,多个备份存储在不同位置的外部服务器上)。还要确保您知道如何恢复您的站点,因为即使您可以访问备份,大多数托管公司也不提供通过一次单击轻松恢复站点的选项(由您来查找站点的文件)在备份中,找到数据库并恢复这些文件)。

但是,有一些托管公司专门从事 WordPress 网站,并因其备份质量和出现问题时的易用性而脱颖而出:

Kinsta

Kinsta 是一家专门从事 WordPress 网站的高级托管公司。除了提供许多有趣的功能(加载速度、开发环境、安全性……)之外,他们还根据所有计划提供您网站的每日备份。这些备份可以通过管理一键轻松恢复。由于 Kinsta 使用谷歌云,您的数据以冗余方式备份(不同地方的多个副本),并且在发生 OVH 等灾难时是安全的。

如果这还不够,Kinsta 仍然提供外部备份服务,将您的备份存储在 Amazon S3 或 Google 云存储上。

WP Engine

WP Engine 也是专门从事 WordPress 网站的高级主机(它是 Kinsta 的第一个竞争对手)。就像 Kinsta 一样,他们提供许多有趣的功能(速度、CDN、开发环境等),包括所有计划中的自动备份服务。他们的备份工具比 Kinsta 的更灵活,可以进行完整或部分备份,一键恢复等……此外,备份存储在 Amazon S3 上以确保完全安全。

顺便说一句,如果您是从头开始创建一个网站,我对 WP Engine 有一点偏好,自从他们收购 Studiopress 和Genesis以来,它也提供了对高级 WP 主题的访问。一服客建站平台 也具备对至少10多个Genesis子主题的访问,因为我们购买了终生无限制站点许可。

我承认这些托管公司并不便宜,它们面向较高级的用户,一服客建站平台 的托管要便宜的多。但是当您考虑到它们提供的所有功能时。对于没有技术技能而只想拥有一个安全快速的 WordPress 网站的人来说,这种专门的 WordPress 托管显然很有趣。

使用 WordPress 插件备份您的 WordPress 网站

如果您没有像 Kinsta 或 WP Engine 这样的高级主机,备份 WordPress 网站的最简单方法是使用插件。有几十个 WordPress 备份插件。因此,为了让您更轻松,我已经测试了很多,以选择我认为最好的。可以想象,所有这些插件还提供高级版本。我在下面选择了那些已经允许您在其免费版本中进行高质量备份的内容(自动在外部服务器上保存多个副本)。显然,通过订阅高级版本,您将拥有更多可能有趣的选项,但使用这些插件,最低限度是免费的。

UpdraftPlus

这显然是我研究中最常出现的插件,也是安装最活跃(和好评最多)的插件。我必须说,在测试之后,它取决于它的声誉!

该插件非常易于使用,并且已经在免费版本中提供了许多功能:

  • 自动备份,调度灵活(高级版可以完全自定义调度)
  • 选择要存储的备份副本数量
  • 在有许多位置可供选择的外部服务器上备份(亚马逊 S3、Dropbox、谷歌云、谷歌Driver等)。在高级版本中,您可以将备份存储在多个外部位置。
  • 即使在免费版本中也可以自定义备份内容(包括/排除某些文件夹)

高级版对我来说的主要优点是

  • 更准确地安排备份的能力
  • 如果您使用 Amazon S3 等服务来存储备份,增量备份选项将节省您的资源和数据传输成本
  • 在多个外部服务器上存储备份的选项

在我的测试过程中,我花了 2 分钟将插件连接到我的 Amazon S3 帐户,在外部服务器上进行备份并测试以恢复备份。我将在下面放一些插件菜单的屏幕截图,以便您了解。但除此之外,您可以在此处找到使用此插件的完整指南。

WPvivid Backup

这是另一个流行的插件,用于备份您的 WP 站点(超过 100’000 次安装,几乎只有 5 星评论)。同样,这不是巧合,因为就像 Updraft plus 一样,这个插件在免费版本中已经非常广泛并且非常易于使用。

使用免费版本,您已经可以:

  • 安排自动备份(为了获得更大的灵活性,您需要高级版本)
  • 选择要存储的备份副本数
  • 定义多个外部存储,如 Amazon S3、Google Drive、Dropbox 等……
  • 自定义您想放入备份中的内容(即使它比免费版本的 Updraft plus 灵活一点)

我认为高级版的主要优点如下:

  • 在不同时间安排多个自动备份到不同的外部存储
  • 准确定义要包含在备份中的内容
  • 启用增量备份选项以避免使用不必要的资源

就像 Updraft plus 一样,这个插件非常容易使用。在 3 分钟内,我在 Amazon S3 上设置了我的外部存储并进行了第一次备份。恢复功能也很容易使用。

其他插件

老实说,我必须尝试过十几个其他 WP 备份插件,但没有一个在其免费版本中提供与 Updraft plus 和 WPVivid 一样多的功能。当您想要连接外部存储(如 Amazon S3)时,大多数其他插件要求您付费。所以我推荐这两个插件,因为如果您需要更多高级功能,您已经可以免费进行体面的备份并升级到高级版本。

我想添加WP Backup 插件,它非常新,非常有前途。它仍在开发中,目前尚无法连接外部存储。但它已经有一些有趣的自定义选项,它应该很快就会允许在其免费版本中连接到主要的外部存储提供商。一个值得关注的插件?

对您的 WordPress 网站进行编程备份

最后,您还可以以编程方式备份​​您的 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 <backup path> <docker container name> <database password> <database name> <number of backup kept>"
    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 <mount> <server backup path> <s3 backup path>"
    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/path2
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备份插件比较。

类别:WordPress教程

本文收集自互联网,转载请注明来源。
如有侵权,请联系 wper_net@163.com 删除。

评论 (0)COMMENT