Я щойно видалив "/ bin". Який найкращий спосіб відновлення?


10

Я просто бігав (не нарочно!) rm -rf /bin.

Я завантажив комп'ютер і використовую Finnix, щоб спробувати відновити його. Мені вдалося встановити накопичувач і підтвердив, що так, вся /binпапка видалена.

Чи можливе відновлення після цього без перевстановлення ОС?

Я думаю, що я міг би встановити VM з тією ж ОС та архітектурою (Ubuntu Server 11.10 альфа-реліз, x86) та встановити всі пакунки, які я встановив на сервер, а потім просто скопіювати /binпапку.

Чи буде це працювати? Невже я краще починаю з початку?

Відповіді:


15

Взагалі я схиляюся до перевстановлення (з резервних копій, які ви, безумовно, повинні мати). Але я відчуваю хакерство, тож ось інший спосіб (якщо припустити, що ваша система встановлена ​​під /target):

  1. Отримайте список усіх встановлених пакетів, у яких є файли /bin:

    grep ^/bin/ /target/var/lib/dpkg/info/*.list | sed 's%^.*/\([^/\.]*\).list%\1%' >/tmp/pkglist
    

    (У моїй системі Debian Squeeze загалом 34 пакети, майже всі вони є основними)

  2. Завантажте кожен із цих пакетів (мені не вдалося зациклюватися на скрипті цього біту, тому просто натисніть пакети пакунків.ubuntu.com та завантажте їх десь під /target). Якщо вам пощастило, деякі пакунки все ще можуть плавати навколо /target/var/cache/apt/archives.

  3. Для кожного пакета запустіть /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 в останньому рядку).
Janne Pikkarainen

1
Так, це було б - я намагався мінімізувати кількість запущених матеріалів у цільовій системі на випадок, якщо все, що було запущено, потребує чогось /bin, і я не хотів покладатися на що-небудь, що стосується Debian, в рятувальній системі, щоб зробити це як якомога загальніші для майбутніх шукачів.
живіт

Здається, що це список лише основних системних утиліт - чи немає інших пакетів, у яких є файли /bin? Чи слід перевстановити кожен пакет моєї системи або лише ті, що генеруються в результаті списку? (Також: дякую, я люблю тебе!)
Том Мартенал

1
Зазвичай файли містять лише необхідні пакунки /bin- більшість пакунків повинні містити всі свої дані /usr. У моїй системі лише декілька несуттєвих пакетів (напр. zsh) В списку "має речі /bin". Оновлення - це чудовий спосіб виявити любов, до речі ...
утром

1
Я дотримувався ваших вказівок, і вони прекрасно працювали - мій сервер працює в режимі резервного копіювання та працює. Дякую тонну за допомогу!
Том Мартенал

5

Хоча ваша стратегія може спрацювати (є великі шанси на неї, більше, якщо, як тільки ви скопіюєте назад каталог бін, ви зробите вдалу перевстановлення всіх пакунків у вашій системі), це може спричинити проблеми в майбутньому, тому що ви можете отримати нестабільний сервер.

Якби це сталося зі мною, я би перевстановив і відновив із щоденної резервної копії. У вас є щоденне резервне копіювання - план відновлення після аварій - чи не так?

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


1
здогадуючись, оскільки він розмістив тут, як відновити папку / bin, у нього немає резервної копії.
Гез

На жаль, у мене немає щоденних резервних копій. Баш сценарій, про який я писав у той час, був, як не дивно, щоденним резервним сценарієм. Схоже, я буду перевстановлюватись - дякую за пораду.
Том Мартенал

Не потрібно перевстановлювати; дивіться мою відповідь.
живіт

Знімки файлової системи надзвичайно корисні для відновлення після таких речей. На жаль, файлові системи ext2 / 3/4 не реалізують їх, і за це за допомогою LVM передбачено велике покарання. Якщо я випадково видаляю / бін у вікні FreeBSD, я просто монтую попередній знімок і копіюю файли назад у реальну версію файлової системи. OS X нібито також має це (там його називають "машиною часу").
оснастка

3

Я б спробував створити VM, потім скопіювавши вміст /binна вашу пошкоджену машину. Це повинно вас встати і бігти. Потім бігайте

dpkg --get-selections  | awk '{print $1}' | xargs -l1 aptitude reinstall

який повинен перевстановити всі пакунки, які були у вашій системі.


1

Найпростіший спосіб, якщо у вас є доступ до машини, - це змонтувати файлову систему, зробіть резервну копію всіх своїх даних (так само, як запобіжна норма).

Тоді ви можете перевстановити ubuntu як звичайну установку; в принципі всі ваші дані (домашній dir, і т. д. і var) все ще повинні бути там.

Існує спосіб перевстановити всі пакети, щоб / bin перепоселився, але це досить складно.


0

Файлів немає. Хоча ви можете спробувати "відновити" файли - я б не рекомендував це.

Примітка: я не запускаю Ubuntu (і деякий час не використовував дистрибутивів Debian). Однак у минулому я робив різні відновлення дистрибуції за всіма аналогічними сценаріями.

Ваш найкращий спосіб дії:

  • завантаження з liveCD
  • за допомогою інтерактивного кріплення системи в іншому місці (скажімо, /mnt/mint)
  • використовуючи запит dpkg на всі встановлені пакети:
# dpkg --admindir = / mnt / mint / var / lib / dpkg -l
  • встановіть усі ці пакети у ваш / mnt / mint призначення за допомогою apt-get using:
# apt-get -o RootDir = / mnt / mint .... 
  • (альтернатива №1) Можливо, вам доведеться вивести з ладу /mnt/mint- не впевнений
  • (альтернатива №2) Ви можете скопіювати /binвміст liveCD на, /mnt/mint/binале я не знаю, чи LiveCD для монетного двору використовує busybox, що може ускладнити питання - альтернатива №1 у цьому випадку здається більш безпечною.

як правило, це повинно повернути ваші файли шляхом "грубої перевстановлення" всього, що у вас є. Ви можете зробити трохи більше "розумних" хитрощів та запитів для всіх пакетів, які викинули бінарні файли в / bin

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.