回收站里大概率有,先检查宝塔面板文件回收站;若为空则查自动备份快照;数据库需单独恢复;最后清理PHP缓存并硬刷新。

回收站里有没有?先看这个再慌
宝塔面板默认开启文件回收站,只要没手动关过,前一天删的网站目录大概率还在里面——这是最快、最安全的恢复路径。但很多人一着急就跳过这步,直接去翻备份,结果白忙活半天。
- 登录面板后,点左侧【文件】→ 右上角【回收站】按钮(不是“数据库回收站”,那是另一处)
- 回收站里显示的是完整路径,比如
/www/wwwroot/your-site.com,注意核对名字和时间戳,别选错站 - 勾选整个目录(含子目录),点顶部【恢复】,系统会原路放回,不改权限、不丢软链
- 如果回收站是空的,别硬刷:要么你关过
文件回收站开关(去【设置】→【安全设置】里确认),要么是用rm -rf或 FTP 工具删的——这两种方式根本不会进回收站
回收站空了?查自动备份快照
宝塔每天凌晨会自动生成面板+网站+数据库的全量快照,存放在 /www/backup/panel/,只要没手动清过,前天、大前天的压缩包大概率还在。这不是“可能有”,而是“默认就有”,只是很多人不知道路径在哪。
- 连服务器终端,运行:
ls -t /www/backup/panel/ | head -n 3,看最近几个panel_*.tar.gz文件的日期 - 挑一个误删前的快照,比如
panel_20260331.tar.gz,解压到临时目录:tar xzf /www/backup/panel/panel_20260331.tar.gz -C /tmp/restore/ - 只同步网站源码部分(别动面板配置):
rsync -av --delete /tmp/restore/www/wwwroot/your-site.com/ /www/wwwroot/your-site.com/ - 恢复后立刻检查
index.php是否存在、chmod权限是否还是www:www,否则 500 错误马上出现
数据库也丢了?别只还原代码
网站源码恢复了,但首页空白或报“数据库连接失败”,大概率是关联的 MySQL 库也被删了。回收站里的数据库和文件是分开管理的,必须单独操作,漏一步网站就跑不起来。
- 点左侧【数据库】→ 右上角【回收站】→ 找同名库(如
your_site_db),恢复它 - 如果数据库回收站也是空的,就去
/www/backup/database/找对应日期的.sql.xz文件,用xz -d解压后再导入 - 导入前务必确认字符集一致,常见报错
Incorrect string value就是因为备份是utf8mb4,而当前库还是utf8,得先执行:ALTER DATABASE your_site_db CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci - 别在生产库上直接全量导入——万一只是删了一张表,用
zcat backup.sql.xz | grep -A 50 "INSERT INTO `orders`" > orders_restore.sql提取后单独执行更稳妥
PHP 缓存不清理,恢复等于白做
代码和数据库都回来了,但页面还是 404 或显示旧内容?十有八九是 PHP 的 OPcache 或框架缓存没清,系统还在用内存里那套已失效的字节码。
- 进网站根目录,删掉常见缓存目录:
rm -rf /www/wwwroot/your-site.com/caches/ /www/wwwroot/your-site.com/runtime/ - 重启 PHP 服务:
bt restart php(或者进面板【软件商店】点对应 PHP 版本的【重启】) - 如果用了 OPcache,进面板【PHP 设置】→【禁用函数】下方点【清除OPcache】,别只靠重启
- 浏览器访问时记得硬刷新(
Ctrl+Shift+R),避免本地缓存干扰判断
回收站和自动备份是两条独立通道,一个管“删了还能找”,一个管“删了还能退”。但两者都依赖同一个前提:你没关过回收站,也没清过 /www/backup。真到了既没回收站又没备份的地步,就得碰 binlog 或 ibd 文件恢复——那种操作不是“找回”,是“抢救”,成功率低,还容易越弄越糟。

















