Cofnij rekurencyjnie przenoszenie katalogu głównego

14

Mam komputer Ubuntu Desktop używany jako serwer. Dziś rano przypadkowo przeniosłem cały mój root../

 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

Byłem połączony zdalnie w ssh. Teraz nie mam już dostępu. Nie mogę także wyświetlić Webmina.

Więc teraz nie mogę zrestartować systemu poprawnie? I muszę fizycznie uzyskać dostęp do konsoli systemowej i wpisać następujące polecenie:

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

dobrze?

Gdzie poszedł mój katalog główny i jak mogę go odzyskać? Czy powyższe polecenie zadziała?

MaxDL
źródło
10
Łał! To imponujący błąd! :(
Sparhawk
3
Czy rozumiem poprawnie, że katalog roboczy w tym czasie był /? Jeśli tak, to kiedy próbuję mv tempdir/ ../, mv: ‘tempdir/’ and ‘../tempdir’ are the same filenic się nie porusza.
Sparhawk,
Następnym razem nie loguj się jako root. A jeśli masz zamiar to zrobić, mvdodaj -iprzełącznik.
Braiam
1
Nie zgadzam się. Czasami chcesz zalogować się jako root, zamiast nauczyć się bezmyślnego stawiania „sudo” przed każdym poleceniem. Bądź jednak ostrożny, gdy zalogujesz się jako root. Zwłaszcza z poleceniami usuwania i przenoszenia. --- Mimo to zdarzają się błędy i uczymy się na ich podstawie. @MaxDL: Czy możesz przywrócić partycję / z kopii zapasowej? Czy masz kopie zapasowe? Czy możesz użyć Dell DRAC, HP ILO lub innego narzędzia zdalnego dostępu, aby uzyskać dostęp do konsoli serwerów bez uruchamiania systemu operacyjnego?
Hennes,

Odpowiedzi:

12

Nie przeniosłeś katalogu głównego (nie możesz), po prostu przeniosłeś prawie wszystko w nim do katalogu nadrzędnego jakiejkolwiek ścieżki, na której byłeś.

Aby to skomplikować, przeprowadziłeś się również mv, aby nie działało zgodnie z oczekiwaniami. Poniższe informacje powinny działać (o ile nie zrestartowałeś się od momentu zadania tego pytania!), Jeśli nadal jesteś w tym samym katalogu, w którym byłeś podczas odpalania ostatniego mv.

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

Jeśli nie masz żadnego z nich, po prostu pomiń je w poleceniu.

A jeśli nie masz dostępu (nie będziesz mógł zrobić nowego logowania, gdy wszystko jest w tym stanie) będziesz musiał zamontować system plików na zewnątrz (poprzez coś takiego jak LiveCD i zamontować system plików, a następnie przenieść pliki we właściwe miejsce. Odpowiedź Braiam powinna pomóc w tej części.

Oli
źródło
To, co mnie zdezorientowało, to linia root@server:/# ls, która sugerowała mi, że bieżący katalog to /. (Stąd mój drugi komentarz powyżej.)
Sparhawk
Przepraszamy, to jest kompletne polecenie: root @ server: / tmp / UPS / up / upsilon # mv / * ../ Byłem połączony zdalnie w ssh. Teraz nie mam już dostępu.
MaxDL
Następnie polecenie naprawy to/tmp/UPS/up/bin/mv /tmp/UPS/up/{bin,boot,etc,home,media,mnt,opt,root,sbin,selinux,usr,var,vmlinuz*} /
Sparhawk,
10

Jeśli już się zrestartowałeś lub wylogowałeś, możesz uruchomić system LiveCD / USB, aby naprawić swój system. Mam zamiar pominąć część, w której wiesz, jak utworzyć system Live i uruchomić z Ubuntu (alternatywna płyta CD również działa, po prostu wrzuć do powłoki roota):

Najpierw powinieneś gdzieś zamontować swój system, więc:

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

Zakładam, że /dev/sda1to twój root. Jeśli się rozdzieliłeś /binlub /usrteż powinieneś je zamontować:

mount /dev/sda2 /mnt/system/usr

Teraz powinieneś dotrzeć do katalogu, w którym byłeś przed katastrofą:

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

Teraz z poleceniem, które dał Oli, które skopiuję ze szczerością:

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

Teraz sprawdź, czy wszystko jest w porządku:

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

Uruchom ponownie system i zachowaj ostrożność w przyszłości.

Braiam
źródło
1

Miałem ten problem, okazało się, że muszę wywołać polecenie mv w następujący sposób:

/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} /

Mam nadzieję, że to pomaga innym.

Johny
źródło