用宝塔面板备份 WordPress(程序文件 + 数据库):手动/自动、异地备份与一键还原全攻略
本文最后更新于 30 天前,如有失效请评论区留言。

新手可用!3 步完成手动备份,5 分钟搞定自动化与异地备份,并还原网站。含踩坑提示与最佳实践清单。

声明

这篇是给“想稳住自己站点”的同学看的:步骤不难,但一定记住——WordPress 的备份分两块:程序文件 + 数据库,缺一不可。只备文件不备库,恢复时就会“空壳站”;只备库不备文件,主题/插件/上传资源就对不上。还要提醒一下:备份≠万无一失,建议定期把备份拿到本地/云上留底,最好按 3-2-1 原则来做(3 份副本、2 种介质、1 份异地),这样心里才更踏实。

为什么要备份 & 备份到底包含啥

  • 风险来自硬件故障、误操作、黑客、插件/主题冲突、服务商问题等;定期备份是“最后一道保险”。

  • 完整备份=程序文件 + 数据库

    • 程序文件:WP 核心、主题 wp-content/themes/、插件 wp-content/plugins/、媒体 wp-content/uploads/、配置/根目录文件等;

    • 数据库:文章、页面、评论、设置、用户等全部内容。

  • 菜鸡也能翻车的典型:只备程序文件没备数据库,结果还原不了

手动备份:程序文件 + 数据库

备份程序文件

面板 →「网站」→ 找到你的站点 → 点“备份”(有或者无备份) → 备份站点。备份完成后可直接“下载”。

备份文件(站点)在服务器默认目录一般为:/www/backup/site/站点名/(走面板“备份”生成)。

备份数据库

面板 →「数据库」→ 找到 WP 对应的数据库(不确定看 wp-config.phpDB_NAME)→ 点“备份”(有或者无备份) → 备份数据库,随后即可“下载”。

备份文件(数据库)默认在:/www/backup/database/数据库名/,格式通常为 .sql.sql.gz

牢记:一次“完整备份”= 上面两个步骤都要做。

自动化备份:计划任务 & 保留策略

  • 面板 →「计划任务」→ 添加任务

    • 任务类型选“备份网站”;设置周期(建议每日/每周)、保留份数(例如保留最近 7–14 份)。

    • 再新建一个“备份数据库”的任务,与网站任务同频。

  • 自动化能防止“忘记备份”的人祸,建议把任务时间放在低峰时段(如凌晨 2 点),避免影响业务。

异地备份:把备份同步到云端

  • “备份到”除了服务器磁盘,也可选第三方云(需在面板应用/插件里对接,如 OSS、COS、S3、Google Drive 等),用于异地备份。

  • 推荐遵循 3-2-1 备份原则:3 份副本、2 类介质、1 份异地;并且定期做一次恢复演练验证备份可用。

如何从备份“原地满血复活”

恢复=恢复文件 + 恢复数据库,两步都要做!

恢复网站文件

  • 找到站点备份档:/www/backup/site/站点名/

  • 将选定备份复制到站点根:/www/wwwroot/站点名/

  • (可选)清理根目录中非备份文件,仅保留要恢复的备份

  • 解压备份归位,确认权限无误。

恢复数据库

面板 →「数据库」→ 目标库的“备份/恢复”→ 选中要恢复的 .sql 备份 → 确认还原。完成后建议清缓存并核验前端功能

在群晖NAS里面定时下载备份

在群晖上准备 SSH 免密

登录群晖 SSH/终端:

# 进入家目录
cd ~
mkdir -p ~/.ssh  # 如果不存在
# 设置用户主目录权限
chmod 755 /volume1/homes/<用户名>
 
# 设置 .ssh 目录权限
chmod 700 /volume1/homes/<用户名>/.ssh
 
# 设置 authorized_keys 文件权限
chmod 600 /volume1/homes/<用户名>/.ssh/authorized_keys

# 生成密钥(推荐 Ed25519)
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -N ""

# 将公钥内容追加到阿里云服务器的 authorized_keys, 路径一般为(换行添加一条记录) :/root/.ssh/authorized_key

# 预先写入 known_hosts,避免计划任务首连时交互
ssh-keyscan -p 22 ALIYUN_IP >> ~/.ssh/known_hosts  # 需要安装套件 SynoCli Network Tools

chmod 600 ~/.ssh/id_ed25519 ~/.ssh/known_hosts

写一个 SSH 客户端配置,后面脚本更简洁

Host ecs
HostName 服务器ip      
User 用户名            
Port ssh的端口(默认22) 
IdentityFile ~/.ssh/id_ed25519

