Create and manage a sorted directory structure in AWS S3

📦 智能前缀分片的 S3 批量上传

通过首字符前缀自动组织文件,实现高效的 AWS S3 批量上传,支持 dry-run 预览、sync 同步模式及多存储类优化。

收藏
5k
安装
1.1k
版本
1.0.1
CLS 安全扫描中
预计需要 3 分钟...

使用说明

核心用法

s3-bulk-upload 是一个专为 AWS S3 设计的批量文件上传工具,其核心特性在于自动按文件名首字符组织文件结构(如 a/apple.txtb/banana.txt0-9/123.txt),从而天然实现文件在 S3 桶内的前缀分片,优化大规模存储的检索与管理效率。

工具提供三种主要工作模式:

  • 基础复制模式:遍历目录,逐个调用 aws s3 cp 上传
  • Dry-run 预览模式:在实际执行前输出预期的上传路径映射
  • Sync 同步模式:通过创建带前缀结构的 staging 目录并使用符号链接,最终调用 aws s3 sync 实现高效批量传输

支持灵活配置存储类别(STANDARDSTANDARD_IAGLACIER_IRINTELLIGENT_TIERING),便于根据访问频率优化成本。

显著优点

1. 智能前缀组织:首字符分片策略天然契合 S3 的扁平命名空间与性能优化建议,避免单一目录下对象过多导致的性能瓶颈
2. 渐进式迁移友好:sync 模式通过符号链接 staging,无需复制物理文件,节省磁盘空间与 I/O

3. 成本意识设计:内置对多种 S3 存储类别的支持,便于冷数据归档与生命周期管理

4. 可验证性:提供完整的清单生成、按前缀计数、访问测试等验证手段

5. 透明度高:纯 Bash 实现,无隐藏逻辑,便于审计与定制

潜在缺点与局限性

  • AWS 生态绑定:强依赖 AWS CLI 与 IAM 凭证体系,多云场景需额外适配
  • 无断点续传:单文件 cp 模式在超大文件传输中断时需重新上传(sync 模式可部分缓解)
  • 符号链接局限:sync 模式依赖本地文件系统对符号链接的支持,Windows 环境或受限容器内可能失效
  • 并发控制缺失:无内置并行上传机制,海量小文件场景效率受限
  • 元数据保留有限:未显式处理文件权限、扩展属性等元数据的保留

适合人群

  • 数据工程师:需要将本地数据集批量迁移至 S3 并按规范组织
  • DevOps/SRE:构建数据管道或备份工作流,关注成本优化与可维护性
  • 个人开发者:管理个人项目静态资源、日志归档等场景

常规风险

  • 凭证泄露:脚本依赖环境变量 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY,需确保 .bashrc~/.aws/credentials 等位置权限正确(建议 600),避免误提交至版本控制
  • 权限配置错误:IAM 策略需精确限定 s3:PutObject 权限,过度宽松的 s3:* 可能导致数据被覆盖或意外删除
  • 存储类误用GLACIER_IR 等归档类存储有最小存储时长与提前删除费用,频繁覆盖场景可能造成意外成本
  • 路径冲突:首字符组织策略下,同名文件(如 A/file.txta/file.txt 均映射至 a/file.txt)会产生覆盖,需预先处理大小写敏感或文件名唯一性

Create and manage a sorted directory structure in AWS S3 内容

手动下载zip · 4.8 kB
s3-bulk-upload.shtext/x-shellscript
请选择文件