Назад | Перейти на главную страницу

Контроль версий и резервное копирование, какая комбинация?

Я единственный разработчик и у меня 3 компьютера. К тому же у моего друга есть учетная запись, но он никогда ею не пользуется. Моя текущая настройка - это GIT + мое собственное специальное задание резервного копирования, которое клонирует репозиторий, архивирует его, gnupg и отправляет на удаленный ftp. Пока это действительно хорошо работает только для моего исходного кода / файлов docbook / xml + небольших двоичных файлов (в основном значков + некоторых изображений для использования с docbook).

Однако недавно я подключился к проекту флеш-игры и сделал для нее репозиторий, но FLA-файлы флеш-памяти огромны (я видел +70 МБ). И git repack с маленьким размером окна больше не может завершиться. Более того, я обнаружил, что в некоторых моих файлах используется возврат каретки вместо перевода строки, и GIT недоволен этими файлами. Когда я создавал репозиторий, я должен был настроить его на автоматическое преобразование CR в LF при фиксации. Однако я не знал об этих проблемах.

От отчаяния я попробовал Mercurial, но его максимальный размер составляет 10 МБ.

Я думаю, может быть, разбить мои проекты на двоичные файлы и держать их в состоянии подрывной деятельности, поскольку с двоичными файлами это нормально. И исходный код в GIT. Но это будет огромная задача, и почему-то это звучит как плохой план.

Какую систему контроля версий вы используете? Как вы его поддерживаете? и что вы делаете со своими двоичными файлами?

Это деф. плохой план, разделение ваших систем контроля версий!

Мы передаем двоичные файлы через SVN каждый день, где бы мы ни находились, некоторые из них тоже большие. Обратите внимание, что, конечно, вы не можете различать двоичный файл, и если ваш двоичный файл составляет 20 МБ, каждый раз, когда вы его фиксируете, вам понадобится еще 20 МБ места на вашем сервере Subversion.

Что касается наших резервных копий, мы просто запускаем SVNDump каждую ночь, сжимаем и выгружаем так же, как вы.

С учетом всего сказанного, этот вопрос, возможно, лучше задать для Переполнение стека ребята, так как они более тяжелые пользователи венчурного капитала, чем мы в SF!

(Не беспокойтесь о повторном создании этого вопроса, если достаточное количество людей согласится, он будет перемещен автоматически).

Вы хотите, чтобы ваши 70M файлов были зарезервированы, верно? Если да, то какую бы схему вы ни использовали, вы скопируете их на FTP-сайт хотя бы один раз. Если они вообще сжимаемы, вполне вероятно, что git выполнит практически лучшую работу по их сжатию, которая практически возможна.

Чтобы не копировать весь репозиторий на ваш FTP-сайт для каждой резервной копии, я бы посмотрел на

  1. если возможно, используя "git push" для резервного копирования или "git pull" с резервного сайта, если вы можете установить git на этом. Это будет отправлять только то, что отсутствует, а не повторно отправлять 70M файлов.
  2. если это невозможно, существует программное обеспечение, которое может выполнять дифференциальную передачу по «тупым» протоколам, таким как FTP. Я участвовал в написании одного много-много лет назад под названием «syncftp» (syncftp.sf.net). Мой друг Саймон (который написал большую часть syncftp) написал еще один инструмент, названный «gsync». Также есть "копия сайта", http://www.manyfish.co.uk/sitecopy/. Предостережение: вам нужно настроить свой git так, чтобы он не переупаковывал файлы вместе слишком много, поскольку процесс копирования будет основан на файлах, и если файл пакета изменится даже немного, он скопирует все это целиком. Таким образом, вы потеряете некоторую эффективность упаковки в репозитории, чтобы получить некоторую эффективность в использовании полосы пропускания резервного копирования.

(Я сохраню ваши файлы CRLF для другого ответа)

Что касается CRLF - посмотрите на git-config (1), особенно на параметр «core.autocrlf», который можно использовать для переключения поведения преобразования.