Skip to content

Repository files navigation

OSS自动上传工具

一个功能完整的自动打包并上传到阿里云OSS的工具,支持GUI界面、命令行和定时任务三种使用方式。

功能特性

  • 📁 文件打包: 自动将指定目录打包成ZIP格式
  • ☁️ OSS上传: 支持阿里云对象存储上传,包含大文件分片上传
  • 🖥️ GUI界面: 直观的图形界面,支持配置管理和任务执行
  • ⌨️ 命令行: 完整的CLI工具,支持脚本自动化
  • 定时任务: 支持间隔时间和Cron表达式的定时备份
  • 🔧 配置管理: YAML配置文件,支持排除模式和路径自定义
  • 📊 进度显示: 实时显示打包和上传进度
  • 📝 详细日志: 完整的操作日志记录

快速开始

1. 安装依赖

pip install -r requirements.txt

2. 创建配置文件

python cli.py --init

3. 编辑配置文件

编辑 config.yaml 文件,填入您的OSS配置信息:

oss:
  endpoint: 'https://oss-cn-hangzhou.aliyuncs.com'
  access_key_id: '您的AccessKey ID'
  access_key_secret: '您的AccessKey Secret'
  bucket_name: '您的Bucket名称'

paths:
  source_dir: '/path/to/your/data'  # 要备份的目录
  output_dir: './output'            # 临时输出目录
  oss_prefix: 'backups/'           # OSS上的存储路径前缀

4. 测试连接

python cli.py --test-oss

使用方式

GUI版本

启动图形界面:

python main.py

GUI版本提供了完整的配置管理界面,包括:

  • 基础设置(源目录、输出目录、OSS前缀)
  • OSS配置(访问凭证、Bucket设置)
  • 定时任务配置(启用/禁用、间隔设置)
  • 实时执行和日志查看

命令行版本

基本用法

# 执行一次备份
python cli.py --execute

# 详细模式执行
python cli.py --execute --verbose

# 指定不同的源目录
python cli.py --execute --source /path/to/backup

# 使用不同的配置文件
python cli.py --config myconfig.yaml --execute

配置管理

# 创建默认配置文件
python cli.py --init

# 验证配置文件
python cli.py --validate

# 测试OSS连接
python cli.py --test-oss

定时服务版本

前台运行

python scheduler.py --start

后台运行

python scheduler.py --start --daemon

安装系统服务(Linux)

# 安装服务(需要root权限)
sudo python scheduler.py --install-service

# 启动服务
sudo systemctl start oss-uploader

# 查看服务状态
sudo systemctl status oss-uploader

# 卸载服务
sudo python scheduler.py --uninstall-service

执行一次任务

python scheduler.py --run-once

配置说明

基础配置

配置项 说明 示例
paths.source_dir 要备份的源目录 ./data
paths.output_dir 临时输出目录 ./output
paths.oss_prefix OSS存储路径前缀 backups/

OSS配置

配置项 说明 示例
oss.endpoint OSS访问端点 https://oss-cn-hangzhou.aliyuncs.com
oss.access_key_id AccessKey ID LTAI5t...
oss.access_key_secret AccessKey Secret xxx...
oss.bucket_name Bucket名称 my-backup-bucket

排除模式

compress.exclude_patterns 中配置要排除的文件和目录:

compress:
  exclude_patterns:
    - '*.log'           # 排除所有.log文件
    - '__pycache__'     # 排除Python缓存目录
    - '.git'            # 排除Git目录
    - 'node_modules'    # 排除Node.js依赖

定时任务配置

间隔时间模式

schedule:
  enabled: true
  type: 'interval'
  interval:
    hours: 6          # 每6小时执行一次

Cron模式

schedule:
  enabled: true
  type: 'cron'
  cron:
    hour: 2           # 每日凌晨2点执行
    minute: 0

文件结构

oss_uploader/
├── CLAUDE.md              # 项目规则文件
├── README.md              # 项目文档
├── requirements.txt       # Python依赖
├── config.yaml           # 配置文件模板
├── main.py               # GUI主程序
├── cli.py                # 命令行程序
├── scheduler.py          # 定时服务程序
└── core/                 # 核心模块
    ├── __init__.py
    ├── config.py         # 配置管理
    ├── packager.py       # 文件打包
    ├── uploader.py       # OSS上传
    └── scheduler.py      # 定时任务管理

依赖包

  • oss2: 阿里云OSS SDK
  • PyYAML: YAML配置文件解析
  • APScheduler: 定时任务调度

常见问题

Q: 如何获取OSS访问凭证?

A: 登录阿里云控制台 -> 访问控制RAM -> 用户管理 -> 创建用户并授予OSS权限,获取AccessKey ID和Secret。

Q: 支持哪些压缩格式?

A: 目前仅支持ZIP格式,后续版本会考虑支持TAR.GZ等格式。

Q: 如何设置复杂的定时规则?

A: 使用Cron模式,支持更复杂的定时表达式,如每周一执行、每月首日执行等。

Q: 上传失败怎么办?

A: 检查网络连接、OSS配置和权限设置,查看日志文件获取详细错误信息。

开发信息

  • Python 版本: 3.7+
  • 开发框架: tkinter (GUI), argparse (CLI), APScheduler (定时任务)
  • 测试环境: macOS, Linux, Windows

许可证

MIT License

贡献

欢迎提交Issue和Pull Request来改进这个项目。

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages