Перейти к содержимому

Миграция с hosts-sync

Предшественником был bash-скрипт hosts-sync плюс каталог с *.hosts и блок в /etc/hosts между маркерами # >>> hosts-sync begin >>>. Способов перейти два, и различаются они тем, останутся ли старые файлы.

Terminal window
sudo hostsctl migrate --from /path/to/old/hosts-dir

Импортирует все *.hosts в конфиг (группа на файл, комментарии сохраняются, закомментированные строки становятся выключенными записями), затем убирает блок hosts-sync из /etc/hosts и рисует свой. После этого старый скрипт и его файлы можно удалить.

Импортировать, пока не трогая /etc/hosts:

Terminal window
hostsctl import /path/to/old/hosts-dir
hostsctl list --all
hostsctl diff
sudo hostsctl apply --drop-legacy

Вариант 2 — оставить файлы и управлять ими на месте

Заголовок раздела «Вариант 2 — оставить файлы и управлять ими на месте»

Если файлы *.hosts хочется оставить там, где они лежат, подключи их файлами-зонами — тогда копирования в конфиг не будет вообще:

Terminal window
hostsctl zone add '/Users/you/Work/hosts/*.hosts'
sudo hostsctl apply --drop-legacy

Файлы остаются источником правды и остаются пригодными для правки руками. Одна оговорка: первая же правка через CLI перепишет файл форматированием hostsctl — колонки выровняются, шапка уедет наверх. Содержимое сохранится, раскладка нет.

Пока не передан --drop-legacy (или не запущен migrate), блок hosts-sync остаётся в /etc/hosts, и hostsctl только предупреждает о нём. Предупреждение существенное: если оба блока задают одно имя, выигрывает тот, что стоит в файле раньше, — и оставленный старый блок может выглядеть как сломанный новый.

Terminal window
hostsctl status # покажет оба блока и диапазоны их строк

Если hosts-sync никогда не было, а в /etc/hosts накопились записи, которые хочется взять под управление:

Terminal window
hostsctl init
# перенеси нужные строки в конфиг, например
hostsctl add 10.0.0.7 stand.local --group work
hostsctl diff

hostsctl намеренно не засасывает весь существующий файл в конфиг: строки, которыми он не управляет, продолжают работать ровно как раньше, и брать за них ответственность незачем. Перенеси то, чем действительно хочешь управлять, а остальное оставь как есть.