说实话,宝塔面板的默认备份功能,对大多数用户来说确实够用。但真到了需要精细化操作的时候,你就会发现它有点“不够用”——比如,我就只想备份某个站点的附件目录,而不是整个网站。这时候,面板自带的“网站备份”功能就帮不上忙了,它只支持整站或数据库,没法单独选一个子目录出来。

那怎么搞呢?答案藏在命令行里——用计划任务配合 Shell 命令,直接写备份脚本。听起来有点绕,但实际走一遍,其实很清晰。

备份命令:用 tar 打包指定目录,别用面板自带的“网站备份”

想备份特定目录,像 /www/wwwroot/example.com/uploads 这种,必须绕过图形界面,直接写 shell 命令到计划任务里。关键点有三个:路径必须绝对、权限必须对、压缩包名要带时间戳防止覆盖。

具体命令长这样:

tar -zcf /www/backup/uploads_$(date +\%Y\%m\%d_\%H\%M).tar.gz -C /www/wwwroot/example.com uploads

这里有几个细节值得注意:

在宝塔“计划任务”里添加 Shell 脚本,不是直接粘贴命令

很多人习惯直接在计划任务的“Shell 脚本”输入框里贴一大段命令,但这样容易出问题——引号转义、换行截断,调试起来很头疼。更稳妥的做法,是把命令写进一个脚本文件,然后让计划任务去调用它。

操作步骤:

这样写,后面想改命令、加逻辑,都直接在脚本里改,比在面板输入框里折腾省心多了。

备份后自动清理 7 天前的旧文件,防止磁盘撑爆

不加清理逻辑,备份文件会越堆越多,迟早把磁盘撑满。宝塔计划任务本身没有“保留 N 份”的选项,所以得手动加一条 find 删除命令。

在脚本末尾补上这行:

find /www/backup -name "uploads_*.tar.gz" -mtime +7 -delete

说明:

验证备份是否成功,不能只看计划任务“执行成功”状态

宝塔计划任务显示“执行成功”,只代表 Shell 进程退出码是 0,不代表 tar 真的打完了、没报错、文件能解压。这一步如果漏掉,可能备份了几个月,结果发现全是空包,那才叫崩溃。

所以,必须加校验:

这里最容易被忽略的一点是:tar 可能因为权限不足跳过了某些子目录,但依然返回退出码 0。所以,日志记录和抽样检查,两者缺一不可。

宝塔面板如何备份网站特定目录_自定义计划任务路径备份

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