给腾讯云轻量服务器(Lighthouse)做每日快照。快照这玩意说白了就是整机备份,哪天手贱改坏了配置、被入侵了、或者数据库误删,直接回滚快照就完事,比啥都省心。
手动拍快照很简单,控制台点两下。但人总会忘,所以搞个脚本每天凌晨 3 点自动创建快照,同时管着数量——快照太多了占空间也费钱,超过上限就把最老的删掉。创建失败还实现发邮件告警,不然脚本挂了都不知道。

自动创建快照脚本目录结构
autobackup/ ├── auto_snapshot.php # 主脚本 ├── .env # 所有配置(密钥也在里面) ├── composer.json # 依赖声明 ├── snapshot.lock # 锁文件,防止任务重跑 ├── snapshot.log # 运行日志
.env 配置
密钥在腾讯云控制台 CAM 里申请https://console.cloud.tencent.com/cam/capi(建议用子账号,只给轻量服务器权限,别拿主账号密钥跑)。


然后:
TENCENTCLOUD_SECRET_ID=AKID你自己的 TENCENTCLOUD_SECRET_KEY=你的密钥 # 服务器配置 TENCENTCLOUD_REGION=ap-shanghai # 服务器地域ID https://cloud.tencent.com/document/product/213/6091 我的服务器是上海的 所以对应的地域ID是ap-shanghai INSTANCE_ID=lhins-你的实例ID # 控制台实例详情页能看 # 快照策略 MAX_SNAPSHOTS=2 # 最多保留几个快照 ,免费快照配额最多2个 # 邮件通知(仅失败时发送) SMTP_HOST=ssl://smtp.163.com SMTP_PORT=465 SMTP_USER=发件邮箱 SMTP_PASS=授权码 # 163/QQ邮箱要用授权码,不是登录密码 NOTIFY_EMAIL=收告警的邮箱
脚本思路
流程就三步,代码不长:
查现有快照(按实例 ID 过滤)
超了就删:按创建时间排序,删掉最老的
数量 - 上限 + 1个拍新的,名字带时间戳
核心删除逻辑:
if (count($snapshotSet) >= $maxSnapshots) {
// 按创建时间从小到大排,最老的在前面
usort($snapshotSet, fn($a, $b) => strtotime($a->CreatedTime) - strtotime($b->CreatedTime));
// 比如上限2个、现在有3个,就删 3-2+1=2 个最老的
$deleteIds = array_map(
fn($snap) => $snap->SnapshotId,
array_slice($snapshotSet, 0, count($snapshotSet) - $maxSnapshots + 1)
);
// 调 DeleteSnapshots 删掉
}另外两个重要设计:
flock 文件锁:开头抢
snapshot.lock的非阻塞排他锁,抢不到说明上一个任务还没跑完,直接退出。防止手动跑的时候和计划任务撞车。try-catch 兜底:任何一步抛异常都会拼出错误信息,走 PHPMailer 发邮件到
NOTIFY_EMAIL,然后exit(1),方便宝塔的计划任务监控退出码。
先测试再上定时任务
php -l auto_snapshot.php # 先检查语法 php get.php # 能列出当前快照,说明密钥和网络没问题 php auto_snapshot.php # 手动跑一次,看输出和 snapshot.log
宝塔计划任务
宝塔面板 → 计划任务 → Shell 脚本,执行周期每天 3:00:
cd /www/wwwroot/autobackup /usr/bin/php auto_snapshot.php >> /www/wwwlogs/snapshot_cron.log 2>&1
执行成功后可以在快照栏看到效果了

记录在宝塔服务器上给Python 3.12安装Playwright时踩到的各种坑,包括语法错误、依赖缺失、参数写错,最后成功截图。纯笔记,供日后翻查。
详细讲解如何使用PHP实现ZIP文件自动解压、安全验证及文件列表遍历功能,并提供完整的代码实现与异常处理方案。
兼容 PHP 5.3~5.6 的老牌二维码生成库,不依赖扩展和 Composer。含参数说明、纠错级别、尺寸计算及常见场景示例。
Nginx 启动时没有任何错误日志就悄悄退出?本文通过宝塔面板的真实案例,详解如何使用 strace 命令追踪系统调用,精准定位因缺少 cjson.so 库导致的 Nginx 启动失败。
CentOS 7 停止维护后,宝塔面板安装 PHP fileinfo 扩展报错 “C compiler cannot create executables”。本文详细分析原因,并提供一套完整、安全的解决方法,包括切换阿里云 Vault 源、修复 GPG 密钥缺失、安装编译器,最终成功安装扩展。
本文详细介绍两种让 PhpStudy 在 Windows 开机后自动启动的方法,包括使用启动文件夹批处理脚本和直接注册 Apache、MySQL 为系统服务,助你减少重复操作,提高开发效率。