知識

rcloneでclodeflareのR2に定期バックアップ

0 likes

VPSのデータを安全なCloudflare R2へ自動バックアップするための最適化した「SSL証明書対応・超高速化済み」の完成版スクリプトと、いざという時のメンテナンス(削除・停止)コマンドをすべてまとめました。

コピペしてそのまま使えるリファレンスとしてご活用ください。


サーバー自動バックアップ完全構築マニュアル

1. Cloudflare R2 の準備

  1. Cloudflareダッシュボードの「R2」からバケットを作成(例: your-bucket-name)。
  2. R2トップ画面の「APIトークンの管理」から 「アカウント API トークン」 を作成。
    • 権限:オブジェクトの読み取りと書き込み
    • 適用先:作成したバケットのみ
  3. 発行された 「S3 API URL」「アクセスキー ID」「シークレットアクセスキー」 を控える。

2. rcloneの確実なインストール

IPv6通信のフリーズを避けるため、GitHubから直接ダウンロードして配置します。

3. rcloneとR2の接続設定

システムデータをバックアップするため、必ず rootユーザー で設定します。

  • n (新規) → 名前: cloudflare_r2
  • Storage: s3 → Provider: Cloudflare
  • env_auth: false
  • アクセスキー、シークレットキー、S3 API URLを入力。
  • acl: private

接続テスト:

4. 最強のバックアップスクリプト作成

SSL証明書の実体を辿り(-L)、重いモジュール群を除外(--exclude)し、並列処理(--transfers)で爆速化。さらに**「誤操作によるデータ喪失」を防ぐ退避機能(ゴミ箱)**を備えた完成版です。

スクリプト内容:

実行権限の付与:

5. 定期実行(cron)の登録

例:毎日深夜3時に自動実行し、エラー時のみログに出力させます。

追記内容:

0 3 * * * /root/backup.sh >> /var/log/vps_backup.log 2>&1

6. ヒューマンエラー対策:ゴミ箱の自動お掃除設定(ライフサイクル)

スクリプトで --backup-dir を設定したため、VPS上で間違って消してしまったファイルもR2の archive/ フォルダ内に退避されます。このゴミ箱が無限に増え続けるのを防ぐため、Cloudflare側で自動削除ルールを設定します。

  1. Cloudflare R2ダッシュボードで対象バケットの「設定 (Settings)」を開く。
  2. 「オブジェクトのライフサイクルルール」から「ルールの追加」をクリック。
  3. ルール名: Delete old archives
  4. プレフィックス (Prefix): archive/ (※重要:必ず指定してください)
  5. アクション: 次の後に、アップロードされたオブジェクトを削除する を選択。
  6. 経過日数: 30
  7. 保存する。

これで、30日間は復元可能な猶予を残しつつ、クラウドの容量を自動で節約できる鉄壁のシステムが完成です。


メンテナンス用コマンド集(リセット・停止・確認)

いざという時に、バックグラウンドの処理を制御したり、R2の中身を綺麗にするためのコマンド一覧です。すべて rootユーザー (sudo su -) で実行してください。

停止と確認

現在動いている rclone の確認:

動いている rclone をすべて強制終了(強制キル):

バケットの中身を空にする(完全リセット)

※ブラウザでバケットごと削除して作り直すのが一番早いですが、コマンドでやる場合は以下を使用します。

超高速で中身のファイルをすべて削除(裏側で実行):

(※上記実行後、ps aux | grep rclone で処理が終わったか確認します)

ファイル削除後、残った空のフォルダ構造を削除:

手動バックアップの実行

ターミナルを閉じても裏側で初回バックアップを走らせる:

これで、環境を再構築する際や、トラブル発生時のリセットにも即座に対応できます!