保存后:chmod 600 ~/.ssh/config

测试连通:ssh aliyun "ls -l /www/backup"(第一次连接应直接成功且无需输入密码)

准备备份脚本

你可以放在你常用的脚本路径,比如 /home/用户名/ecs_www_backup.sh,假设保存的路径为 /volume3/网站/backup,保持最近的3份,脚本命令为

#!/bin/bash
set -Eeuo pipefail
shopt -s nullglob

# —— 基本参数 ——
REMOTE="ecs"                       # 对应 ~/.ssh/config 里的 Host(或直接写 user@host)
REMOTE_PATH="/www/backup/"            # 阿里云服务器上的备份目录
BASE="/volume3/网站/backup"      # 群晖上的目标父目录(包含中文名,已全程加引号)
STAMP="$(date +%Y-%m-01)"             # 每月 1 号的时间戳目录名
TARGET="${BASE}/${STAMP}"
LAST="${BASE}/_last"                  # 指向最近一次快照的软链接(用于增量/硬链接复用)
LOG="/home/用户名/ecs_www_backup.log"
MAX_SNAPSHOTS=3                       # 最多保留最近 3 份

# —— 目录准备 ——
mkdir -p "$BASE" "$TARGET" "$(dirname "$LOG")"

# —— 增量同步(硬链接),首次没有 _last 就全量,同步时删除目标多余文件保持镜像 ——
LINK_OPTS=()
if [ -e "$LAST" ]; then
  LINK_OPTS=(--link-dest="$LAST")
fi

rsync -av --delete --no-perms --no-owner --no-group --omit-dir-times \
  -e "ssh -F $HOME/.ssh/config" \
  "${LINK_OPTS[@]}" "${REMOTE}:${REMOTE_PATH}" "${TARGET}/" > "$LOG" 2>&1

# —— 更新最近一次快照的软链接 ——
rm -f "$LAST"
ln -s "$TARGET" "$LAST"

# —— 只保留最近 3 份快照:按目录的修改时间倒序,跳过最新 3 个,删掉其余 ——
snaps=( $(ls -1dt "$BASE"/20[0-9][0-9]-[01][0-9]-01 2>/dev/null || true) )
if (( ${#snaps[@]} > MAX_SNAPSHOTS )); then
  to_delete=( "${snaps[@]:MAX_SNAPSHOTS}" )
  for d in "${to_delete[@]}"; do
    echo "Pruning old snapshot: $d" | tee -a "$LOG"
    rm -rf -- "$d"
  done
fi

echo "Backup finished at $(date)" | tee -a "$LOG"

脚本保存后,执行

chmod +x /home/用户名/ecs_www_backup.sh

权限准备

确保账号对共享文件夹“备份”(即 /volume3/网站/backup)有 读写 权限:
“控制面板 → 共享文件夹 → 选中 备份 → 编辑 → 权限 → 给 gang 授权 读/写”。

在群晖设置计划任务(每月1号自动执行)

在群晖 – 控制面板 – 任务计划 – 新增 – 计划的任务 – 用户定义的脚本 – 在常规一栏:任务名称:aliyun_www_backup(可自定) – 用户帐号:自己的账号或者root(要看自己的密钥是在哪一个账号里面,并且要保证该账号拥有读写权限)  – 在计划一栏:日期 – 在以下天中运行 – 重复: 每月 第一个 周一 开始时间设为2:00 (可自定)- 在任务设置一栏 – 勾选通过电子邮件发送运行详情并设置邮箱(可自定) – 用户定义的脚本(目录自定义):

/bin/bash /home/用户名/ecs_www_backup.sh > /home/用户名/ecs_www_backup.log 2>&1  # >> 表示将输出追加到日志文件中, > 表示清除上一次的输出,即覆盖写入

保存后,先点一次“运行”做首测;再查看 /var/log/aliyun_www_backup.log 与目标目录是否正确落地。

常见坑位与排错清单

  • 只备了文件没备库 → 无法完整还原(典型翻车场景)。

  • 忘设自动化 → 人一忙就没备份,建议立刻配置计划任务,站点与数据库各一个。

  • 备份只放服务器 → 一旦硬盘/主机翻车,备份也一起没了;务必上云或下载到本地,遵循 3-2-1。

  • 恢复后异常 → 清缓存、检查 .htaccess / Nginx 重写、确认 wp-config.php 数据库连接正确,再看插件/主题兼容。

  • 存储占满 → 设“保留份数”,定期清理老备份;大改前做一次手动备份再动手。

🌟 亲爱的少年哟,你已经通关啦!前方是星辰大海,休息一下再出发吧~

— 完 —

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