Gitのリポジトリ運用の要となるのが、バックアップ運用です。一般的には、定期的なバックアップを仕込むといった運用をしている所が多いと思います。一方で、定期作業であれば最終バックアップから障害発生時点でのデータ消失という危険性はあります。ということで、プッシュごとにフルバックアップが取れれば理想です。それも利用者が意識しない形でないといけません。
#Gitなので分散リポジトリから復旧という話もありますが。
ということで、Gitのフック機能でAmazon S3にバックアップするパターン例です。やり方は簡単で、リポジトリ毎のhooksの部分に同期スクリプトを呼び出すコマンドを書けば良いだけです。
post-receive,post-update等に記載
#!/usr/bin/env bash /foo/var/sync.sh &
ポイントは、&でバックグランドプロセスにした上で同期プログラムを呼び出すことです。何故ならデータ量に応じて、同期に時間が応じます。その間、コミットしたユーザを待たせるのを防ぐためです。
同期方法は、s3syncでもs3cmd syncでも何でも構いません。
sync.sh
s3cmd sync --verbose --recursive --delete-removed --reduced-redundancy /some/git/project s3://yourbuket/git/project
簡単便利で、安心のgit+s3のバックアップでした。もちろん、GitではなくSubversionでも大丈夫です。是非、お試しあれ!!
See Also:
Amazon EC2からS3にバックアップする為のS3Sync
Amazon Linux AMIにGit + Gitolite + Gitlabをインストールして、プライベートGitHubを構築する
Git+DropBoxで、プライベートリポジトリ作成。或いはGitをAmazon S3でバックアップ
週末プログラマにお薦め!!Subversion+DropBoxで似非分散型バージョン管理