루트 디렉토리를 재귀 적으로 이동


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.
Braiam

1
동의하지 않습니다. 때로는 모든 명령 앞에 무의식적으로 'sudo'를 넣는 법을 배우기보다는 루트로 로그인하려고합니다. 그러나 루트로 로그인 할 때는주의하십시오. 특히 삭제 및 이동 명령의 경우. --- 여전히 오류가 발생하고 우리는 그로부터 배웁니다. @MaxDL : 백업에서 / partion을 복원 할 수 있습니까? 백업이 있습니까? OS를 부팅하지 않고 Dell DRAC, HP ILO 또는 기타 원격 액세스 도구를 사용하여 서버 콘솔에 액세스 할 수 있습니까?
Hennes

답변:


12

루트 디렉토리를 이동하지 않았습니다 (할 수 없습니다). 루트 디렉토리의 거의 모든 것을 경로에 상관없이 상위 디렉토리로 이동했습니다.

문제를 복잡하게하기 위해 mv예상대로 작동하지 않도록 이동했습니다 . 마지막 mv를 껐을 때와 같은 디렉토리에 있으면 다음이 작동합니다 (이를 요청한 후 재부팅하지 않는 한!).

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

이 중 하나라도 없으면 명령에서 생략하십시오.

액세스 할 수없는 경우 (사물이이 상태에있는 동안 새로 로그인 할 수없는 경우) 파일 시스템을 외부에서 마운트해야합니다 (LiveCD와 같은 것을 통해 파일 시스템을 마운트 한 다음 파일을 이동해야 함). Braiam의 답변이이 부분에 도움이 될 것입니다.


나를 혼란스럽게 한 것은 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로 부팅하여 시스템을 수정할 수 있습니다. 라이브 시스템을 만들고 우분투로 부팅하는 방법을 아는 부분을 생략하겠습니다 (대체 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

이제 Oli가 준 명령으로, 나는 그것을 뻔뻔스럽게 복사 할 것입니다.

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

이것이 다른 사람들을 돕기를 바랍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.