epic_shelter:GitHubリポジトリ自動ミラー・バックアップ
概要
opennav_epic_shelter は、GitHub上の複数リポジトリをローカルにミラーして災害対策用のバックアップを行うための小さなツールセットです。シェルスクリプト中心の実装で、リポジトリ一覧を管理するテキストファイルを読み込み、--mirror相当の方法で全てのブランチ・タグ・refsを保持したままクローン・更新します。cron による毎日深夜の自動実行、詳細なログ記録と30日分のログローテーション機能を備え、運用負荷を低く抑えながら確実にバックアップを継続できます。シンプルなので既存のサーバーへ素早く導入できます。
リポジトリの統計情報
- スター数: 2
- フォーク数: 0
- ウォッチャー数: 2
- コミット数: 3
- ファイル数: 5
- メインの言語: Shell
主な特徴
- 複数のGitHubリポジトリを一括でミラー(全refsを保持)
- 毎日深夜にcronで自動更新(自動化された運用)
- 詳細なログ記録と30日分のログローテーション
- シンプルなシェルスクリプト構成で導入が容易
技術的なポイント
opennav_epic_shelter は、Gitの「ミラーリング(—mirror/裸リポジトリ)」の仕組みを利用して、リモートのリポジトリ構造をそのままローカルに保持する設計です。これにより、単一のブランチだけでなく全てのブランチ、タグ、refs(refs/heads、refs/tags、refs/remotesなど)を丸ごと保存できるため、復旧時に完全なリポジトリ構成を復元できます。ミラー更新は通常 git clone —mirror または既存ミラーに対する git remote update で行い、履歴やリファレンスが失われないように「プルーニングを行わない(no pruning)」ポリシーを採用しています。
ログ管理は運用上の重要点で、本リポジトリは詳細ログを残すことで失敗時の原因追跡を容易にしています。ログローテーションは「直近30日分を保持する」設定になっており、ディスク容量が無制限に増えないよう保守されています。cron ベースのスケジューリング(setup_cron.sh)により、自動実行環境を簡単に構築可能で、システムのcronにジョブを登録するだけで日次更新が有効になります。
スクリプトはシェルで実装されているため、追加の依存をほとんど必要とせず、SSH鍵やアクセストークンを利用した認証(環境変数や既存のgit設定経由)で安全にアクセスできます。ただし、GitHub APIのレート制限やネットワーク切断、部分的な失敗に対するリトライやアラート機能は必須ではないため、運用環境によっては監視や通知(メール、Slack等)の追加を検討すると良いでしょう。
また、ミラーはローカルディスクに保存されるため、さらに安全性を高めたい場合はミラー先の二次バックアップ(オフサイト、S3や別拠点への同期)、暗号化、アクセス制御の導入が推奨されます。将来的な改善点としては、並列処理による高速化、差分同期の最適化、整合性検証(git fsck 等)、systemdタイマーやコンテナ化による運用の標準化が考えられます。
プロジェクトの構成
主要なファイルとディレクトリ:
- BACKUP_REPOS.TXT: file
- LICENSE: file
- README.md: file
- mirror_repos.sh: file
- setup_cron.sh: file
まとめ
シンプルで実用的なGitリポジトリのミラー自動化ツール。小規模なオンプレ保守や災害対策の第一歩に最適。
リポジトリ情報:
- 名前: opennav_epic_shelter
- 説明: Scripts for backing up key repos in case of catastrophic disaster
- スター数: 2
- 言語: Shell
- URL: https://github.com/open-navigation/opennav_epic_shelter
- オーナー: open-navigation
- アバター: https://avatars.githubusercontent.com/u/62168404?v=4
READMEの抜粋:
GitHub Repository Mirror Backup System
This system automatically mirrors GitHub repositories to your local machine, preserving all branches, tags, and refs. The mirrors are kept in sync with daily automatic updates via cron.
Features
- Mirror multiple GitHub repositories with a single command
- Preserves all branches and tags (no pruning)
- Automatic daily updates at midnight via cron
- Detailed logging of all backup operations
- Automatic log rotation (keeps last 30 days)
- Color-coded …