冷备份恢复整个网站根目录数据的核心前提是服务完全停止且备份内容完备,需包含网站程序、web服务器配置、ssl证书、数据库导出文件及运行环境配置;恢复时须停服务、清空旧目录、解压备份并还原数据库。

冷备份恢复整个网站根目录数据,核心前提是:备份时系统已停机或网站服务(如 Nginx/Apache、PHP、数据库)已完全停止,且备份文件完整包含网站所需全部内容(如 /var/www、配置文件、SSL 证书、数据库 dump 等)。
确认备份内容是否完备
网站根目录通常位于 /var/www/html 或类似路径,但仅恢复该目录往往不够。冷备份应至少包含以下几类:
- 网站程序文件:如 WordPress、Typecho 源码、静态 HTML/PHP 文件等
- Web 服务器配置:如 Nginx 的 /etc/nginx/sites-enabled/、Apache 的 /etc/apache2/sites-available/
- SSL 证书与密钥:通常在 /etc/letsencrypt/ 或 /etc/ssl/
- 数据库导出文件:如 mysqldump 生成的 .sql 文件(冷备中需单独备份,不能只靠 tar 包含 /var/lib/mysql,除非你明确做了物理冷备且版本兼容)
- 运行环境配置:如 PHP 版本、扩展、.env 文件、权限设置等
执行恢复操作(以 tar 冷备为例)
假设你之前用如下命令做了全站冷备(停服务后执行):
恢复步骤如下:
- 确保目标机器已安装相同 Web 服务(Nginx/Apache)、PHP 版本及扩展
- 停止服务:systemctl stop nginx php8.2-fpm mysql(按实际服务名调整)
- 清空旧网站目录(谨慎!先确认无重要未备份数据):rm -rf /var/www/html/*
- 解压备份到根目录:tar -xpJf site-full-backup-2026-10-05.tar.xz -C /
- 还原数据库:mysql -u root -p your_db_name
- 检查并修复权限:chown -R www-data:www-data /var/www/html(Debian/Ubuntu)或 chown -R nginx:nginx /var/www/html(CentOS/RHEL)
- 重载配置并启动:nginx -t && systemctl start nginx
特别注意数据库冷备的兼容性
MySQL/MariaDB 的物理冷备(直接打包 /var/lib/mysql)仅适用于同版本、同架构、同初始化参数的环境。跨主机恢复极易失败。推荐做法是:
- 冷备期间用 mysqldump 导出逻辑备份(更通用、可读、易迁移)
- 若必须物理冷备,请确保源与目标系统 MySQL 版本一致、使用相同存储引擎(如 InnoDB)、且未启用 GTID 或加密表空间等高级特性
- 恢复前务必验证 SQL 文件完整性:head -n 20 /root/db-backup.sql 查看是否含 CREATE DATABASE 和 USE 语句
验证与收尾
恢复完成后不要直接上线,先做基础验证:
- 访问 curl -I http://localhost 看 HTTP 状态码是否为 200
- 检查错误日志:tail -f /var/log/nginx/error.log 或 journalctl -u nginx -n 50
- 登录数据库确认表结构和数据行数是否匹配备份前状态
- 测试表单提交、用户登录、图片上传等关键功能路径











