"rm -rf ~"명령을 실행 취소 하시겠습니까?


115

'~'라는 이름을 원하지 않는 폴더가 있었으므로 입력 한 명령 줄에서

rm -rf ~

실수로 내 홈 폴더를 삭제했습니다 (~ / home / username으로 확인되었으므로). 되돌아 갈 방법이 있습니까? 아니면 기본적으로 계정을 처음부터 다시 만들어야합니까?


18
어떤 파일 시스템입니까?
Tarnay Kálmán

6
분명히 당신은 유머 감각이 없습니다.
Blomkvist

21
이것이 귀하의 질문에 직접 대답하지는 않지만 rm -rf "~"따옴표를 사용하면 확장하는 대신 리터럴 이름을 찾습니다. 그러나 어쨌든 그것을 사용하는 것이 무서울 것입니다. 나는 올바른 디렉토리를 얻거나 GUI 파일 관리자에서 폴더를 삭제하기 위해 ls또는 cd먼저 비슷한 것을 사용합니다 . 먼저 dir ( mv "~" tilde)의 이름을 바꾸고 확인한 다음 제거하십시오.
Henrik N

2
나중에 명령 행에서 rm을 대화식으로 사용하지 마십시오. 휴지통 과 같은 유틸리티를 사용 하면 1) 다시 같은 실수를 할 수 없으며 2) rm의 잘못된 쉘 별칭에 익숙해지지 않아 문제가 발생할 수 있습니다.
Fred Nurk

9
@HenrikN : "~"대신 ./~도 동일하지만 대시로 시작하고 옵션처럼 보이는 다른 문제가있는 다른 파일 이름과도 작동합니다.
Fred Nurk

답변:


148

일반적으로 쉬운 방법은 없습니다.

매일 백업에서 복원 할 수 있습니다.


194
백업에 대한 귀하의 의견은 잔인하고 100 %입니다.
Benjamin Bannier

3
OS X은 백업 방법에 대한 바 설정 한다 (특히 타임 캡슐에) 작동합니다. 우분투와 같은 것을 얻는 방법에 대한 제안 은 maketecheasier.com/… 을 참조하십시오 .
Thorbjørn Ravn Andersen

4
@ Thorbjørn Ravn Andersen-Time Machine에 신경 쇠약이있는 경우를 제외하고는 그렇지 않습니다. 나는 6 개월 만에 타임머신이 두 번이나 괴로워했다.
가짜 이름

오프 사이트 백업은 훌륭하고 저렴합니다. 나는 $ 5 / 컴퓨터 / 월에 Backblaze (Mac / Windows)를 사용합니다. 많은 사람들이 Crashplan (Mac / Windows / Linux) 을 좋아하는 것 같습니다 .
Henrik N

23
매일 뭐 ???
Luc M

66

다른 사람들 ( @RiMMER , @Adam@James T 와 같은 )은 대부분의 파일 시스템에서 데이터가 실제로 제로화되지 않고 제거되기 때문에 대부분 또는 모든 데이터 (아마도 파일 이름이없는)를 복구 할 수 있다고 언급했습니다 파일 테이블에서. 이것은 Linux에만 해당되는 것이 아니라 Windows와 Mac에서도 마찬가지입니다.

그러나 가장 중요한 것은 아무도 말하지 마십시오. 컴퓨터를 끄십시오. 지금. .

현재 사용중인 인터넷 브라우저를 포함한 많은 프로그램이 데이터를 하드 드라이브에 캐시하며 컴퓨터가 스왑 파일에 크기를 조정하거나 쓰게 할 수 있습니다. 이 두 가지 모두 하드 드라이브의 빈 섹터에 기록되어 귀중한 데이터를 덮어 쓸 수 있습니다.

따라서 컴퓨터를 끄고 하드 드라이브를 꺼낸 후 다른 컴퓨터에 넣으십시오. 하드 드라이브를 읽기 전용으로 마운트하고 파일을 별도의 하드 드라이브에 복구하십시오. 와 - 당신은 당신이 관심이 할 수있는 모든 복구 한 경우 에만 다음을 - 원래 드라이브에 파일을 작성합니다.


11
종료 프로세스조차도 하드 드라이브에 쓸 수 있습니다. 나는 확실히 일 수 있기 때문에, 컴퓨터의 플러그를 뽑아 즉시 추천 주저 해요 많은 아니라, 데이터가 얼마나 중요한지에 따라, 당신이 그것을 고려하는 것이 좋습니다 ... 더 나쁜,하지만.
BlueRaja-대니 Pflughoeft

1
드라이브 / OS / 마운트 지점에 따라 PC를 끄거나 종료하지 않고 즉시 읽기 전용 라이브를 마운트 해제하거나 다시 마운트 할 수 있습니다.
Matthew Scharley

1
killall rm끄지 말고
Fred Nurk

