push против bundle против tar zcvf - для резервного копирования всего локального .git - PullRequest
14 голосов
/ 15 июля 2011

Я могу сделать резервную копию своего локального .git, отправив его в хранилище в два этапа:

git push --all ~/gitrepo
git push --tags ~/gitrepo

Я могу создать резервную копию с помощью git bundle .

Я могу создать резервную копию, просто скопировав весь каталог или заархивировав его (сжато!):

tar -zcvf gitrepo.tgz .git

И, вероятно, есть дополнительные способы резервного копирования всего local .git.

Вопрос теперь в том, действительно ли они эквивалентны?(например, подкаталог logs не выдвигается)

Каковы преимущества метода git push по сравнению с git bundle?

Можно ли считать tar -zcvf "идеальный git backup "?

Ответы [ 3 ]

8 голосов
/ 15 июля 2011

Я использую Git bundle

git bundle create /tmp/backup.git --all --tags --remotes

Вы можете получить его, как если бы это был репо:

cd myworktree
git pull /tmp/backup.git

Но также смотрите


Полнота, примечания

Для завершено резервное копирование (штука git-rerere cache, stashes, hooks, файлы конфигурации) я предлагаю использовать rsync

rsync -hxPavilyzH --stats --delete .git/ backup@remote:/repo/mirror.git/

В качестве альтернативы:

5 голосов
/ 15 июля 2011

Метод tar возможен, но он не проверяет целостность сохраненного репо: вы не будете знать, будет ли работать этот сжатый репо, пока вы не распакуете его и не попытаетесь клонировать или извлечь из него.

Я предпочитаю подход clone --mirror (с включенными флагами в результирующем репо).
И инкрементные резервные копии - это просто push.старый поток , a git stash до того, как резервная копия может позволить вам сохранить больше (индекс и рабочее дерево)

5 голосов
/ 15 июля 2011

Относительно tar: он сохраняет все: конфигурацию (удаленные URL-адреса), повторные журналы и т. Д. Вы можете захотеть повторные журналы, если случайно сделаете что-то действительно глупое в своем хранилище и , если ваш жесткий диск вылетитВскоре после этого.Надуманно, но tar легко и все делает.Используйте tar для создания резервных копий, git push для создания зеркал.Это разные виды задач.

Относительно сжатия: у меня 27-мерное репозиторий Git, почти полностью простой текст, а .tar.gz - это ... также 27M.Это не много сбережений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...