mcpField
R
r2-glacier-migration

r2-glacier-migration

github.com/pollinations云与 DevOps5.3k71 次安装今天更新
代码仓库

关于 r2-glacier-migration

用于将对象从 Cloudflare R2 迁移到 AWS S3 Glacier Deep Archive 的技能,提供流式传输命令、状态检查和基于检查点的续传说明,适合大型存储桶迁移。

主要功能

  1. 01流式传输 R2 对象至 Glacier Deep Archive
  2. 02设置批次大小与并发数
  3. 03查看传输状态和日志
  4. 04从检查点恢复中断的传输

适用场景

  1. 01将 R2 存储桶内容归档到 AWS S3
  2. 02检查长时间迁移的进度
  3. 03中断后继续对象传输

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/pollinations/pollinations --skill r2-glacier-migration

安装后在 Claude Code 中输入/r2-glacier-migration确认已加载。

附带文件scripts/package.jsonscripts/r2-to-glacier-streaming.js

详细介绍

R2 → AWS Glacier Deep Archive 迁移

将约 42.6 TB 的数据从 Cloudflare R2 迁移到 AWS S3 Glacier Deep Archive。

节省成本

  • R2:约 $638/月 → Glacier:约 $42/月
  • 节省:约 $596/月

存储桶

存储桶大小对象数状态
pollinations-text16.96 TB1.86B🔄 进行中
pollinations-images25.64 TB221M⏳ 待处理

快速命令

查看状态

# Is transfer running?
ssh ninon "screen -ls"

# View recent logs
ssh ninon "tail -50 ~/r2-glacier/transfer-text.log"

# Check checkpoint
ssh ninon "cat /tmp/r2-glacier-pollinations-text-checkpoint.json | jq ."

连接到 Screen(交互式)

ssh -t ninon "screen -r r2-text"
# Detach: Ctrl+A, D

崩溃后恢复

ssh ninon "screen -dmS r2-text bash -c '~/r2-glacier/run-text-transfer.sh; exec bash'"

文件位置

位置路径用途
技能scripts/r2-to-glacier-streaming.js主传输脚本
技能scripts/package.json依赖项
ninon~/r2-glacier/已部署的脚本和依赖项
ninon~/r2-glacier/run-text-transfer.sh含凭据的包装脚本
ninon~/r2-glacier/transfer-text.log传输日志
ninon/tmp/r2-glacier-*-checkpoint.json恢复检查点

脚本用法

# Test (small batch)
node r2-to-glacier-streaming.js -b pollinations-text --batch-size 100 --max-batches 1

# Full transfer
node r2-to-glacier-streaming.js -b pollinations-text --batch-size 50000 --concurrency 30

# Resume after interruption
node r2-to-glacier-streaming.js -b pollinations-text --resume

# Dry run (count only)
node r2-to-glacier-streaming.js -b pollinations-text --dry-run

AWS 设置

  • 存储桶:s3://pollinations-archive
  • 区域:us-east-1
  • 存储类别:DEEP_ARCHIVE

验证归档

aws s3 ls s3://pollinations-archive/ --recursive --human-readable | head -20

重要说明

  • ⚠️ Glacier Deep Archive 的最低存储期限为 180 天——验证完成前不要删除 R2!
  • 部分对象会因“Header overflow”(响应过大)而失败——可接受此损失
  • 文本存储桶(1.86B 个对象)需要数天时间
  • R2 出站流量免费,AWS 入站流量免费

启动图像存储桶(文本存储桶完成后)

  1. 在 ninon 上更新 ~/r2-glacier/run-text-transfer.sh:

    # Change bucket name
    node r2-to-glacier-streaming.js -b pollinations-images --batch-size 50000 --concurrency 30
    
  2. 启动新的 screen:

    ssh ninon "screen -dmS r2-images bash -c '~/r2-glacier/run-images-transfer.sh; exec bash'"
    

跟踪

  • Issue:#5860
  • PR:#5861

评论

支持 Markdown