У меня есть виртуальная машина с Linux (сервер Ubuntu), который используется в качестве прототипа для других машин. Иногда я делаю изменения в системе-прототипе и хочу импортировать эти изменения на другой компьютер.

Я знаю о Puppet, cfengine и FAI, но хочу что-то простое, например, скрипт rsync, который будет работать через ssh, когда это необходимо.

Основная цель - каталог /etc /. Но я не хочу синхронизировать некоторые личные файлы, например /etc /passwd /etc /shadow и так далее. Я не знаю всего этого.

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

2 ответа2

4

Простым решением может быть настройка git.

  • Установите git-репозиторий в вашем каталоге /etc
  • Настройте файл игнорирования, чтобы исключить вещи, которые вы не хотите переносить в удаленную систему.
  • Добавьте все, что не проигнорировано, в ваш репозиторий.
  • На производстве вытащите из хранилища dev по мере необходимости.
2

У вас уже есть ответ. rsync может делать то, что вы хотите, он запускает ssh, когда вы этого хотите, и он может легко игнорировать файлы, которые вы не хотите синхронизировать:

rsync -avP source:/etc/ /etc/ --exclude-from list-of-files-to-exclude

И просто добавьте список файлов, которые нужно исключить, в list-of-files-to-exclude . Например:

$ cat list-of-files-to-exclude
/passwd
/shadow

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .