git bundle é útil aqui. Eu tenho usado isso por um tempo agora:
base_dir=/home/git
for gitrepo in 'ls -d *.git'
do
echo '**********[' ${gitrepo} ']***********'
repo_name=${gitrepo%.git}
echo cd ${base_dir}/${gitrepo}
cd ${base_dir}/${gitrepo}
backup_cmd="git bundle create /opt/git-backups/${repo_name}.bundle master"
verify_command="git bundle verify /opt/git-backups/${repo_name}.bundle master"
backup_cmd_all="git bundle create /opt/git-backups/${repo_name}-all.bundle --all"
verify_command_all="git bundle verify /opt/git-backups/${repo_name}-all.bundle "
echo -------- master only -------------------
${backup_cmd}
echo -------- all -------------------
${backup_cmd_all}
echo
echo
done
A chave é testar tudo, restaurando-o em um servidor de teste a cada poucas semanas. Envolva alguns registros em torno disso e obtenha relatórios cada vez que você usá-los, registre as somas de verificação dos arquivos gerados, quanto tempo cada um demorou etc. Quando o mundo estiver em chamas ao seu redor e você precisar restaurar a preparação agora poupar muita dor de cabeça.
Lembre-se: não foi feito backup até que tenha sido restaurado.
Não tenho certeza se existe alguma forma "oficial" de fazer backup de um repositório do git, há várias maneiras de fazer backup de um repositório do git, tar, zip, despejo de sistema de arquivos etc., vai depender muito de coisas como o tamanho da janela de backup.