一个用Go语言编写的腾讯云对象存储(COS)自动备份和清理工具,支持定时备份本地文件/文件夹到COS,并自动清理过期的备份文件。
- 🔄 自动备份: 支持定时备份本地文件和文件夹到腾讯云COS
- 📁 多路径支持: 支持同时备份多个文件/文件夹路径
- 🗜️ 自动压缩: 文件夹自动压缩为ZIP格式后上传
- 🧹 智能清理: 自动清理超过指定天数的备份文件
- 🛡️ 白名单保护: 支持设置白名单保护重要文件不被清理
- ⏰ 定时任务: 可配置清理时间,程序自动计算等待时间
- 📝 详细日志: 提供详细的操作日志和错误信息
- 🔄 循环运行: 程序持续运行,定期检查和执行任务
- Go 1.16 或更高版本
- 腾讯云COS存储桶
- 腾讯云访问密钥
- 克隆或下载项目代码
- 在项目目录中安装依赖:
go mod tidy- 编译程序:
go build -o vcpsave.exe main.go在项目目录下创建 .env 文件,配置以下参数:
# 腾讯云访问密钥
TENCENTCLOUD_SECRET_ID=your_secret_id
TENCENTCLOUD_SECRET_KEY=your_secret_key
# COS存储桶配置
COS_BUCKET_NAME=your_bucket_name
COS_REGION=ap-hongkong
# COS目标目录(可选,为空则存储在根目录)
COS_TARGET_DIR=backup
# 本地源路径(支持多个路径,用逗号分隔)
SOURCEFOLDER=H:\VCPToolBox,D:\Documents# 是否启用清理功能
CLEANUP_ENABLED=true
# 清理时间(24小时制格式:HH:MM)
CLEANUP_TIME=10:45
# 文件保留天数(超过此天数的文件将被清理)
CLEANUP_DAYS=7
# 白名单(逗号分隔,匹配文件名前缀)
CLEANUP_WHITELIST=important,criticalgo run main.go./vcpsavenohup ./vcpsave.exe > output.log 2>&1 &程序会为上传的文件添加时间戳,格式如下:
- 文件:
原文件名_YYYYMMDD_HHMMSS.扩展名 - 文件夹:
文件夹名_YYYYMMDD_HHMMSS.zip
例如:
document_20251021_104530.txtVCPToolBox_20251021_104530.zip
- 程序每天会在指定时间检查并执行清理任务
- 只清理程序自己上传的文件(通过文件名格式识别)
- 超过保留天数的文件会被自动删除
- 在白名单中的文件不会被删除
- 清理任务完成后,程序会等待1分钟重新计算下次清理时间
- 程序启动时初始化COS客户端
- 确保目标目录存在
- 进入主循环:
- 计算下次清理时间
- 等待到清理时间
- 执行备份操作
- 执行清理操作
- 等待1分钟后重新计算时间
- 时间格式: 清理时间必须使用
HH:MM格式,如10:45 - 路径格式: Windows路径使用反斜杠
\,Linux/Mac使用正斜杠/ - 多路径配置: 多个路径用逗号分隔,不要有空格
- 白名单匹配: 白名单匹配文件名前缀,不包含时间戳部分
- 权限要求: 确保腾讯云密钥有COS的读写权限
- 网络连接: 程序需要稳定的网络连接到腾讯云COS
-
密钥配置错误
- 检查
.env文件中的密钥是否正确 - 确保密钥有COS访问权限
- 检查
-
路径不存在
- 检查
SOURCEFOLDER中的路径是否存在 - 确保程序有读取权限
- 检查
-
清理时间格式错误
- 确保使用
HH:MM格式 - 小时范围:00-23,分钟范围:00-59
- 确保使用
-
网络连接问题
- 检查网络连接
- 确认COS存储桶地域配置正确
程序会输出详细的日志信息,包括:
- 当前时间和下次清理时间
- 文件上传状态
- 清理操作详情
- 错误信息和警告
本项目采用 MIT 许可证。
欢迎提交 Issue 和 Pull Request 来改进这个项目。