Випадково виконано sudo rm / * на віддаленому сервері


11

Я випадково виконаний rm /*під час реєстрації як root на віддаленому сервері Ubuntu та видалив майже всі бінарні файли, і в даний час я не можу ні ввійти через ssh, ні ftp, щоб відновити файли (і сподіваюся на найкраще).

Чи є спосіб якось виправити цей безлад, або мені слід зателефонувати в центр обробки даних і запитати формат?


2
Чи можете ви підтвердити, це фізичний чи віртуальний сервер? Також ви привели -rаргумент до rmчи дійсно просто виконували показану вами команду. Чи надає ваш хостинг-провайдер будь-який спосіб отримати доступ до зображень диска за межами конкретної машини?
Калеб

Відповіді:


26

rm /*слід видалити дуже мало. Тут немає жодного -rпрапора, який би рекурсивно що-небудь видаляв, і без нього каталоги не видаляються (і навіть якщо каталоги були видалені, можна видалити лише порожні). Ця відповідь ґрунтується на припущенні, що ви не бігали rm -rf /*.

Єдиними файлами в кореневій файловій системі наслідків можуть бути символьні посилання на ядро ​​та initrd (хоча в одній системі Ubuntu, на яку я дивлюся, їх не існує), або /lib64посилання на 64-бітові системи.

Проблема може бути просто в тому, що /lib64 -> /libсимвольне посилання було видалено. Це дуже неприємно, оскільки майже кожна програма покладається на це символьне посилання:

$ ldd /bin/bash
...
    /lib64/ld-linux-x86-64.so.2 (0x00007f8946ab7000)

Це ld-linuxдинамічний завантажувач, і якщо він недоступний, ви не можете запускати будь-які динамічні виконувані файли. Це зробить вкрай важким вхід у систему, і ви, можливо, не зможете взагалі.

Один рятівник може бути busybox. Запустіть це, щоб перевірити:

$ ldd /bin/busybox
    not a dynamic executable

У цьому випадку зайнятий бік повинен працювати, але питання полягає в тому, як його запустити?

Якщо у вас є доступ до запиту завантажувача завантажувача, можливо, ви зможете завантажитися init=/bin/static-sh, де static-sh є символьним посиланням на busybox(перевірте, чи /bin/static-shіснує це в моїй системі, але це не є стандартним Ubuntu. Ця помилка підказує, що вона доступна .)

Щойно у вас є коренева оболонка, ви можете знову створити /lib64посилання. Вам може знадобитися спочатку повторно встановити кореневу файлову систему під час читання / запису. busbox повинен мати вбудовані інструменти, які можна запустити наступним чином:

# busybox mount -o remount,rw /
# busybox ln -s /lib /lib64
# /bin/bash
bash# 

Якщо bash працює, проблему слід вирішити.


18

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

Якщо вам нічого не потрібно, просто замовте їх перевстановити. Майже завжди більш швидкий варіант, коли ви важко костите речі.


2
Збіг. Якщо вони досить компетентні VM-сервіси, вони повинні це зробити. Зверніться до них якомога швидше, щоб переконатися, що вони все ще мають попереднє резервне копіювання.
Шадур

2

Якщо ви щойно видалили / lib64 посилання на / lib, і консоль все ще відкрита, просто виконайте:

/lib/ld-linux-x86-64.so.2 /bin/ln -s /lib /lib64

і ви знову зможете нормально запускати команди. Налаштуйте шлях до фактичної бібліотеки ld. Ви також можете запустити будь-яку іншу команду, просто заздалегідь встановивши її на повний шлях до бібліотеки ld.


1

Без доступу до фізичного сервера ви не можете багато зробити.


Отже, чи потрібно запитати про формат, чи є спосіб відновити ці файли, не збиваючи все інше?
Мураха

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