宝塔自动备份:网站文件和数据库分开设置

网站搬家或出故障时,只有网页文件往往不够。文章、用户资料和订单通常还在数据库里。本文为宝塔 Linux 面板管理的网站,以及面板中的 MySQL、MariaDB 数据库分别建立备份任务;其他数据库类型先确认当前面板版本是否提供对应功能。

先列清楚要保留的两部分

在“网站”里确认站点目录,在应用配置中确认它实际使用的数据库名称。不要只按相似名称猜测数据库,更不要把数据库口令截图发出去。网站备份主要覆盖文件,数据库备份用于导出对应数据库,两者不能互相代替。

数据库在别的服务器上,或文件放在独立对象存储中时,这台面板的本地任务不一定能覆盖它们。先把这些位置列出来,再安排各自的备份。已有自动任务也先核对,避免重复执行造成磁盘和数据库压力。

在计划任务里分别创建备份

进入左侧“计划任务”,点击“添加任务”。添加窗口打开后,先切换“任务类型”。下图显示的是默认 Shell 脚本表单:备份网站时需要改选“备份网站”,备份数据库时另建一项并选“备份数据库”。切换后再设置备份对象,不需要自己往脚本框里粘贴备份命令。

宝塔添加计划任务窗口中的任务类型与执行周期

宝塔官方文档中的计划任务窗口示例,用于定位上方“任务类型”和“执行周期”。图中的 Shell 脚本类型及 01:30 时间不是本文的备份配置,请先切换类型,再按业务需要设置。

设置项 网站备份 数据库备份
备份对象 选择已核对的站点 选择应用真正使用的数据库
执行周期 按文件更新频率安排 按数据变化量与可接受丢失时间安排
保存位置 选择实际可写且有空间的目标;外部存储还要检查连接状态与权限
保留份数 按需要覆盖的历史时间设置,并给下一次压缩和导出留出空间

任务名称可以写成“站点名-文件每日备份”和“数据库名-数据库每日备份”,便于一眼区分。只备份自己选中的对象;页面没有多选或“所有”选项时,就按实际对象分别建立任务,不照搬其他版本截图。

例如数据库安排在 02:10、文件安排在 02:30,只是错开任务的示例,不代表两份数据一定处于同一时刻。订单、库存等要求严格一致的系统,需要应用支持的一致性备份或安排停止写入的维护窗口,不能只靠相隔二十分钟保证对应关系。

先手动执行一次,再等待定时结果

保存后检查任务是否启用、周期是否正确、服务器时区是否符合预期。必要时在终端运行 date和timedatectl查看,不要把自己电脑的时间直接当成服务器时间。

  1. 选择业务较空闲的时间,对新任务执行一次“执行”。大站点和数据库导出可能产生明显磁盘、CPU 或数据库负载,不要连续点击。
  2. 打开该任务的执行日志,确认开始、结束时间和报错信息。
  3. 按日志或任务设置给出的路径检查新文件,核对修改时间、大小及对应对象。
  4. 等到下一个定时执行点,再确认任务确实自动生成了另一份备份。

“手动执行成功”只说明这次执行完成,不能证明调度正常。任务列表上的启用状态也不能代替文件检查。日志没有结束记录、文件大小异常或更新时间没变,都需要继续定位。

保留份数,要算上空间和历史跨度

如果一份文件备份约 2 GB,保留 7 份就至少需要为这部分留出约 14 GB,还没有计算数据库、临时压缩文件和下一份新备份。数字只是估算,要按实际文件大小变化预留余量。

降低保留份数可能导致旧备份在后续清理时被移除。调整前先把关键时间点的备份另存,不要为了节省一点空间,把仅存的可用恢复点清掉。清理规则也要与外部存储的生命周期设置分别核对。

同一台服务器上的备份能方便处理误改,但整盘损坏或机器不可用时仍可能一起丢失。至少保留一份不依赖该实例的副本,并限制下载权限。数据库导出文件和网站配置可能包含个人资料、密钥或口令,不能存放在可被网页访问的目录。

恢复演练才是最后一步

下载一份备份到独立环境,先检查压缩包能否读取,再恢复到临时目录和临时数据库,验证关键文件、表和记录是否齐全。压缩包能打开,并不能证明应用一定能正常使用这些数据。

恢复环境不要直接连接正式支付、邮件、短信、定时任务和业务开通接口。完成隔离后,再验证登录、页面和业务数据。数据库操作可参照MySQL 隔离恢复或MariaDB 备份与隔离恢复。

备份任务失败时,优先查目标空间、目录权限、数据库连接及外部存储连接。把任务名、发生时间、错误日志和目标路径整理出来,避免只凭“任务已经开启”认定数据有保障。