Я только что удалил «/ bin». Какой лучший способ восстановить?
10
Я просто побежал (не нарочно!) 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>, потому что (поскольку вы работаете с предварительной версией, которую, как говорит Sysadmin Cat, нет в производственных системах), версии пакетов Вы только что извлекли, вероятно, будут отличаться от тех, которые были в системе раньше, и вы хотите убедиться, что система точно знает, что к чему.
Хороший ответ, но я что-то упустил? Не dpkg-query -S /binсделал бы то же самое, что ваша grep .. | sedстрофа? Если необходимо очистить список, чтобы в списке было по одному имени пакета в строке, он dpkg-query -S /bin | sed 's/\,\ /\n/g'работает (хотя в последней строке есть дополнительный: / bin).
Янне Пиккарайнен
1
Да, это было бы - я пытался минимизировать количество выполняемых вещей в целевой системе на случай, если во что бы то ни было нужно что-то запускать /bin, и я не хотел полагаться на что-то специфичное для Debian в системе спасения, чтобы сделать это как Вообще, насколько это возможно для будущих искателей.
Уомбл
Кажется, что это список только основных системных утилит - разве нет других пакетов, в которых есть файлы /bin? Должен ли я переустанавливать каждый пакет в моей системе или только те, которые сгенерированы в результате списка? (Также: спасибо, я люблю тебя!)
Том Мартинал
1
Как правило, только необходимые пакеты содержат файлы /bin- большинство пакетов должны хранить все свои данные /usr. В моей системе только несколько несущественных пакетов (например zsh) находятся в /binсписке «есть вещи в ». Между прочим, это отличный способ показать любовь ...
womble
1
Я следовал вашим инструкциям, и они отлично работали - мой сервер восстановлен и работает. Большое спасибо за помощь!
Том Мартинал
5
Хотя ваша стратегия может работать (есть хорошие шансы на это, больше, если после того, как вы скопируете обратно в каталог bin, вы выполните apt-get переустановку всех пакетов в вашей системе), она может привести к проблемам в будущем, потому что вы можете получить нестабильный сервер.
Если бы это случилось со мной, я бы переустановил и восстановил из ежедневной резервной копии. У вас есть ежедневная резервная копия - план аварийного восстановления - не так ли?
Если у вас не было плана аварийного восстановления, я бы предложил сделать резервную копию всех файлов конфигурации и данных, которые вы хотите сохранить, и продолжить переустановку. Таким образом, вы будете уверены, что у вас снова будет стабильный сервер.
догадываясь, поскольку он написал здесь, как восстановить папку / bin, у него нет резервной копии.
Гоз
К сожалению, у меня нет ежедневного резервного копирования. По иронии судьбы, сценарий bash, который я писал в то время, был сценарием ежедневного резервного копирования. Похоже, я буду переустанавливать - спасибо за совет.
Том Мартинал
Нет необходимости переустанавливать; смотри мой ответ.
Уомбл
Снимки файловой системы чрезвычайно полезны для восстановления после таких вещей. К сожалению, файловые системы ext2 / 3/4 не реализуют их, и выполнение этого с LVM приводит к значительному снижению производительности. Если я случайно удаляю / bin в своем блоке FreeBSD, я просто монтирую более ранний снимок и копирую файлы обратно в живую версию файловой системы. OS X предположительно также имеет это (это называют "машиной времени" там).
оснастка
3
Я бы попытался создать виртуальную /binмашину, а затем скопировать содержимое на ваш поврежденный компьютер. Это должно заставить вас работать. Тогда беги
Самый простой способ, если у вас есть доступ к компьютеру, - это смонтировать файловую систему, сделать резервную копию всех ваших данных (просто в качестве меры предосторожности).
Затем вы можете переустановить Ubuntu как обычную установку; в принципе все ваши данные (home dir и т. д. и var) все еще должны быть там.
Есть способ переустановить все пакеты, чтобы / bin был снова заполнен, но это довольно сложно.
Файлы исчезли. Хотя вы можете попытаться «восстановить» файлы - я бы не советовал.
Примечание: я не запускаю Ubuntu (и некоторое время не использовал дистрибутивы Debian). Однако в прошлом я делал различные восстановления дистрибутивов, следуя подобному сценарию.
Ваш лучший курс действий:
загрузка с liveCD
используя liveCD смонтируйте вашу систему на somplace (скажем, /mnt/mint)
с помощью dpkg опрашивает все установленные пакеты:
# dpkg --admindir = / mnt / mint / var / lib / dpkg -l
установите все эти пакеты в папку / mnt / mint, используя apt-get, используя:
# apt-get -o RootDir = / mnt / mint ....
(Альтернатива № 1) Возможно, вам придется deboostrap /mnt/mint- не уверен
(альтернатива №2) Вы можете скопировать /binсодержимое liveCD на, /mnt/mint/binно я не знаю, использует ли liveCD для mint busybox, что может усложнить ситуацию - альтернатива №1 в этом случае кажется более безопасной.
как правило, это должно вернуть ваши файлы путем «перебора» всего, что у вас есть. Вы можете сделать немного больше «хитрых» трюков и запросить все пакеты, которые отбросили двоичные файлы в / bin
dpkg-query -S /bin
сделал бы то же самое, что вашаgrep .. | sed
строфа? Если необходимо очистить список, чтобы в списке было по одному имени пакета в строке, онdpkg-query -S /bin | sed 's/\,\ /\n/g'
работает (хотя в последней строке есть дополнительный: / bin)./bin
, и я не хотел полагаться на что-то специфичное для Debian в системе спасения, чтобы сделать это как Вообще, насколько это возможно для будущих искателей./bin
? Должен ли я переустанавливать каждый пакет в моей системе или только те, которые сгенерированы в результате списка? (Также: спасибо, я люблю тебя!)/bin
- большинство пакетов должны хранить все свои данные/usr
. В моей системе только несколько несущественных пакетов (напримерzsh
) находятся в/bin
списке «есть вещи в ». Между прочим, это отличный способ показать любовь ...Хотя ваша стратегия может работать (есть хорошие шансы на это, больше, если после того, как вы скопируете обратно в каталог bin, вы выполните apt-get переустановку всех пакетов в вашей системе), она может привести к проблемам в будущем, потому что вы можете получить нестабильный сервер.
Если бы это случилось со мной, я бы переустановил и восстановил из ежедневной резервной копии. У вас есть ежедневная резервная копия - план аварийного восстановления - не так ли?
Если у вас не было плана аварийного восстановления, я бы предложил сделать резервную копию всех файлов конфигурации и данных, которые вы хотите сохранить, и продолжить переустановку. Таким образом, вы будете уверены, что у вас снова будет стабильный сервер.
источник
Я бы попытался создать виртуальную
/bin
машину, а затем скопировать содержимое на ваш поврежденный компьютер. Это должно заставить вас работать. Тогда бегикоторый должен переустановить все пакеты, которые были в вашей системе.
источник
Самый простой способ, если у вас есть доступ к компьютеру, - это смонтировать файловую систему, сделать резервную копию всех ваших данных (просто в качестве меры предосторожности).
Затем вы можете переустановить Ubuntu как обычную установку; в принципе все ваши данные (home dir и т. д. и var) все еще должны быть там.
Есть способ переустановить все пакеты, чтобы / bin был снова заполнен, но это довольно сложно.
источник
Файлы исчезли. Хотя вы можете попытаться «восстановить» файлы - я бы не советовал.
Примечание: я не запускаю Ubuntu (и некоторое время не использовал дистрибутивы Debian). Однако в прошлом я делал различные восстановления дистрибутивов, следуя подобному сценарию.
Ваш лучший курс действий:
/mnt/mint
)/mnt/mint
- не уверен/bin
содержимое liveCD на,/mnt/mint/bin
но я не знаю, использует ли liveCD для mint busybox, что может усложнить ситуацию - альтернатива №1 в этом случае кажется более безопасной.как правило, это должно вернуть ваши файлы путем «перебора» всего, что у вас есть. Вы можете сделать немного больше «хитрых» трюков и запросить все пакеты, которые отбросили двоичные файлы в / bin
источник