Git

gitリポジトリ単位で バックアップ、アーカイブ、リカバリ

やりたい事

  • リモートで管理しているgitリポジトリを丸ごとバックアップ、アーカイブ、リカバリしたかったのでメモ

実現するには…

  • バックアップ : --mirror オプションを付けて clone する
  • アーカイブ化 : clone したリポジトリをtarなどでアーカイブ化して保管
  • リカバリ方法 : --mirror=push オプションを付けて リモートリポジトリを作成

リモートリポジトリのバックアップ

  • --mirror オプションを付けてリモートリポジトリをclone
git clone --mirror "git@github/path/to/repo/repo.git" "/path/to/repo.git"
  • 通常のcloneとは異なり対象リポジトリの .git ディレクトリのみがCloneされる。
ls -al "/path/to/clone/repo.git"

アーカイブ化

  • --mirror でcloneしたディレクトリを丸ごと圧縮、保存してあれば後のリカバリに使える
  • tar.gz でアーカイブ化するなど...
tar -zcf "/path/to/archive.tar.gz" "/path/to/repo.git"

リポジトリをリモートリポジトリへ復元する

  • Clone済みの /path/to/repo.git ディレクトリへ移動してから作業する
cd "/path/to/repo.git"
  • --mirror オプションを付与して Pushする
git remote add --mirror=push origin "git@path.to.repo"
git push origin
  • Pushしたリポジトリを別名でCloneしなおすなどで過去のコミットログの反映状況を確認する

その他

  • gitホスティングのサービス間でリポジトリを移動させたい場合に利用できる。
  • リポジトリ単位でバックアップ、アーカイブ化する用途に使える。

参考