帝国 CMS 备份不全怎么办
学完这篇,你能定位帝国CMS备份不全的具体原因,并用手工分表、mysqldump 和整站打包三种方式补出一份能完整恢复的备份。
第一步:检查备份记录,确认缺什么
这一步要登录后台,找出备份到底少了数据库表还是文件,得到一份明确的缺失清单。打开 http://你的域名/e/admin/,输入管理员账号密码。进入顶部菜单“系统” -> 左侧“备份与恢复数据” -> “备份数据”。在“备份记录”里看最近一次备份的时间、分卷数量、文件大小。再到服务器上进入 /e/data/backup/ 目录,查看 .sql 文件数量。如果数据库有 50 张表,恢复后只剩 30 张,就是表没选全;如果文章都在但图片打不开,就是 d/file 附件目录没备份。
注意:不要直接删旧备份,先复制一份到本地再操作。
第二步:重新做一次完整的数据库备份
这一步要在后台把全部数据表重新备份一遍,得到分卷 .sql 文件。进入“系统” -> “备份与恢复数据” -> “备份数据”,勾选“备份全部数据表”,不要只选“备份非系统表”。在“按文件大小分卷备份”里,每卷大小填 1024 KB,备份间隔填 1 秒。如果表很大,把“备份间隔时间”改成 2-3 秒。点击“开始备份”。如果备份到一半白屏,先改 php.ini:max_execution_time = 300,memory_limit = 256M,post_max_size = 64M,改完重启 PHP。
注意:备份前在“系统” -> “数据表管理”里确认表数量,通常前缀是
phome_,自定义前缀要记下。备份完成后核对文件数量。
第三步:手动补备份附件、模板和配置文件
这一步要把数据库之外的网站文件打包下载,得到网站文件压缩包。数据库备份不含附件和模板。用 FTP 或宝塔面板文件管理,进入网站根目录。需要打包下载:/d/file/(附件图片)、/e/data/(备份和配置)、/skin/(模板皮肤)、/e/template/(模板文件)、/config/config.php(数据库配置)。在宝塔面板里右键这些目录,选择“压缩”,格式选 tar.gz,下载到本地。
注意:
/e/data/里的backup目录可能很大,可以只保留最近一次完整备份。config.php里含数据库密码,下载后不要外传。
第四步:用 mysqldump 做一次命令行全量备份
这一步要在 SSH 里用命令导出数据库并打包网站,得到 .sql 和 .tar.gz 两个文件。SSH 登录服务器后执行:
mysqldump -u 数据库用户名 -p 数据库名 > /home/backup/empirecms_full.sql
回车后输入密码。如果数据库表前缀是 phome_,可以加 --default-character-set=utf8mb4。再打包网站目录:
tar -czvf /home/backup/empirecms_site.tar.gz /www/wwwroot/你的网站目录
注意:mysqldump 备份会锁表,建议凌晨操作。MySQL 8.0 用 mysqldump 要加
--set-gtid-purged=OFF,避免恢复时报错。
第五步:验证备份是否完整
这一步要检查备份文件里的表数量和附件,确认备份能恢复。把 .sql 文件用 Notepad++ 打开,搜索 CREATE TABLE,统计数量,和后台“数据表管理”里的表数量对比。把 .tar.gz 解压,检查 d/file 下最近上传的图片是否存在。有条件的话,在本地装一个帝国CMS 7.5,用“系统” -> “备份与恢复数据” -> “恢复数据”导入 .sql,再覆盖文件,看首页、栏目、文章、图片是否正常。
注意:恢复前先备份现有数据,避免覆盖出错。
小结
- 备份不全通常不是帝国CMS的 bug,而是没选全表、没备份附件、PHP超时中断。
- 后台备份要选“备份全部数据表”,每卷
1024KB,间隔1秒,并调大 PHP 超时。 - 数据库用 mysqldump 更稳,附件和模板用 tar 打包。
- 备份后必须验证:数
CREATE TABLE数量、查d/file图片、本地恢复测试。 - 保留至少两份备份,一份服务器,一份本地。
原文链接:https://www.gj0.com/thread-1219.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。