Я не могу найти официального руководства по резервному копированию «живого» репозитория git.
Самый первый результат в google при поиске чего-то вроде этого:
https://joeyh.name/blog/entry/difficulty_in_backing_up_live_git_repositories/
Даже сотрудники KDE использовали подход, который привел к катастрофе:
http://jefferai.org/2013/03/29/distillation/
Я могу читать ответы на stackoverflow, serverfault, блоги ... но мне кажется, что здесь много путаницы. И этот дьявол кроется в деталях: я понимаю «инцидент с KDE» так, что они должны были запускать git fsck
после git clone
, поскольку git clone
не проверяет на наличие ошибок (но, опять же, ничего об этом в руководстве по git ...)
Итак: каков официальный способ резервного копирования живого репозитория git? Есть ли в руководстве что-нибудь о резервном копировании?
пакет git здесь полезно. Я уже давно использую это:
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
Главное - проверять все это, восстанавливая на тестовом сервере каждые несколько недель. Оберните некоторые журналы вокруг этого и получайте отчеты каждый раз, когда вы его используете, заставляйте его регистрировать контрольные суммы файлов, которые он генерирует, сколько времени занимает каждый из них и т. Д. Когда мир вокруг вас горит, и вам нужно восстановить, выполнение подготовки сейчас будет избавит вас от душевной боли.
Помните: резервная копия не создавалась, пока не была восстановлена.
Я не уверен, существует ли какой-либо «официальный» способ резервного копирования репозитория git, существует множество способов резервного копирования репозитория git, tar, zip, дампа файловой системы и т. Д., Это будет сильно зависеть от таких вещей, как размер окна резервного копирования.