I am wondering if there is an easy way, ie like a simple cron job, to regularly pull from a remote git repository to a local read only mirror for backup purposes?
Ideally it would pull all branches and tags, but the master/trunk/head would be sufficient.
I just need a way to make sure that if the master git server dies, we have a backup location that we could manually fail over to.
First create a mirror with
git clone --mirror git@somewhere.com:repo.git
then setup a cron job like this:
*/1 * * * * gitbackup cd /backup/repo.git && git fetch -q --tags
This will backup the changesets every minute. Maybe you want to do this less frequently.
As Andrew noted, every clone of a git repo is a full-fledged backup of the repo. That said, if you want something backed up automatically to a particular machine, you can create a bare repo on the backup server, push into it with all the branches you want backed up in order to initially populate it. Then just setup a post update hook on the "main" repo so that as soon as there are commits pushed in, it goes ahead and pushes them to the backup repo. No need for a cron job or rsync, and its an almost live copy.
do you have direct access to the server? then you could just rsync
the .git
directory