正在加载今日诗词...
lishijiLishiji  2025-06-06 18:40 深谋之道 隐藏边栏 |   抢沙发  1 
文章评分 0 次,平均分 0.0

恢复过程通常是备份过程的逆向操作,主要也分为数据库恢复和网站文件恢复两大部分。

插图
 

一、准备好备份文件

网站文件备份,例如:/opt/wordpress_backup/files-2025-06-05.tar.gz(网站文件)

数据库备份,例如:/opt/wordpress_backup/db-2025-06-05.sql(数据库内容)

二、手动恢复

1.解压网站文件

#-x:表示“解包”,英文是 extract
#-z:表示“解压缩”,因为这个 .tar.gz 文件是 gzip 压缩过的
#-f:表示“后面跟的是文件名”,必须紧跟文件路径
#-C /:表示“解压到 / 这个目录下”,也就是按照打包时的路径,还原回系统中原来的位置(比如 /var/www/html)
tar -xzf /opt/wordpress_backup/files-2025-06-05.tar.gz -C /

2.恢复数据库

mysql -uzhangsan -pabc123 wordpress < /opt/wordpress_backup/db-2025-06-05.sql

三、自动恢复

1.创建恢复脚本

sudo nano /opt/restore_wordpress.sh

脚本内容如下:

#!/bin/bash

# ===================================================
# WordPress 站点恢复脚本(带交互提示和详细中文注释)
# 使用者:zhangsan 用户,LNMP 环境
# ===================================================

# === 基础设置 ===

# 网站目录(WordPress 安装位置)
WEB_DIR="/var/www/html"

# 数据库配置
DB_NAME="wordpress"     # 数据库名
DB_USER="zhangsan"      # 数据库用户
DB_PASS="abc123"        

# 备份文件所在目录
BACKUP_DIR="/opt/wordpress_backup"

# 终止脚本时,如有错误,自动退出
set -e

# === 开始交互 ===

echo "========== WordPress 备份恢复工具 =========="
echo "备份目录:$BACKUP_DIR"
echo "当前时间:$(date)"
echo

# === 第一步:列出所有可用的备份日期 ===

echo "可用的备份文件如下:"
# 只提取文件中的日期部分,例如 files-2025-06-05.tar.gz => 2025-06-05
ls $BACKUP_DIR/files-*.tar.gz | sed 's/.*files-\(.*\).tar.gz/\1/' | sort

echo
# 读取用户要恢复的日期
read -p "请输入要恢复的备份日期(例如 2025-06-05): " BACKUP_DATE

# 组合完整路径
FILE_BACKUP="$BACKUP_DIR/files-$BACKUP_DATE.tar.gz"
DB_BACKUP="$BACKUP_DIR/db-$BACKUP_DATE.sql"

# === 第二步:检查备份文件是否存在 ===

if [[ ! -f "$FILE_BACKUP" || ! -f "$DB_BACKUP" ]]; then
  echo "❌ 找不到该日期的备份文件,请确认输入正确。"
  exit 1
fi

# === 第三步:二次确认 ===

echo
echo "⚠️ 警告:这将覆盖现有的网站文件和数据库数据!"
read -p "你确定要恢复到 $BACKUP_DATE 的状态吗?(yes/no): " CONFIRM

if [[ "$CONFIRM" != "yes" ]]; then
  echo "操作已取消。"
  exit 0
fi

# === 第四步:恢复网站文件 ===

echo
echo "开始恢复网站文件..."

# 解压 tar 文件
# 参数解释:
# -x :解压模式(extract)
# -z :使用 gzip 解压(.tar.gz)
# -f :后面跟的是文件名
# -C / :解压到系统根目录(恢复到原始路径)
# --overwrite :强制覆盖已有文件(不提示)
tar -xzf "$FILE_BACKUP" -C / --overwrite

echo "✅ 网站文件恢复完成。"

# === 第五步:恢复数据库 ===

echo
echo "开始恢复数据库..."

# 检查数据库是否存在
DB_EXIST=$(mysql -u"$DB_USER" -p"$DB_PASS" -e "SHOW DATABASES LIKE '$DB_NAME';" | grep "$DB_NAME" || true)

if [[ -z "$DB_EXIST" ]]; then
  echo "🔍 数据库 $DB_NAME 不存在,正在创建..."
  mysql -u"$DB_USER" -p"$DB_PASS" -e "CREATE DATABASE $DB_NAME DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
  echo "✅ 数据库创建完成。"
fi

# 导入 SQL 文件
mysql -u"$DB_USER" -p"$DB_PASS" "$DB_NAME" < "$DB_BACKUP"

echo "✅ 数据库恢复完成。"

# === 第六步:完成提示 ===

echo
echo "🎉 恢复成功!你的网站已恢复到【$BACKUP_DATE】的状态。"

2.设置执行权限

chmod +x /opt/restore_wordpress.sh

3.执行脚本

/opt/restore_wordpress.sh

 

声明:本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

lishiji
Lishiji 关注:0    粉丝:0
仙之巅,傲世间!生当作人杰,死亦为鬼雄。

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享