WordPress 建站基础十八:史上最全最透切wordpress备份教程(snapshot, backups,数据库与文件备份)

最后更新时间: 2024年1月2日

一、服务器(vps)全量备份wordpress策略

一般服务器上会有两种全量备份策略,全量备份即 wordpress 的文件和数据库一起备份,拿 vultr 来说,后台有快照和备份两种选择,一般都是额外收费的

1. 快照(Snapshot):

定义:快照是系统某一时刻的完整状态拷贝,包括了数据库和文件系统的状态。
特点:快速创建和恢复,适用于临时备份和系统状态的即时保存。
使用场景:在进行重大更新或测试新功能时创建快照,以便能快速还原到修改前的状态。

snapshot-vultr
snapshot-vultr

快照即是整个操作系统级别的备份,这个一般是收费的,不过比较便宜,如下截图为 vultr 收费标准,但快照是某个时刻的状态,一般情况下用的不是太多,除非进行重大的软件升级为防止出问题会创建快照。

2. 备份(Backups):

定义:备份是定期创建的数据副本,通常只包括文件和数据库。
特点:定期执行,适用于长期数据保护和灾难恢复。
使用场景:定期备份网站数据,包括文件和数据库,以防数据丢失或损坏。

备份是指wordpress 文件和数据库的备份,开启backups 功能也是收费的(费用根据 vps 配置不同收费不同),如下图,可以设置当前 VPS 的自动备份策略。比如可以定时每天备份一次(Daily)、隔一天备份一次(Every Other Day)、每周备份一次(Weekly)和每月备份一次(Monthly),还能细化到一天的什么时间点进行备份。

Backups
Vultr Backups

注意:snapshot 和 backups 都是针对整个vps 级别的数据自动备份,并且收费,如果预算充足当然开启是最好的,如果预算不足,则可以考虑手动备份。

二、wordpress手动备份策略

1. 文件备份

wordpress 文件备份是指 wordpress 安装文件,如下,其中最重要的是 theme 即主题的备份,因为其它文件都可以在 wordpress 网站直接下载,不过一般我们还是会把整个 wordpress 网站文件进行备份。一般的方法是定期自己使用 ftp/sftp 等软件把网站文件下载到本地电脑进行备份,但这种策略比较麻烦,并且每次下载文件也比较浪费时间,这里我推荐大家使用第二种方法,使用 gitHub 进行网站文件备份,好处多多。

使用github托管备份wordpress文件

2. 数据库备份

备份WordPress数据库是保护网站数据的关键步骤。以下是如何进行数据库备份的几种策略:

2.1 通过phpMyAdmin备份:

– 登录到phpMyAdmin。
– 选择您的WordPress数据库。
– 点击“导出”。
– 选择导出格式,通常是SQL。
– 点击“执行”,下载数据库备份文件。

phpmyadmin-export
phpmyadmin-export
export-sql
export-sql

2.2 通过命令行备份:

– 使用SSH连接到您的服务器。
– 使用以下命令导出数据库:(lnmp 默认安装了 mysqldump)
mysqldump -u username -p database_name > /root/backup.sql
– 然后输入数据库密码,比如 root 用户密码。
– `backup.sql`文件包含了数据库的完整备份,可以把 backup.sql 下载到本地或者使用云存储,当然也可以使用 github 对备份的 sql 文件进行跟踪与版本控制功能。

mysqldump-export
mysqldump-export

2.3 WordPress插件备份(隐私性差一些,高级备份策略收费):

– 使用如 UpdraftPlus, BackupBuddy等WordPress备份插件自动备份。
– 这些插件可以定期备份数据库并存储在云存储服务如Dropbox, Google Drive等。

2.4 .ibd 二进制备份(不推荐)

还有一种快速但不是非常推荐的做法,直接备份数据库二进制文件,比如在InnoDB存储引擎的表空间文件 .ibd, 假如你的数据库名为 wordpress-db,则在使用lnmp的前提下在 /usr/local/mysql/var/wordpress-db 这个目录下可以看到你的表文件,即假如你这个数据库中有一个 user 表,则这个目录就会有一个 user.ibd 二进制文件,直接备份这个文件也可以,这样做的速度很快,不过缺点就是要确保 mysql 版本一致,并且.ibd 不包括表的结构定义等信息,而且如果在备份的过程中源数据正在使用则备份的数据可能会不一致,并且直接操作文件也会遇到文件系统的权限问题,这些都需要对 linux 操作比较熟悉才可以

一般我们正常网站的数据库文件都不大,因为一般我们网站文章都在1万篇以内,通过 mysqldump 命令或者 phpmyadmin 手动导出的 sql 文件不大,速度也挺快,足够用了,使用 mysqldump 导出 mysql可以做成 .sh 可执行脚本配合 linux 的 crontab 可做成定时备份脚本,假设.sh 脚本为: sqlbackup.sh 内容如下

#!/bin/bash
DATE=$(date +%Y-%m-%d_%H:%M) #获取当前日期时间作为备份文件名的一部分
DBNAME="your_database" #要备份的数据库名称
USERNAME="your_username" #连接数据库的用户名
PASSWORD="your_password" #连接数据库的密码
BACKUPDIR="/path/to/backup/" #备份存放目录

if [ ! -d "$BACKUPDIR" ]; then
mkdir -p $BACKUPDIR #创建备份存放目录(若不存在)
fi

FILE="$BACKUPDIR$DBNAME-$DATE.sql" #生成备份文件路径及名称

echo "开始备份..."
mysqldump --user=$USERNAME --password=$PASSWORD $DBNAME > $FILE
echo "备份完成!"

假设 sqlbackup.sh 在 /root 文件夹下

首先cd root, 然后 执行 chmod +x sqlbackup.sh 给sqlbackup.sh 可执行权限

其次 执行 crontab -e即编辑 crontab 定时任务,输入如下

0 3 * * * /root/sqlbackup.sh >> /root/sqlbackup.log 2>&1

>> /root/sqlbackup.log 表示将标准输出(stdout)附加到 /root/sqlbackup.log 文件。

2>&1 表示将标准错误(stderr)也重定向到标准输出(即同一个日志文件)

注意:这些操作请使用 root 用户操作,不然权限可能不够

这样就可以把 指定位置生成的 sqlbackup.sql 下载到本地或者使用云存储,当然也可以使用 github 对备份的 sql 文件进行跟踪与版本控制功能 见上文链接。

wordpress 备份策略tips

1. 定期对整个WordPress网站(包括文件和数据库)进行全面备份是日常运营很重要的一个步骤,不要等出问题了再做这件事情。
2. 根据网站更新频率设定备份周期,如每日、每周或每月。
3. 保留多个备份副本,并存储在不同的位置,比如本地硬盘和云存储服务,还可使用 github 进行备份及版本跟踪操作。
4. 如果有预算可使用 vps 自带的全量备份,简单快捷,出问题后能够迅速恢复