У меня есть виртуальная машина с 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. И убедитесь, что вы позаботились о владельце файла и разрешениях.