Перемещенное мусорное ведро и другие папки! Как вернуть их?

Если у Вас есть утилиты GNU, попробовать

find . -type f -print0 | du --files0-from=-
13
26.07.2011, 20:42
4 ответа

Если у Вас все еще есть корневая оболочка, у Вас может быть шанс восстановить Вашу систему. Скажем, то, что Вы переместили все общие каталоги (/bin, /etc, /lib, /sbin, /usr — они - те, которые могли сделать восстановление трудным) под /oops.

Вы не сможете выйти mv управляйте непосредственно даже при определении полного пути /oops/bin/mv. Поэтому mv динамично связан; потому что Вы переместились /lib каталог, mv не может работать, потому что это не может найти библиотеки, которые составляют часть его кода. На самом деле это еще хуже, чем это: mv не может найти динамический загрузчик /lib/ld-linux.so.2 (имя может варьироваться в зависимости от Вашей архитектуры и варианта Unix, и каталог мог быть другим именем такой как /lib32 или /lib64). Поэтому, пока Вы не переместились /lib каталог назад, необходимо вызвать компоновщика явно, и необходимо указать путь к перемещенным библиотекам. Вот команда, протестированная на Debian, сжимают i386.

export LD_LIBRARY_PATH=/oops/lib:/oops/lib/i386-linux-gnu
/oops/lib/ld-linux.so.2 /oops/bin/mv /oops/* /

Вы, возможно, должны скорректировать это немного для других дистрибутивов или архитектуры. Например, для CentOS на x86_64:

export LD_LIBRARY_PATH=/oops/lib:/oops/lib64
/oops/lib64/ld-linux-x86-64.so.2 /oops/bin/mv /oops/* /

Когда Вы завинтили что-то /lib, это помогает иметь статически связанную панель инструментов, лежащую вокруг. Некоторые дистрибутивы (я не знаю о CentOS), предоставляют статически связанную копию Busybox. Существует также пояс, автономная оболочка со многими встроенными командами. Если у Вас есть один из них, можно сделать восстановление оттуда. Если Вы не установили их перед фактом, слишком поздно.

# mkdir /oops
# mv /lib /bin /oops
# sash
Stand-alone shell (version 3.7)
> -mv /oops/* /
> exit

Если у Вас больше нет корневой оболочки, но у Вас все еще есть демон SSH, слушающий, и можно войти в систему непосредственно как корень по ssh, и у Вас есть одна из этих статически связанных панелей инструментов, Вы смогли к ssh в. Это может работать, если Вы переместились /lib и /bin, но нет /etc.

ssh root@broken.example.com /oops/bin/sash
root@broken.example.com's password:
Stand-alone shell (version 3.7)
> -mv /oops/* /

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

Если Вы не будете иметь корневой оболочки и не примете меры предосторожности, то необходимо будет загрузить из Linux живой CD/USB (любой сделает, пока это является достаточно недавним, чтобы смочь получить доступ дискам и файловым системам), и положите обратно файлы.

33
27.01.2020, 19:52
  • 1
    . Вы предоставили немного очень полезной информации о том, чего я должен остерегаться в будущем. –  Menelaos 27.07.2011, 03:06

Можно, вероятно, восстановиться без перезагрузки, не перезагружайте, пока Вы не попробовали некоторые другие вещи, потому что она не загрузится. Если у Вас все еще есть открытая попытка своей сессии SSH они:

  • То, где программы запущены от, установлено с помощью переменной $PATH. Можно добавить новое местоположение мусорного ведра для соединения каналом путем выполнения export PATH="$PATH:/newpath/to/bin:/newpath/to/usr/bin". Вы, возможно, должны добавить соответствующие sbin каталоги также. Можно также запустить программы вручную через их полный путь /path/to/mv [from] [to] например, должен работать, даже если mv находится в diffeent месте. Хитрая часть - то, что большинство команд собирается хотеть получить доступ к общим библиотекам, и Вы говорите /lib был перемещен так, необходимо установить переменную для того, где это также. export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/newpath/to/lib/:/newpath/to/usr/lib

  • После того как можно выполнить некоторые основные команды, положить обратно материал! mv /path/to/subfolder/* / был бы в порядке! После того как все вернулось на месте, система должна обычно вести себя.

Если это перестало работать, загружая КАКОЙ-ЛИБО LiveCD и монтируя, что диск должен позволить Вам класть обратно папки, где они принадлежат. Вы не должны переустанавливать или даже использовать свои дистрибутивы livecd, просто необходимо смонтировать диск и положить обратно папки к правильному местоположению на диске. Много основанного на Linux спасательного диска специализирует на предоставлении Вам всего несколько основных консольных инструментов, чтобы сделать этот вид восстановления.

11
27.01.2020, 19:52
  • 1
    Работа через SSH перестала работать, таким образом, я загрузил liveCD, и я пытаюсь получить вещи работать. Я в личинке и пытающийся смонтировать диск, но это не позволит мне, потому что ядро не загружается. и быть неспособностью для наблюдения точного тракта существующих путей ясно делает это трудным... –  Menelaos 26.07.2011, 22:22
  • 2
    Начальная загрузка для проживания смонтируйте диск, положите обратно вещи к их надлежащим местам, перезагрузку к системе... и удаче. –  Caleb 26.07.2011, 22:23
  • 3
    Недостаточно установить LD_LIBRARY_PATH, также необходимо вызвать динамический загрузчик явно, например. LD_LIBRARY_PATH=/newpath/to/lib /newpath/to/lib/ld-linux.so.2 /newpath/to/bin/mv. Спасибо Gilles –  Gilles 'SO- stop being evil' 27.07.2011, 02:21

Необходимо смочь перезагрузить компьютер с установочным CD в однопользовательском режиме, смонтировать корневую файловую систему и положить обратно файлы на Linux. Я не знаю много песни, но это похоже на RHEL, таким образом, это должно работать.

4
27.01.2020, 19:52
  • 1
    . Я загружаю его, поскольку мы говорим. Это имеет значение, если это - живой CD или целый DVD установки? –  Menelaos 26.07.2011, 19:59
  • 2
    @Menelaos: Вы не хотите устанавливать, Вы хотите что-то, что можно выполнить живой для этого решения. Некоторые диски установки имеют активные версии, но некоторые просто хотят установить немедленно. У некоторых действительно есть "спасательные" режимы, который является тем, что Вы хотите на самом деле, но существуют также выделенные спасательные диски Linux. Это не должен быть Ваш дистрибутив, это просто должно быть что-то, что может смонтировать файловую систему Linux и положить обратно папки. См. мой ответ. –  Caleb 26.07.2011, 20:54
  • 3
    Взгляды на sysresccd.org для наблюдения одного из спасательных CD, если Вам нравится Он, имеют обширную документацию, чтобы видеть, как использовать его. Помощь на использовании его для разрешения этой проблемы может быть трудной на этом форуме и вне моего доступного времени. Еще, CD песней должны помочь. Последний живой CD может или не может работать... Так имея в виду подобные проблемы, необходимо всегда сохранять установочный носитель / ISO версии, которую Вы установили. Также создайте резервное копирование всех файловых систем. –  Jamess 27.07.2011, 07:18

Большое спасибо Жилю, 5 лет спустя, а ваши посты все еще спасли мой день, если не неделю.

Я хотел переместить содержимое подпапки в текущую папку, но вместо mv sub/* . , я сделал mv sub /* . , поэтому я переместил все в текущую папку. К счастью, я нашел этот ответ и смог относительно легко починить свою машину. Однако мне пришлось немного изменить команды, так как я работаю на машине x86_64 под управлением Ubuntu 16.04. Я хотел бы оставить инструкции здесь, на случай, если кто-то затруднится:

export LD_LIBRARY_PATH=/oops/lib:/oops/lib/x86_64-linux-gnu
/oops/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 /oops/bin/mv /oops/* /
2
20.08.2021, 13:34

Теги

Похожие вопросы