咱们今天要聊的,是一个典型的宝塔面板备份问题:计划任务明明配好了,备份目录也在,但那个.sql.gz文件就是迟迟不出现。很多用户卡在这里,翻来覆去检查数据库配置,却忽略了一些更隐蔽的环节。

为什么宝塔面板设定的自动备份计划没有生成压缩包_排查磁盘空间是否已满或目录权限错误

下面这几个排查方向,基本覆盖了这类问题的绝大多数根因。从最简单的 cron 状态开始,一步一步往下走。

备份目录存在但没生成任何 .sql.gz 文件:先确认 cron 是否真执行了

宝塔界面上显示“任务已添加”,这并不等于系统真的调度过它。一个非常常见的现象是:crond 服务停了,或者宝塔写入的 crontab 条目根本没生效,任务就那么躺在那里,永远不会触发。

怎么验证?操作很直接:

mysqldump 命令找不到或权限拒绝:检查 PATH 和 Python 环境

宝塔从 5.9 版本之后使用独立的 Python 环境来执行备份脚本。一旦 /www/server/panel/pyenv/bin/python 这个文件损坏、没了执行权限,或者 backup.py 被意外清空,整个备份流程就会静默退出,连个日志都不留下。

排查方法很简单:

磁盘空间足够但备份中断:df -hdu -sh 必须一起看

一个很常见的假象是:df -h /www 显示还有 10% 的空间,但备份就是失败。原因在于 mysqldump 在压缩之前,会先往磁盘写一份临时未压缩的 .sql 文件,这个文件的体积通常是最终 .gz 文件的 3 到 5 倍。如果磁盘只剩 2GB,而数据库导出的原始 SQL 需要 8GB,那备份进程就会卡在中间然后静默退出,连个提示都没有。

操作建议:

目录权限看着对,但就是写不进:父目录权限和 SELinux 是隐形杀手

很多人只盯着 /www/backup/database 这个目录的用户和权限——属主是 www:www、权限 755,看起来没问题。但问题往往出在它的父目录 /www/backup 上:如果这个父目录属主是 root:root 且权限是 700,那 www 用户连进入这个目录都做不到,更不用说去创建子目录或文件了。

一步步排查:

说到底,真正卡住备份流程的地方,往往不在数据库本身,而是在 /www/backup 这一层目录树的访问链路上——从根目录到目标文件夹,每一步的属主、权限、SELinux 上下文、挂载选项,缺一不可。

本文转载于:https://www.php.cn/faq/2339794.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。