Я арендую часть (то есть VPS) у Slicehost. Я потратил день или два на заправку /usr
с моими любимыми пакетами, /etc
с конфигами и скриптами инициализации и так далее. Теперь я хочу:
Сохранение образа диска дает мне (1), но не (2) и (3).
Использование Subversion (svn import / svn://someotherhost
) может дать мне все три, но я ожидаю проблем, если я действительно попытаюсь проверить проект в /
и поддерживать каталоги .svn в корневых областях. И чтобы загрузить мою установку на новый фрагмент, мне нужно сначала установить на него клиент svn.
Есть ли хороший способ делать то, что я хочу делать?
Я предполагаю, что вы используете один из дистрибутивов мэра. Если бы мне нужно было сделать то же самое, что и вам, я бы использовал git для всего, что связано с файлами конфигурации (/ etc, / usr / local / etc и т.д.) Я бы избегал версии bin-файлов если вы не компилируете свои собственные пакеты.
И я бы использовал собственный менеджер пакетов каждого дистрибутива для репликации установки того же профиля пакета.
В случае с дистрибутивами на основе Debian это действительно просто:
dpkg --get-selections | grep '[[:space:]]install$'| awk '{print $1}' > packages-installed
а затем в новой системе:
cat packages-installed | xargs sudo apt-get install
С уважением
Я ожидаю, что git или другие распределенные виртуальные машины справятся с этим лучше, чем svn. Возможно, вы захотите посмотреть исходный код etckeeper, который в основном отслеживает / etc с помощью git, а также пару других dvc. Etckeeper, вероятно, можно было бы расширить или изменить для отслеживания всей файловой системы.
Я вижу два неочевидных решения.
Резервное копирование с использованием BackupPC, что позволяет легко проверять предыдущие версии и восстанавливать их. Можно сделать удаленно или локально.
Управление конфигурацией с помощью кукольный. Я не контролирую версии всех файлов на сервере. I марионеточные модули и манифесты управления версиями, которые описывают, какие изменения следует применить к серверу. Я вообще избегаю прикасаться к серверам вручную, а если и делаю, то дублирую изменения в марионетке.
Я использую оба. Конфигурация исходит из марионетки, версией которой является git, а управление версиями «пользовательских данных» (обслуживаемые веб-страницы, домашние каталоги и т. Д.) Обрабатывается backuppc.
Вы можете поставить / etc в SVN. Однако я бы использовал другой метод резервного копирования для / usr.