腾讯云轻量应用服务器(Lighthouse)的快照功能本身不支持直接通过控制台界面设置“自动定时触发”的纯自动化策略。这一点和 ECS(云服务器)那种可以配置“快照策略”自动按小时/天备份的逻辑不太一样,容易让人产生误解。
但是,要实现“定时备份”,在腾讯云生态里有两种非常成熟且合规的操作路径,推荐程度依次递减:
方案一:使用“镜像市场”或“自定义镜像”配合云函数(Serverless)—— 最接近原生体验
这是目前官方推荐的、无需写代码或少量代码的实现方式。核心思路是:用 CloudBase(云开发)或 SCF(云函数)作为调度器,调用 API 创建快照。
具体步骤:
-
准备权限
- 登录腾讯云 CAM(访问管理),为执行云函数的 CVM/Lighthouse 角色授予
QcloudLighthouseFullAccess或更细粒度的lighthouse:CreateSnapshot权限。 - 确保你的轻量应用服务器所在的区域支持该 API 调用。
- 登录腾讯云 CAM(访问管理),为执行云函数的 CVM/Lighthouse 角色授予
-
编写云函数(SCF)
- 在【云函数】服务中创建一个 Python 3.9 或 Go 函数。
- 使用腾讯云 SDK(如
tencentcloud-sdk-python)调用CreateSnapshot接口。 - 关键参数:
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
初始化凭证
cred = credential.Credential(“你的SecretId”, “你的SecretKey”)
httpProfile = HttpProfile(endpoint=”lighthouse.tencentcloudapi.com”)
clientProfile = ClientProfile(httpProfile=httpProfile)
client = lighthouse_client.LighthouseClient(cred, “ap-guangzhou”, clientProfile)构建请求
req = models.CreateSnapshotRequest()
params = {
“SnapshotName”: “auto-backup-” + datetime.now().strftime(“%Y%m%d-%H%M%S”),
“InstanceIds”: [“ls-bxxxxxxxxx”] # 替换为你的实例ID
}
req.from_json_string(json.dumps(params))发送请求
resp = client.CreateSnapshot(req)
print(resp.to_json_string()) -
设置定时触发器
- 在云函数控制台,为该函数添加一个【事件源管理器】中的【定时触发器】。
- 设置 Cron 表达式,例如每天凌晨 2 点执行:
0 2 * * ? *。 - 这样,每天凌晨 2 点,云函数会自动调用 API 为你的轻量服务器创建快照。
-
清理旧快照(可选但重要)
- 快照会占用存储空间并产生费用。建议在云函数中加入逻辑,调用
DeleteSnapshots接口,删除超过 N 天的旧快照,避免无限累积。
- 快照会占用存储空间并产生费用。建议在云函数中加入逻辑,调用
✅ 优点:完全自动化,按需付费,无服务器运维成本。
❌ 缺点:需要一点编程基础,首次配置稍复杂。
方案二:使用腾讯云“堡垒机”或“脚本+Cron” —— 传统运维方式
如果你不想用云函数,可以在轻量服务器内部自己搞一套定时任务。
操作步骤:
-
登录轻量服务器
- 通过 SSH 连接到你的 Linux 实例。
-
安装腾讯云 CLI 工具
- 轻量服务器默认可能没装
tccli或tencentcloud-cli。 - 以 Ubuntu/Debian 为例:
pip install tencentcloud-cli tccli configure set secretId YOUR_SECRET_ID tccli configure set secretKey YOUR_SECRET_KEY tccli configure set region ap-guangzhou
- 轻量服务器默认可能没装
-
编写备份脚本
-
创建文件
/opt/scripts/lh_snapshot.sh:#!/bin/bash INSTANCE_ID="ls-bxxxxxxxxx" TIMESTAMP=$(date +%Y%m%d_%H%M%S) SNAPSHOT_NAME="auto_backup_${TIMESTAMP}" # 创建快照 tccli lighthouse CreateSnapshot --InstanceIds "["${INSTANCE_ID}"]" --SnapshotName "${SNAPSHOT_NAME}" echo "Snapshot ${SNAPSHOT_NAME} created at $(date)" >> /var/log/snapshot.log # 可选:删除7天前的快照 OLD_SNAPSHOTS=$(tccli lighthouse DescribeSnapshots --Filters "[{"Name":"instance-id","Values":["${INSTANCE_ID}"],"Logic":"EQUAL"}]" --Limit 10 | jq -r '.SnapshotSet[] | select(.CreateTime < "'"$(date -d '7 days ago' '+%Y-%m-%dT%H:%M:%SZ')"'"') | .SnapshotId' | tr 'n' ',' | sed 's/,$//') if [ ! -z "$OLD_SNAPSHOTS" ]; then tccli lighthouse DeleteSnapshots --SnapshotIds "["${OLD_SNAPSHOTS}"]" fi -
赋予执行权限:
chmod +x /opt/scripts/lh_snapshot.sh
-
-
设置 Crontab
- 编辑 crontab:
crontab -e - 添加一行:
0 2 * * * /opt/scripts/lh_snapshot.sh >> /var/log/snapshot_cron.log 2>&1
- 编辑 crontab:
✅ 优点:直观,可控性强,适合熟悉 Linux 命令行的用户。
❌ 缺点:需要在服务器上维护密钥(安全风险较高),需自行处理日志和错误监控。
⚠️ 重要注意事项
-
快照不是备份的全部
- 快照是块级备份,恢复速度快,但不能替代数据备份。如果数据库损坏,快照可能也包含损坏的数据。
- 建议对 MySQL、MongoDB 等数据库,先执行
mysqldump或逻辑导出,再创建快照,或者将数据目录单独挂载到云盘上,实现数据与系统分离。
-
费用问题
- 轻量应用服务器的快照存储是按量计费的。频繁创建快照会产生持续费用。
- 务必设置“保留策略”,定期删除旧快照。
-
合规性提醒
- 不要将敏感信息(如密码、私钥)硬编码在脚本中。推荐使用环境变量或腾讯云的 KMS(密钥管理服务)加密存储。
- 遵守《网络安全法》和《数据安全法》,确保备份数据的完整性与XX性。
-
为什么没有原生“定时快照策略”?
- 腾讯云轻量应用服务器定位是“简化运维”,面向个人开发者和小微企业,因此功能上做了精简。ECS 等专业产品才提供完整的快照策略模板。这是产品设计取舍,非技术缺陷。
总结建议
- 如果你是个人开发者,追求简单稳定 → 推荐 方案一(云函数 + API),一次配置,长期无忧。
- 如果你是运维人员,已有服务器管理经验 → 可用 方案二(Crontab + CLI),灵活度高。
- 无论哪种方式,务必加入旧快照清理逻辑,控制成本。
如需进一步帮助,可查看腾讯云官方文档:轻量应用服务器快照 API 文档
云技术博客