# lighthouse_snapshop **Repository Path**: glsnames/lighthouse_snapshop ## Basic Information - **Project Name**: lighthouse_snapshop - **Description**: 腾讯云轻量服务器快照备份脚本。参考来源:https://white-night.club/index.php/2024/04/19/pg29/ - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-11 - **Last Updated**: 2025-12-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 腾讯云轻量应用服务器自动快照管理工具 ## 项目简介 本项目提供了两个功能相同的自动快照管理工具(Python版本和Shell版本),用于管理腾讯云轻量应用服务器(Lighthouse)的自动快照功能。支持多用户、多地域管理,能够自动维护每个实例的快照数量(默认保留最新2个快照)。 ## 功能特点 ### 核心功能 - **多用户支持**:支持同时管理多个腾讯云账号 - **多地域支持**:自动获取或手动指定地域 - **实例信息友好显示**:显示实例名称,实例ID只显示后4位 - **自动快照管理**:保持每个实例最多2个快照,创建新快照前删除最老的快照 - **灵活的配置方式**:支持配置文件或直接传递JSON - **支持定时任务**:支持gitee流水线配置 ### 操作模式 1. **auto**(默认):自动管理快照,创建新快照并删除最老的 2. **create**:仅为每个实例创建新快照 3. **delete**:删除每个实例的最老快照 4. **check**:检查每个实例的快照情况 5. **list_regions**:列出所有用户的地域信息 6. **list_instances**:列出所有用户的实例信息 ## 环境要求 ### Python版本要求 - Python 3.6+ - 腾讯云Python SDK:`tencentcloud-sdk-python-lighthouse` - 安装命令: ```bash pip install tencentcloud-sdk-python-lighthouse ``` ### Shell版本要求 - Bash 4.0+ - jq(JSON处理工具) - tccli(腾讯云CLI工具) - 安装命令: ```bash # Ubuntu/Debian sudo apt-get install jq && pip install tccli # CentOS/RHEL sudo yum install jq && pip install tccli # macOS brew install jq && pip install tccli ``` ## 配置文件格式 ### JSON格式 ```json [ { "name": "100000000000", "id": "AKIDxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "key": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "regions": ["ap-beijing"] }, { "name": "000000000006", "id": "AKIDyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy", "key": "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy", "regions": ["ap-shanghai", "ap-guangzhou"] } ] ``` ### 字段说明 - `name`:用户名称(可选,默认使用id前8位) - `id`:腾讯云SecretId - `key`:腾讯云SecretKey - `regions`:地域列表(可选,不指定则使用所有可用地域) ## 使用方法 ### 开启gitee_go自动运行 开通流水线仓库功能,在流水线页面增加名为`config`的通用变量,变量内容填写config.json的全部,勾选密文,避免泄漏关键信息。 ### Python脚本使用 #### 基本用法 ```bash python lighthouse_snapshot.py --config config.json --mode info --snapshot_mode auto ``` #### 参数说明 - `--config`:配置文件路径 - `--config-json`:直接传递JSON配置内容 - `--mode`:日志级别(debug/info/warning/error),默认info - `--snapshot_mode`:快照模式(auto/delete/create/check/list_regions/list_instances),默认auto #### 示例命令 ```bash # 1. 使用配置文件自动管理快照 python lighthouse_snapshot.py --config config.json --snapshot_mode auto # 2. 使用JSON字符串直接配置 python lighthouse_snapshot.py --config-json '[{"name":"用户1","id":"AKID...","key":"...","regions":["ap-beijing"]}]' --snapshot_mode auto # 3. 检查所有实例的快照情况 python lighthouse_snapshot.py --config config.json --snapshot_mode check # 4. 列出所有可用地域 python lighthouse_snapshot.py --config config.json --snapshot_mode list_regions # 5. 列出所有实例信息 python lighthouse_snapshot.py --config config.json --snapshot_mode list_instances # 6. 仅创建快照 python lighthouse_snapshot.py --config config.json --snapshot_mode create # 7. 仅删除最老快照 python lighthouse_snapshot.py --config config.json --snapshot_mode delete ``` ### Shell脚本使用 #### 基本用法 ```bash ./lighthouse_snapshot.sh --config users.json --mode info --snapshot_mode auto ``` #### 参数说明 - `--config`:配置文件路径 - `--config-json`:直接传递JSON配置内容 - `--mode`:日志级别(debug/info/warning/error),默认info - `--snapshot_mode`:快照模式(auto/delete/create/check/list_regions/list_instances),默认auto #### 示例命令 ```bash # 1. 使用配置文件自动管理快照 bash ./lighthouse_snapshot.sh --config config.json --snapshot_mode auto # 2. 使用JSON字符串直接配置 bash ./lighthouse_snapshot.sh --config-json '[{"name":"用户1","id":"AKID...","key":"...","regions":["ap-beijing"]}]' --snapshot_mode auto # 3. 检查所有实例的快照情况 bash ./lighthouse_snapshot.sh --config config.json --snapshot_mode check # 4. 列出所有可用地域 bash ./lighthouse_snapshot.sh --config config.json --snapshot_mode list_regions # 5. 列出所有实例信息 bash ./lighthouse_snapshot.sh --config config.json --snapshot_mode list_instances # 6. 仅创建快照 bash ./lighthouse_snapshot.sh --config config.json --snapshot_mode create # 7. 仅删除最老快照 bash ./lighthouse_snapshot.sh --config config.json --snapshot_mode delete ``` ## 输出示例 ### 日志输出格式 两个脚本使用相同的日志格式: ``` INFO:2023/12/01 10:30:45 成功加载 2 个用户配置 INFO:2023/12/01 10:30:46 处理用户: 100016000009 INFO:2023/12/01 10:30:46 处理地域: ap-beijing INFO:2023/12/01 10:30:47 地域ap-beijing找到3个实例 INFO:2023/12/01 10:30:47 处理实例: web-server(abcd) INFO:2023/12/01 10:30:47 当前快照数量: 1 INFO:2023/12/01 10:30:48 创建快照: abcd-20231201103048 INFO:2023/12/01 10:30:48 快照成功: snap-xxxxxxxx ``` ### list_instances模式输出 ``` 用户1: 地域: ap-beijing - 3个实例 - web-server(abcd) 状态: RUNNING, 公网IP: 192.168.1.1, 192.168.1.2 - database(efgh) 状态: RUNNING, 公网IP: 无公网IP - (ijkl) 状态: STOPPED, 公网IP: 无公网IP ``` ### check模式输出 ``` 实例: web-server(abcd) 快照数量: 2 - abcd-20231201103048: snap-xxxxxxxx (2023-12-01 10:30:48) - abcd-20231201102530: snap-yyyyyyyy (2023-12-01 10:25:30) ``` ## 应用场景 ### 1. 定期自动快照 使用crontab定期执行自动快照管理: ```bash # 每天凌晨2点执行自动快照管理 0 2 * * * /usr/bin/python3 /path/to/lighthouse_snapshot.py --config /path/to/config.json --snapshot_mode auto # 或使用Shell版本 0 2 * * * /bin/bash /path/to/lighthouse_snapshot.sh --config /path/to/config.json --snapshot_mode auto ``` ### 2. 批量实例检查 定期检查所有实例的快照状态: ```bash # 每周一上午8点检查快照 0 8 * * 1 /usr/bin/python3 /path/to/lighthouse_snapshot.py --config /path/to/config.json --snapshot_mode check ``` ### 3. 多账号集中管理 单个配置文件管理多个腾讯云账号的轻量服务器,统一进行快照管理。 ### 4. 地域实例统计 快速统计各地域的实例分布情况: ```bash ./lighthouse_snapshot.sh --config config.json --snapshot_mode list_instances ``` ## 注意事项 ### 安全性 1. **密钥保护**:配置文件中的SecretId和SecretKey应妥善保管,建议设置适当的文件权限(如600) 2. **网络隔离**:建议在安全的内网环境中执行脚本 3. **最小权限原则**:为腾讯云账号分配仅包含所需快照管理权限的CAM策略 ### 性能考虑 1. **地域限制**:如果实例分布在多个地域,网络延迟可能影响执行效率 2. **并发控制**:当前版本为串行执行,大量实例时可能需要较长时间 3. **API限制**:注意腾讯云API的调用频率限制 ### 错误处理 1. **网络超时**:脚本已包含基本的错误重试机制 2. **权限不足**:会提示具体的权限错误信息 3. **地域不可用**:自动跳过不可用的地域 ### 兼容性 1. **Python版本**:建议使用Python 3.6及以上版本 2. **地域标识**:使用腾讯云标准地域标识(如ap-beijing、ap-shanghai等) 3. **实例状态**:脚本会处理各种实例状态(运行中、已停止等) ## 故障排除 ### 常见问题 #### 1. 权限错误 ``` ERROR:2023/12/01 10:30:45 创建快照失败: [TencentCloudSDKException] code:AuthFailure.SecretIdNotFound ``` **解决方案**:检查SecretId和SecretKey是否正确,确认账号是否有快照管理权限。开启子用户,授权轻量云服务器读写权限。 ### 调试模式 使用debug模式获取更详细的日志信息: ```bash python lighthouse_snapshot.py --config config.json --mode debug --snapshot_mode auto # 或 ./lighthouse_snapshot.sh --config config.json --mode debug --snapshot_mode auto **注意**:本工具仅用于自动化管理腾讯云轻量应用服务器的快照功能,请确保遵守腾讯云的相关服务条款和使用规范。