腾讯云轻量服务器每日自动快照备份脚本(PHP + 宝塔计划任务)部署笔记

      发布在:后端技术      评论:0 条评论

给腾讯云轻量服务器(Lighthouse)做每日快照。快照这玩意说白了就是整机备份,哪天手贱改坏了配置、被入侵了、或者数据库误删,直接回滚快照就完事,比啥都省心。


手动拍快照很简单,控制台点两下。但人总会忘,所以搞个脚本每天凌晨 3 点自动创建快照,同时管着数量——快照太多了占空间也费钱,超过上限就把最老的删掉。创建失败还实现发邮件告警,不然脚本挂了都不知道。

image

自动创建快照脚本目录结构

autobackup/
├── auto_snapshot.php    # 主脚本
├── .env                 # 所有配置(密钥也在里面)
├── composer.json        # 依赖声明
├── snapshot.lock        # 锁文件,防止任务重跑
├── snapshot.log         # 运行日志


.env 配置


密钥在腾讯云控制台 CAM 里申请https://console.cloud.tencent.com/cam/capi(建议用子账号,只给轻量服务器权限,别拿主账号密钥跑)。

imageimage

然后:


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=收告警的邮箱

宝塔计划任务

宝塔面板 → 计划任务 → Shell 脚本,执行周期每天 3:00:

cd /www/wwwroot/autobackup
/www/server/php/82/bin/php auto_snapshot.php >> /www/wwwlogs/snapshot_cron.log 2>&1

image

另外必须给权限,要不然像我第一次执行出现Code: UnauthorizedOperation.NoPermission

image

这里可以通过创建自定义策略来实现指定权限,按策略语法创建,这种方式会直接编写一个JSON格式的策略文档,可以精确控制子账号能做什么、不能做什么。

首先创建自定义策略

  • 登录腾讯云控制台,进入访问管理 > 策略

  • 点击新建自定义策略,选择按策略语法创建

  • 选择"空白模板",将下面的JSON代码粘贴进去:

{
    "version": "2.0",
    "statement": [
        {
            "effect": "allow",
            "action": [
                "lighthouse:DescribeSnapshots",
                "lighthouse:CreateInstanceSnapshot",
                "lighthouse:DeleteSnapshots"
            ],
            "resource": [
                "*"
            ]
        }
    ]
}

策略说明

  • lighthouse:DescribeSnapshots:查看快照列表(解决你当前的报错)

  • lighthouse:CreateInstanceSnapshot:创建新快照

  • lighthouse:DeleteSnapshots:删除旧快照(配合自动轮转)

  • resource 设为 ["*"]:允许操作所有轻量应用服务器资源

安全提示:如果想更严格地限制子账号只能操作特定服务器,可以将 "*" 改成具体的资源六段式,例如 "qcs::lighthouse:ap-shanghai:uin/100035906497:instance/lhins-xxxxxx"。不过对于快照管理场景,使用 * 更方便且风险可控。

再次命名并保存策略

  • 策略名称建议填:LighthouseSnapshotAutoPolicy

  • 描述:用于自动快照脚本的自定义策略,包含创建、删除和查看快照权限

    image

执行成功后可以在快照栏看到效果了

image

相关文章

记录在宝塔服务器上给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 为系统服务,助你减少重复操作,提高开发效率。

热门推荐