Если у Вас есть утилиты GNU, попробовать
find . -type f -print0 | du --files0-from=-
Если у Вас все еще есть корневая оболочка, у Вас может быть шанс восстановить Вашу систему. Скажем, то, что Вы переместили все общие каталоги (/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 (любой сделает, пока это является достаточно недавним, чтобы смочь получить доступ дискам и файловым системам), и положите обратно файлы.
Можно, вероятно, восстановиться без перезагрузки, не перезагружайте, пока Вы не попробовали некоторые другие вещи, потому что она не загрузится. Если у Вас все еще есть открытая попытка своей сессии 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 спасательного диска специализирует на предоставлении Вам всего несколько основных консольных инструментов, чтобы сделать этот вид восстановления.
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, таким образом, это должно работать.
Большое спасибо Жилю, 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/* /