Синхронизировать каталог Linux /etc/

Синхронизировать каталог Linux /etc/

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

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

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

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

решение1

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

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

решение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

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

Связанный контент