полное восстановление /etc/ из git

полное восстановление /etc/ из git

У меня сервер CentOS 6.9.

Весь /etcкаталог находился под контролем версий.

Я случайно запустил на нем 'git rm -R'. Сервер сразу же перестал работать, моя ssh-сессия потерялась.

Мне удалось подключить IP-консоль к серверу и, загрузив с USB-накопителя Live Linux, я запустил 'git reset --hard'.

Теперь index/working dir чист. Я перезагрузил систему, но она все еще не работает. Она отвечает на ping, но я все еще не могу подключиться к ней по ssh.

На IP-консоли я даже не могу войти в систему, после ввода любого пользователя система снова запрашивает имя пользователя.

Из восстановления Linux я проверил ошибки /var/log/boot.log— первая ошибка касается iptables-restore

error while loading shared libraries libip4tc.so.0 : cannot open shared object file: No such file or directory

Далее следует rsyslog.d

CONFIG ERROR: could not interpret master config file '/etc/rsyslog.conf'

Файл явно там, если я проверю из recovery live linux. Я подозреваю, что какая-то проблема с правами доступа, но на самом деле понятия не имею.

Любая помощь приветствуется. Спасибо.

решение1

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

Сам по себе git не отслеживает владельца и права доступа к файлам. Он не для этого. Эти метаданные вообще не отслеживались и поэтому были утеряны.

Это то, что нравится системамetckeeperдля. Они оборачивались вокруг git, чтобы поддерживать /etcконтроль версий, а также сохраняли метаданные, которые git не хранит, и восстанавливали их при необходимости. Чтобы предотвратить это в будущем, рассмотрите возможность использования etckeeper или аналогичного инструмента.

Вы также можете захотеть создать своего рода резервные копии. В настоящее время у вас, похоже, нет никаких резервных копий, и это рецепт катастрофы. Вам повезло, что вы отделались такой незначительной потерей данных. В следующий раз вам может не повезти.

решение2

Да, у вас проблема с разрешением и владением файлом. К сожалениюgit хранит только содержимое и исполняемый фрагмент файла, поэтому разрешения на чтение/запись, права собственности пользователей и групп, а также списки управления доступом (ACL), если таковые имеются, теряются при восстановлении из git reset --hard. Этого более чем достаточно, чтобы сломать ваш хост, если восстанавливаемый каталог — /etc.

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

Если у вас нет ни одного из них, вы можете попробовать перестроить владельца и разрешения вручную, сравнив их с аналогичным хостом CentOS. Но может оказаться, что переустановить ОС с нуля будет проще. Извините.

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