Бэкапы
hostsctl снимает копию целевого файла перед каждой записью — включая запись при откате, так что откат сам по себе обратим.
hostsctl backup list/var/db/hostsctl/backups 20260811-171531 412 B ← latest 20260811-165502 389 B 20260810-224417 389 BID снимка — YYYYMMDD-HHMMSS, что одновременно сортируется лексикографически и
хронологически. Две записи в одну секунду получают суффиксы -1, -2, а не затирают друг
друга.
sudo hostsctl backup restore # к последнему снимкуsudo hostsctl backup restore 20260810-171531 # к конкретномуПеред записью hostsctl показывает diff между текущим файлом и снимком, спрашивает
подтверждение (-y пропускает вопрос) и снимает копию текущего состояния. Пустой снимок
или снимок, который оставил бы систему без 127.0.0.1 localhost, отвергается.
hostsctl backup pruneУдаляет всё сверх settings.keep_backups (по умолчанию 20). apply чистит автоматически
после успешной записи, так что вручную это нужно только после уменьшения настройки.
keep_backups: 0 отключает чистку совсем.
Где они лежат
Заголовок раздела «Где они лежат»settings.backup_dir — /var/db/hostsctl/backups на macOS, /var/lib/hostsctl/backups
на остальных системах. Оба каталога принадлежат root, поэтому пишущие команды требуют root
даже когда сам целевой файл был бы доступен на запись.
Чтобы держать снимки в другом месте, укажи каталог, которым владеешь:
settings: backup_dir: /Users/you/.local/state/hostsctl/backupsЧем снимок не является
Заголовок раздела «Чем снимок не является»Снимок — копия целевого файла, а не конфига. Он возвращает /etc/hosts в прежнее
состояние, но конфиг остаётся прежним — и следующий apply откатит откат. Хочешь отменить
изменение конфига — правь конфиг; хочешь отменить запись — восстанови бэкап и потом почини
конфиг.