1
홈 디렉토리의 크기와 하드 드라이브의 크기에 따라 데이터가 포함 된 사용 가능한 섹터를 덮어 쓸 가능성이 매우 적습니다.
마이크 속도

이 방법을 사용하여 텍스트 파일을 많은 어려움없이 복구 할 수는 있지만 (무엇에 대한 대략적인 아이디어가있는 한) 바이너리 파일은 기본적으로 불가능합니다.
Satanicpuppy

13

한 번에 모든 리눅스 사용자는 실제로 백업의 중요성을 배우고 세부 사항에주의를 기울이고주의를 기울이기 전에이 고통스러운 교훈을 먼저 배워야한다고 생각합니다.

예를 들어, 이상하게 보이는 파일을 삭제하는 경우 먼저 부작용이없고 데이터를 변경하지 않는 해당 이상 파일에서 명령을 실행할 수 있습니다. 예를 들어, 당신은 실행했다

cd ~

폴더를 삭제하기 전에 폴더가 아닌 홈 폴더로 디렉토리가 변경되는 것을 알 수 있습니다 ~. 당신이 진정한 명령을 배울 정도로 문제 해결 단계를 통해 이동 후에는 제대로해야 cd~기록에서 마지막 명령을 당겨 후 변경 폴더, 당신은 당신의 위쪽 화살표 키를 눌러 수 cdrm다음 만 다음 폴더를 삭제하려고 .

나는 수행하기 전에 이와 같은 조치를 취하시기 바랍니다 어떤 영구적 인 조치를. 영구적이거나 완전하지는 않지만 부작용이있는 조치를 수행 할 때 이러한 정도의주의를 기울이면 이러한 순간을 막을 가능성이 훨씬 높아집니다.


4
당신이 도약하기 전에, 그리고 ls당신 앞에보기 rm.
LawrenceC


6

testdisk 를 사용하여 개별 파일의 삭제를 취소 할 수 있습니다 . 이 기능은 ext2 및 NTFS에서만 작동합니다 (그러나 여전히 시도해 볼 가치가 있습니다).

ext3 또는 ext4가있는 경우 photorec을 사용하여 알려진 파일을 복구 할 수 있습니다.이 파일 은 원하는 것보다 더 많이 복구 될 수 있습니다. Photorec는 파일 이름 정보없이 파일을 복구하므로 파일을 지루하게 할 수 있습니다.


4

외부 드라이브가 충분히 큰 경우 다른 안전한 옵션이 있습니다. 여유 공간을 포함하여 전체 홈 파티션을 저장하기에 충분한 공간이 필요합니다.

CD로 부팅하고 홈 드라이브를 전혀 마운트하지 마십시오. 외장 드라이브를 장착하십시오. 홈 드라이브 파티션을 외장 드라이브의 파일에 넣습니다. 파일을 루프백 장치로 마운트하면이 이미지에 대한 삭제 작업을 수행 할 수 있으며 원본 파일 시스템을 손상시킬 수 없다는 사실을 알고 있습니다. 파일 시스템에 따라 시도해야 할 것이 많지만 일부는 잠재적으로 파괴적입니다.

읽기 전용으로 마운트해도 어떻게 될지 몰랐을 때 Reiser4 베타 버전으로 한 번 절약되었습니다. 저널 쓰기가 가능했던 시점의 어딘가를 읽었습니다.

또한 죽어가는 드라이브에서 데이터를 저장하는 데 유용한 기술입니다.


1
대부분의 저널링 된 FS에서 읽기 전용 마운트로도 저널 활동의 일부로 데이터를 쓸 수 있다고 언급하면 ​​+1입니다.
sleske

2

재활용되지 않은 inode를 검사하여 파일을 복구하는 기술이 있습니다. 삭제 후 파일 시스템에 쓰는 데이터가 많을수록 데이터를 복구 할 가능성이 줄어 듭니다. 실수로 데이터를 삭제하여 복구하는 가장 좋은 방법은 백업에서 복원하는 것입니다.


2
alias rm="rm -i"

Bash 쉘을 사용한다고 가정하십시오 (이 파일을 .bashrc 파일에 넣으면 열린 새로운 쉘에 유지됩니다).

이로 인해 rm은 삭제할 항목을 확인하라는 메시지를 표시해야하며, 특히 -rf를 수행 할 때 유용하지만 프롬프트에서 홈 디렉토리의 전체 경로로 '~'를 확장하여 프롬프트를 표시해야합니다. 단서 '~'파일을 삭제하는 것이 아니라 실제로 homedir입니다.

$ rm -rf ~
rm: examine files in directory /nas/users/u12345/unix (yes/no)? n

이것은 기술적으로 귀하의 질문에 대한 답변이 아니지만 향후 이러한 문제를 피하는 데 도움이 될 수 있습니다.

