mcpField
R
r2-glacier-migration

r2-glacier-migration

github.com/pollinationsクラウド・DevOps5.3k71 回インストール今日更新
リポジトリ

r2-glacier-migration について

Cloudflare R2 から AWS S3 Glacier Deep Archive へオブジェクトを移行するためのスキルです。大規模なバケット移行向けに、ストリーミング転送コマンド、状態確認、チェックポイントからの再開方法をまとめています。

主な機能

  1. 01R2 オブジェクトを Glacier Deep Archive へ転送
  2. 02バッチサイズと並列数の設定
  3. 03転送状態とログの確認
  4. 04チェックポイントから中断転送を再開

活用シーン

  1. 01R2 バケットの内容を 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 移行

Cloudflare R2 から AWS S3 Glacier Deep Archive へ約 42.6 TB を移行します。

コスト削減

  • 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

コメント