На сервере установите git
cd /
git init
git add .
git commit -a -m "Yes, this is server"
Затем /.git/
укажите на сетевой диск (SAN, NFS, Samba и т. Д.) Или другой диск. Используйте обновление cron каждый час / день и т. Д., Чтобы обновить изменения. Каталог .git будет содержать версионную копию всех файлов сервера (за исключением бесполезных / сложных, таких как / proc, / dev и т. Д.)
Для не важного сервера разработки, где я не хочу хлопот / затрат на его настройку в надлежащей системе резервного копирования и где резервное копирование будет только для удобства (т.е. нам не нужно делать резервные копии этого сервера, но это сохранит Некоторое время, если что-то пошло не так), может ли это быть правильным решением для резервного копирования или оно просто упадет в большую кучу кормы?
Ответы:
Ты не глупый человек. Использование
git
в качестве механизма резервного копирования может быть привлекательным, и, несмотря на то, что говорили другие,git
прекрасно работает с двоичными файлами. Прочтите эту страницу из Git Book для получения дополнительной информации по этой теме. По сути, посколькуgit
не используется механизм дельта-хранилища, на самом деле его не волнует, как выглядят ваши файлы (но утилитаgit diff
довольно мала для бинарных файлов со стандартной конфигурацией).Самая большая проблема с использованием
git
для резервного копирования заключается в том, что он не сохраняет большинство метаданных файловой системы. Конкретноgit
не записывает:Вы можете решить эту проблему, написав инструменты для явной записи этой информации в свой репозиторий, но это может быть сложно сделать правильно.
Поиск в Google по метаданным git backup дает ряд результатов, которые, по-видимому, стоит прочитать (включая некоторые инструменты, которые уже пытаются компенсировать проблемы, которые я здесь поднял).
etckeeper был разработан для резервного копирования
/etc
и решает многие из этих проблем.источник
Я не использовал его, но вы можете посмотреть на bup, который является инструментом резервного копирования на основе git.
источник
Это может быть правильным решением для резервного копирования, etckeeper основан на этой идее. Но следите за
.git
правами доступа к каталогу, иначе нажатие/etc/shadow
может быть читаемым в.git
каталоге.источник
Хотя технически вы могли бы сделать это, я бы поставил против этого две оговорки:
1, вы используете систему контроля версий для двоичных данных. Поэтому вы используете его для чего-то, для чего оно не было разработано.
2, я беспокоюсь о вашем процессе разработки, если у вас нет процесса (документированного или автоматизированного) для сборки новой машины. Что, если вам удастся купить автобус, который будет знать, что делать и что важно?
Аварийное восстановление важно, однако лучше автоматизировать (создать сценарий) настройку нового блока разработки, чем просто сделать резервную копию всего. Обязательно используйте git для своего скрипта / документации, но не для каждого файла на компьютере.
источник
Я использую git в качестве резервной копии для моей системы Windows, и это было невероятно полезно. Внизу поста я показываю сценарии, которые я использую для настройки в системе Windows. Использование git в качестве резервной копии для любой системы дает 2 больших преимущества:
Итог: резервное копирование git дает вам невероятные возможности контролировать процесс резервного копирования.
Я настроил это в моей системе Windows. Первым шагом является создание локального репозитория git, куда вы будете фиксировать все свои локальные данные. Я рекомендую использовать локальный второй жесткий диск, но с тем же жестким диском будет работать (но ожидается, что вы перенесете это куда-нибудь на удаленный диск, или, в противном случае, на ваш жесткий диск, если жесткий диск умрет).
Сначала вам нужно установить cygwin (с rsync), а также установить git для Windows: http://git-scm.com/download/win
Затем создайте ваше локальное git-репо (запускайте только один раз):
INIT-repo.bat:
Далее у нас есть оболочка для скрипта резервного копирования, которая будет регулярно вызываться планировщиком Windows:
gbackup.vbs:
Далее у нас есть сам скрипт резервного копирования, который вызывает оболочка:
gbackup.bat:
У нас есть файл exclude-from.txt, в который мы помещаем все игнорируемые файлы:
исключить-from.txt:
Вам нужно будет перейти к любым удаленным репозиториям и выполнить «git init --bare» для них. Вы можете проверить скрипт, выполнив скрипт резервного копирования. Предполагая, что все работает, перейдите к планировщику Windows и укажите почасовую резервную копию файла VBS. После этого вы будете иметь историю git вашего компьютера за каждый час. Это чрезвычайно удобно - каждый случайно удаляет раздел текста и пропускает его? Просто проверьте ваш репозиторий git.
источник
Ну, это неплохая идея, но я думаю, что нужно поднять 2 красных флага:
... но все же, это может быть хорошей резервной копией для вещей, связанных с коррупцией. Или, как вы сказали, если папка .git / находится где-то еще.
... Так что вам, возможно, придется сказать своему cronjob добавить теги, а затем убедиться, что коммит, который не был помечен, будет очищен.
источник
rm -Rf /
это вызвало бы некоторые проблемы. Наша текущая система резервного копирования хранит информацию в течение 2 лет или 50 версий (в зависимости от того, что наступит позже), поэтому резервное копирование в любом случае постоянно увеличивается. Но мне нравится идея добавления тегов, у нас могут быть теги «ежедневно», «еженедельно» и т. Д.Я не пробовал это с полной системой, но я использую это для своих резервных копий MySQL (с опцией --skip-extended-insert), и это действительно хорошо работает для меня.
Вы столкнетесь с проблемой двоичных файлов данных (все их содержимое может и будет меняться), и у вас могут возникнуть проблемы с увеличением
.git
размера папки. Я бы порекомендовал настроить.gitignore
файл и выполнять резервное копирование только тех текстовых файлов, которые вам действительно нужны.источник
Однажды я разработал решение для резервного копирования на основе Subversion. Хотя он работал довольно хорошо (а git должен работать еще лучше), я думаю, что здесь есть лучшие решения.
Я считаю rsnapshot быть один из лучших - если не лучше. При хорошем использовании жестких ссылок у меня есть файловый сервер объемом 300 ГБ (с полмиллиона файлов), с ежедневным, еженедельным и ежемесячным резервным копированием на срок до одного года. Общее используемое дисковое пространство составляет только одну полную копию + инкрементную часть каждой резервной копии, но благодаря жестким ссылкам у меня есть полная «живая» структура каталогов в каждой резервной копии. Другими словами, файлы напрямую доступны не только в daily.0 (самая последняя резервная копия), но даже в daily.1 (yestarday) или еженедельно.2 (две недели назад) и так далее.
Перераспределив папку резервного копирования с помощью Samba, мои пользователи могут извлечь файл из резервных копий, просто указав свой компьютер на сервере резервного копирования.
Другим очень хорошим вариантом является rdiff-backup , но так как мне нравится, чтобы файлы всегда были доступны, просто отправив Explorer в \\ имя_сервера, rsnapshot стал для меня лучшим решением.
источник
У меня была та же идея сделать резервную копию с помощью git, в основном потому, что она позволяет создавать резервные копии. Затем я увидел rdiff-backup , который обеспечивает эту функциональность (и многое другое). У него действительно приятный пользовательский интерфейс (посмотрите на параметры CLI). Я вполне доволен этим. Это
--remove-older-than 2W
довольно круто. Это позволяет вам просто удалить версии старше 2 недель.rdiff-backup
хранит только различия файлов.источник
Я чрезвычайно новичок в git, но разве ветки не являются локальными по умолчанию и должны быть явно переданы в удаленные репозитории? Это был неприятный и неожиданный сюрприз. В конце концов, я не хочу, чтобы все мои локальные репозитории были «зарезервированы» на сервер? Чтение git book :
Для меня это означало, что эти локальные ветки, как и другие не git-файлы на моем локальном компьютере, рискуют быть утерянными, если не будут регулярно создаваться резервные копии не-git-средствами. Я делаю это в любом случае, но это сломало мои предположения о мерзавце 'резервное копирование всего' в моем репо. Я хотел бы разъяснений по этому поводу!
источник
Я обнаружил, что это хорошая методология для моих разработчиков. Это меняет их с того, что необходимо создать резервную копию только для конечной точки развертывания.
Все манифесты конфигурации и установки хранятся в Puppet, что упрощает повторное развертывание и обновление конфигурации. Каталог Puppet поддерживается с помощью git. Кикстарт используется для первоначального развертывания.
Я также держу собственный репозиторий YUM для любых пакетов, которые разрабатываются в то время. Это дает дополнительное преимущество, заключающееся в том, что любые пакеты, с которыми мы работаем, не просто оставляются в виде необязательных двоичных файлов в локальной системе - если это происходит, и файлы хорошо очищаются. Кто-то не выполнил правильную процедуру.
источник
Возможно, вы захотите проверить bup на github, который был разработан для использования git для резервного копирования.
источник
Это подход, который используется, это имеет смысл.
Keepconf использует rsync и git для этой работы, это оболочка для этих инструментов, чтобы упростить задачу.
Вам нужен только центральный сервер с ssh-ключами, настроенными для доступа к серверам резервного копирования, и несколько строк в файле конфигурации. Например, это мой собственный файл для хранения всех / etc / и установленных пакетов debian:
Теперь у меня есть резервная копия rsync и коммит git.
источник
Мое личное мнение, что это в основном все назад. Вы помещаете файлы в решение для резервного копирования, а не извлекаете их.
Гораздо лучше было бы сначала централизовать конфигурацию сервера, а затем свернуть ее, используя что-то вроде марионетки.
Тем не менее, это может сработать, я просто не думаю, что это будет так хорошо.
Попробуйте заглянуть в backuppc - он довольно прост в настройке и откровенно великолепен.
источник
Это будет работать несколько, но две оговорки.
Добавления файлов не будут приниматься автоматически, когда вы делаете коммит. Используйте --porcelean om git status, чтобы найти новый материал для добавления перед выполнением коммита.
Почему хлопот удаленного монтирования для .ssh? Это может быть хрупким Bd, вы не будете знать, что это не удалось. Используйте пустой репозиторий для дальнего конца с обычным логином ssh-ключа. Пока репозиторий пуст и вы используете только один источник, он гарантированно будет работать без слияния.
источник