腾讯云轻量应用服务器(Lighthouse)原生不支持直接通过控制台界面“一键设置定时自动创建快照”的功能。
不过,你可以通过以下三种主流方式实现自动化定时快照,推荐程度从高到低排列:
方法一:使用云监控 + 云函数(Serverless)—— 最推荐
这是腾讯云官方推荐的自动化方案,无需在服务器上安装额外软件,利用云原生能力实现,成本低且稳定。
核心逻辑:配置云监控规则 -> 触发云函数(SCF)-> 调用 API 创建快照。
-
创建云函数 (SCF)
- 进入【云函数】控制台,新建一个 Python 3.6+ 或 Node.js 8.0+ 的函数。
- 编写代码调用腾讯云 API
CreateDiskSnapshot。 -
代码示例 (Python):
import json from tencentcloud.common import credential from tencentcloud.common.profile.client_profile import ClientProfile from tencentcloud.common.profile.http_profile import HttpProfile from tencentcloud.lighthouse.v20200324 import lighthouse_client, models def handler(event, context): # 获取你的密钥(建议从环境变量读取,不要硬编码) cred = credential.DefaultCredentialProvider().get_credential() httpProfile = HttpProfile() httpProfile.endpoint = "lighthouse.tencentcloudapi.com" clientProfile = ClientProfile() clientProfile.httpProfile = httpProfile client = lighthouse_client.LighthouseClient(cred, "ap-guangzhou", clientProfile) # 替换为你的地域 req = models.CreateDiskSnapshotRequest() params = { "InstanceName": "my-lh-server-snap-{}".format(int(__import__('time').time())), # 自定义名称 "Description": "Auto created by SCF", "InstanceId": "lh-xxxxxxxx" # 填入你的实例 ID } req.from_json_string(json.dumps(params)) resp = client.CreateDiskSnapshot(req) return {"statusCode": 200, "body": "Snapshot created: " + resp.SnapshotId} - 部署并测试该函数。
-
配置云监控告警与事件规则
- 进入【云监控】控制台 -> 【事件规则】。
- 创建一个规则,触发条件选择“时间触发器”(Cron 表达式),例如每天凌晨 3 点执行:
0 3 * * ? *。 - 将动作设置为“执行云函数”,选择刚才创建的函数。
- 配置好后,系统就会严格按照设定时间自动调用函数创建快照。
方法二:使用 Linux Crontab 脚本 —— 适合有运维基础的用户
如果你熟悉 Linux 命令行,可以在服务器内部通过 crontab 配合 tencentcloud-cli 来实现。
前提条件:
- 服务器已安装
tencentcloud-cli。 - 已配置好本地认证(
tccli configure set)。 - 拥有创建快照的 API 权限(RAM 策略需包含
lighthouse:CreateDiskSnapshot)。
操作步骤:
-
编写脚本 (
/root/auto_snapshot.sh):#!/bin/bash INSTANCE_ID="lh-xxxxxxxx" SNAPSHOT_NAME="auto_snap_$(date +%Y%m%d_%H%M%S)" # 调用 CLI 创建快照 tccli lighthouse CreateDiskSnapshot --instance-id $INSTANCE_ID --name $SNAPSHOT_NAME --description "Auto snapshot" # 可选:清理超过 7 天的旧快照(需自行遍历列表判断)赋予执行权限:
chmod +x /root/auto_snapshot.sh。 -
设置定时任务:
crontab -e添加一行(例如每天凌晨 2 点):
0 2 * * * /root/auto_snapshot.sh >> /var/log/auto_snapshot.log 2>&1
方法三:使用第三方工具(如 Ansible / Terraform)
如果你已经在使用基础设施即代码(IaC)工具,可以在 Terraform 或 Ansible Playbook 中集成定时任务,或者结合云端的定时调度服务(如 AWS 的 EventBridge 对应腾讯云的类似机制)来触发 API 调用。但对于单纯为了快照备份,方法一通常是最简单且维护成本最低的。
💡 重要提示:关于快照保留策略
腾讯云轻量服务器的快照不会自动删除旧快照。无论使用上述哪种方法,你都需要在脚本中加入清理逻辑:
- 列出当前所有快照。
- 根据快照名称中的日期标签(如
auto_snap_20231027)进行比对。 - 删除保留期限之外的旧快照(例如只保留最近 7 天或 30 天),否则会产生额外的存储费用。
建议:对于大多数用户,优先尝试 方法一(云函数 + 云监控),因为它解耦了服务器本身,即使服务器宕机,云端调度依然能执行备份操作。
CLOUD云