Повернення рухомого кореневого каталогу рекурсивно


14

У мене є Ubuntu Desktop, який використовується як сервер. Сьогодні вранці я випадково перенесла весь свій корінь на../

 root@server:/tmp/UPS/up/upsilon# mv /* ../
 mv: impossibile spostare "/dev" in "../dev": Dispositivo o risorsa occupata
 mv: impossibile spostare "/proc" in "../proc": Dispositivo o risorsa occupata
 mv: impossibile spostare "/run" in "../run": Dispositivo o risorsa occupata
 mv: impossibile spostare "/sys" in "../sys": Dispositivo o risorsa occupata
 mv: impossibile spostare "/tmp" in una sottodirectory di sé stessa, "../tmp"
 root@server:/tmp/UPS/up/upsilon# ls
 -bash: /bin/ls: No such file or directory

Мене віддалено підключили в ssh. Тепер я більше не можу отримати доступ. Я також не можу переглянути Webmin.

Отже, тепер я не можу перезапустити систему правильно? І я повинен фізично отримати доступ до системної консолі і ввести цю команду:

../bin/mv ../{bin,boot,etc,home,media,mnt,opt,root,sbin,selinux,usr,var,vmlinuz*}

правильно?

Куди пішов мій кореневий каталог і як його отримати назад? Чи спрацює вищевказана команда?


10
Оце Так! Це вражаюча помилка! :(
Sparhawk

3
Я правильно розумію, що в той час працював каталог /? Якщо так, коли я намагаюся mv tempdir/ ../, я отримую mv: ‘tempdir/’ and ‘../tempdir’ are the same file, ні з чим не рухаючись.
Sparhawk

Наступного разу не ввійдіть у систему як корінь. І якщо ви збираєтеся робити, mvдодайте -iперемикач.
Брайам

1
Я не погоджуюсь. Іноді ви хочете увійти як root, а не навчитися бездумно ставити 'sudo' перед кожною командою. Однак будьте обережні, коли входите в систему як root. Особливо з командами видалення та переміщення. --- І все-таки помилки трапляються, і ми вчимося з них. @MaxDL: Чи можна відновити / розділ із резервної копії? У вас є резервні копії? Чи можете ви використовувати Dell DRAC, HP ILO або інший інструмент віддаленого доступу для доступу до консолі серверів без завантаження ОС?
Геннес

Відповіді:


12

Ви не перемістили кореневий каталог (ви не можете), ви просто перемістили майже все, що знаходиться в ньому, до батьківського каталогу будь-якого шляху, на якому ви йшли.

Щоб ускладнити речі, ви також переїхали mvтак, що не буде працювати, як очікувалося. Наступне повинно працювати (доки ви не перезавантажувались після запиту!), Якщо ви все ще знаходитесь в тому самому каталозі, де ви були, коли ви випустили останній телевізор.

../bin/mv ../{bin,boot,etc,home,media,mnt,opt,root,sbin,selinux,usr,var,vmlinuz*} /

Якщо у вас немає жодного з них, просто опустіть їх із команди.

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


Мене бентежив рядок root@server:/# ls, який підказав мені, що поточний каталог є /. (Звідси мій другий коментар вище.)
Sparhawk

Вибачте, це повна команда: root @ server: / tmp / UPS / up / upsilon # mv / * ../ Мене віддалено підключили в ssh. Тепер я більше не можу отримати доступ.
MaxDL

Тоді команда виправити/tmp/UPS/up/bin/mv /tmp/UPS/up/{bin,boot,etc,home,media,mnt,opt,root,sbin,selinux,usr,var,vmlinuz*} /
Sparhawk

10

Якщо ви вже перезавантажили або вийшли з системи, ви можете завантажити систему LiveCD / USB, щоб виправити систему. Я пропущу частину, де ви знаєте, як створити Live-систему та завантажуватися з Ubuntu (альтернативний CD також працює, просто опустіться в кореневу оболонку):

Спочатку слід встановити свою систему десь так, щоб:

mkdir /mnt/system
mount /dev/sda1 /mnt/system

Я припускаю, що /dev/sda1це ваш корінь. Якщо ви розділили /binабо також /usrслід встановити їх:

mount /dev/sda2 /mnt/system/usr

Тепер вам слід прийти до каталогу, в якому ви були до катастрофи:

cd /mnt/system/tmp/UPS/up/upsilon

Тепер із командою, яку дав Олі, яку я скопіюю з нахабством:

mv ../{bin,boot,etc,home,media,mnt,opt,root,sbin,selinux,usr,var,vmlinuz*} /mnt/system/

Тепер перевірте, чи все в порядку:

# ls /mnt/system/
bin boot etc home media mnt opt root sbin selinux usr var etc...

Перезавантажте систему та будьте обережнішими в майбутньому.


1

У мене виникла ця проблема, я виявив, що мені потрібно викликати команду mv так:

/tmp/UPS/up/lib/ld-linux-x86-64.so.2 --library-path /tmp/UPS/up/lib/ /tmp/UPS/up/test/bin/mv /tmp/UPS/up/{bin,boot,etc,home,media,mnt,opt,root,sbin,selinux,usr,var} /

Сподіваюся, що це допомагає іншим.

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