Я просто сбежал (не специально!) rm -rf /bin
.
Я загрузил компьютер и использую Finnix, чтобы попытаться восстановить его. Мне удалось установить привод, и я подтвердил, что да, весь /bin
папка удалена.
Можно ли от этого вылечиться без переустановки ОС?
Я думаю, что могу настроить виртуальную машину с той же ОС и архитектурой (альфа-выпуск Ubuntu Server 11.10, x86) и установить все пакеты, которые я установил на сервере, а затем просто скопировать /bin
папка.
Это сработает? Мне лучше начать все сначала?
В общем, я бы склонялся к переустановке (из резервных копий, которые вам абсолютно необходимы). Но я чувствую себя хакером, поэтому вот другой способ (при условии, что ваша система смонтирована под /target
):
Получите список всех установленных пакетов, в которых есть файлы /bin
:
grep ^/bin/ /target/var/lib/dpkg/info/*.list | sed 's%^.*/\([^/\.]*\).list%\1%' >/tmp/pkglist
(В моей системе Debian Squeeze всего 34 пакета, почти все из которых являются основными)
Загрузите каждый из этих пакетов (я не стал беспокоиться о том, чтобы написать этот бит, поэтому просто зайдите на packages.ubuntu.com и загрузите их где-нибудь под /target
). Если вам повезет, некоторые из пакетов могут все еще плавать в /target/var/cache/apt/archives
.
Для каждого пакета запустите /target/usr/bin/dpkg -x <package> /target
. Я почти уверен dpkg
в наши дни самодостаточен и не должен ни к чему призывать /bin
сам.
После того, как вы снова поставите систему на ноги, убедитесь, что apt-get --reinstall install <all the packages from step 1>
, потому что (поскольку вы используете предварительный выпуск, который, по словам системного администратора Cat, запрещен для производственных систем), версии только что извлеченных пакетов, вероятно, будут отличаться от тех, которые были в системе раньше, и вы я хочу убедиться, что система точно знает, что к чему.
Хотя ваша стратегия может сработать (есть хорошие шансы на это, более того, если после копирования каталога bin вы выполните apt-get переустановку всех пакетов в вашей системе), она может вызвать проблемы в будущем, потому что вы можете получить нестабильный сервер.
Если бы это случилось со мной, я бы переустановил и восстановил из ежедневной резервной копии. У вас есть ежедневная резервная копия - план аварийного восстановления, не так ли?
Если у вас не было плана аварийного восстановления, я бы предложил сделать резервную копию всех файлов конфигурации и данных, которые вы хотите сохранить, и продолжить переустановку. Таким образом, вы будете уверены, что снова получите стабильный сервер.
Я бы попытался создать виртуальную машину, а затем скопировать содержимое /bin
к вашей поврежденной машине. Это должно помочь вам начать работу. Тогда беги
dpkg --get-selections | awk '{print $1}' | xargs -l1 aptitude reinstall
который должен переустановить все пакеты, которые были в вашей системе.
Самый простой способ, если у вас есть доступ к машине, - это смонтировать файловую систему, сделать резервную копию всех ваших данных (в качестве меры предосторожности).
Затем вы можете переустановить ubuntu как обычную установку; в принципе, все ваши данные (домашний каталог и т. д. и var) должны оставаться там.
Есть способ переустановить все пакеты, чтобы / bin был повторно заполнен, но это довольно сложно.
Файлы ушли. Хотя вы можете попытаться восстановить файлы, я бы не рекомендовал это делать.
Примечание: я не запускаю Ubuntu (и какое-то время не использовал дистрибутивы Debian). Однако в прошлом я выполнял восстановление различных дистрибутивов по аналогичному сценарию.
Ваш лучший курс действий:
/mnt/mint
)# dpkg --admindir=/mnt/mint/var/lib/dpkg -l
# apt-get -o RootDir=/mnt/mint ....
/mnt/mint
- Точно сказать не могу/bin
содержимое liveCD на /mnt/mint/bin
но я не знаю, использует ли liveCD для монетного двора busybox, что может усложнить ситуацию - альтернатива №1 в этом случае кажется более безопасной.обычно это должно вернуть ваши файлы путем "грубой переустановки" всего, что у вас есть. Вы можете проделать немного более «умных» трюков и запросить все пакеты, которые сбрасывают двоичные файлы в / bin.