Зеркально отразить репозиторий, потянув? - PullRequest
40 голосов
/ 03 мая 2010

Мне интересно, есть ли простой способ, например, простая задача cron, регулярно вытягивать из удаленного репозитория git в локальное зеркало только для чтения для целей резервного копирования?

В идеале это будет тянуть все ветви и метки, но мастер / ствол / голова будет достаточно.

Мне просто нужен способ убедиться, что в случае смерти главного git-сервера у нас есть резервная копия, к которой мы могли бы вручную переключиться.

Ответы [ 3 ]

59 голосов
/ 03 мая 2010

Сначала создайте зеркало с

git clone --mirror git@somewhere.com:repo.git

затем настройте работу cron следующим образом:

*/1 * * * * gitbackup cd /backup/repo.git && git fetch -q --tags

Это будет резервировать наборы изменений каждую минуту. Может быть, вы хотите делать это реже.

9 голосов
/ 03 мая 2010

Как заметил Эндрю, каждый клон git-репо является полноценной резервной копией репо. Тем не менее, если вы хотите, чтобы что-то автоматически копировалось на определенную машину, вы можете создать пустое хранилище на сервере резервного копирования, вставив в него все ветви, для которых вы хотите создать резервную копию, чтобы изначально заполнить это. Затем просто установите хук пост-обновления в «основном» репо, чтобы, как только были зафиксированы коммиты, он продолжал и толкал их в резервное репо. Нет необходимости в работе cron или rsync, и это почти живая копия.

0 голосов
/ 03 мая 2010

у вас есть прямой доступ к серверу? тогда вы можете просто rsync каталог .git

...