r2-glacier-migration について
Cloudflare R2 から AWS S3 Glacier Deep Archive へオブジェクトを移行するためのスキルです。大規模なバケット移行向けに、ストリーミング転送コマンド、状態確認、チェックポイントからの再開方法をまとめています。
主な機能
- 01R2 オブジェクトを Glacier Deep Archive へ転送
- 02バッチサイズと並列数の設定
- 03転送状態とログの確認
- 04チェックポイントから中断転送を再開
活用シーン
- 01R2 バケットの内容を AWS S3 にアーカイブ
- 02長時間の移行の進捗を確認
- 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-text | 16.96 TB | 1.86B | 🔄 進行中 |
| pollinations-images | 25.64 TB | 221M | ⏳ 保留中 |
クイックコマンド
ステータスを確認
# 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 へのデータ転送(イングレス)も無料です。
画像バケットを開始(テキストの転送完了後)
-
ninon 上の
~/r2-glacier/run-text-transfer.shを更新します。# Change bucket name node r2-to-glacier-streaming.js -b pollinations-images --batch-size 50000 --concurrency 30 -
新しい screen を開始します。
ssh ninon "screen -dmS r2-images bash -c '~/r2-glacier/run-images-transfer.sh; exec bash'"
追跡情報
- Issue:#5860
- PR:#5861
コメント
Markdown 対応