편집 : 일부 사람들은 "rm"명령을 사용하면 덜주의를 기울여이 기술을 사용하지 못하게 할 수 있습니다. 내 경험상 이것은 사실과 거리가 멀다. 실제로, 별칭의 효과는 "rm -rf"를 사용하지 못하게하는 것입니다. 알다시피 응답을 원하지 않는 많은 프롬프트가 발생하고 프롬프트가없는 "rm -rf"를 얻기 위해 "의도적으로 rm 명령을 / bin / rm (또는 기타)로 참조해야합니다. 이것은 일반적으로 "rm"명령을 훨씬 더 의식적이고 신중하게 사용하도록합니다. 항상 rm과 / bin / rm을 정신적으로 선택해야합니다. 로그인해야합니다. 그리고 모든 사람들이 rm을 사용하기 전에 생각한 세상은 실제로 더 안전한 세상 이 될 것입니다!


2
사용중인 시스템에 따라 다릅니다. RHEL5 및 OS X 10.6에서는 최소한 옵션을 -f대체합니다 -i.
Daniel Beck

난 몰랐어. 나는 YMMV에 나의 충고를 덧붙이고 "집에서, 또는 더 중요한 것은 직장에서 이것을 시도하지 마십시오"!
aaa90210

9
이렇게하면 언젠가이 별칭이 제자리에 없을 수도 있습니다. 다른 컴퓨터에 앉아 있거나 어딘가에 ssh'd 한 경우 rm을 안전망에 사용합니다. 후회하는 일을하게 될 것입니다.
Fred Nurk

1
@FredNurk 정확합니다. 최선의 방법은 -i를 직접 추가하거나 -f 옵션을 사용하지 않는 것입니다.
Arda Xi

삭제할 파일이 많으면로 시작합니다 rm -i my_list_of_files. 그런 다음 CTRL-C를 사용하여 다음 명령을 수정하라는 명령을 기억합니다.rm -rvf my_list_of_files
Luc M

2

데이터가 유감입니다. 다른 사람들은 데이터 문제를 처리하는 방법을 알아 차 렸지만 다음에 폴더가 caled 인 경우 다음을 처리하는 방법에 대한 정보가 있습니다 ~.

  1. 만든 사람을 찾아서 다시는하지 않도록하십시오.
  2. -rf삭제를 위해 rm을 강력하게 사용하지 마십시오 . 대신 천천히 천천히 가져 가고 무슨 일이 일어나고 있는지 확인하십시오. 쉘에서 빠져 나와 홈 디렉토리로 확장하지 않고 물결표를 입력 할 수 있습니다. 이론적으로는 할 rm -rI \~ 있지만 한 단계 더 나아갈 수 있습니다.
    1. 먼저, cd \~그 폴더에 들어가려면 아마도 pwd거기에 있는지 확인하는 데 사용할 수도 있습니다. 당신이 거기있는 동안 열 내용을 제거합니다. 다시 조심하지만 폴더를 정리 rf -rI *해야합니다 .*.
    2. 이제로 이동 cd ..하여로 디렉토리를 제거하십시오 rmdir \~.

1

.snapshot을 cd하고 파일을 복원합니다. 그러나 직장 에서이 작업을 수행하며 .snapshot 디렉토리의 출처를 모릅니다. 나는 아마도 리눅스 기능 일 것입니다.


1

복구 도구-명령 줄 :

복구 도구-Gui :

정보 :

내 개인적인 경험에서 "UFS Explorer"와 photorec을 사용하여 데이터를 다시 얻습니다.

(1) = 공개 소스가 아니며 무료가 아닙니다.

(2) = 공개 소스 아님, 무료

(3) = 공개 소스 및 무료

(4) = NTFS 지원

(5) = 디렉토리 구조 기능


-3

rm은 영원합니다.

이것은 지금 당신에게 도움이되지 않지만, 나중에 rm을 사용하지 않거나 실제로 자신을 강요하지 않을 수 있습니다. 파일 이름을 다른 시간에 정리하는 휴지통으로 이동시키는 rm이라는 경로에서 스크립트를 추가하십시오 (허용) 실수하지 말고 SOL이 아닙니다.


7
이것의 유일한 문제는 rm 명령으로 약간 빠르거나 느슨해 질 수 있으며 회사 Linux 서버에 편리한 삭제 취소 기능이 없다는 것을 잊어 버리는 것입니다 ... 죄송합니다 ...
jmort253

2
-1 이것은 다운-투표 된 답변과 같은 문제가 있습니다 (따라서 다른 사람의 의견을 훔칠 것입니다). 언젠가는이 스크립트를 제자리에두고 있지 않을 수도 있습니다 – 아마도 다른 컴퓨터에 앉아 있거나 어딘가에 ssh'd했을 것입니다 – 그리고 당신은 안전망에 익숙해 져있는 rm을 사용할 것이고 당신이 후회하는 것을 할 것입니다.
DMA57361

@Corey 나는 이것이 나쁜 습관을 유발할 수 있음에 동의하지만, +1이 답변은 너무 심하게 하향 조정 되었기 때문에
John Militer
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.