"rm -rf 디렉토리"를 사용하면 단계별로 어떤 일이 발생하나요? [복사]

"rm -rf 디렉토리"를 사용하면 단계별로 어떤 일이 발생하나요? [복사]

디렉터리에 150GB의 데이터가 있고 실수로 해당 디렉터리에서 이 명령을 실행했다고 가정해 보겠습니다.

갑자기 나는 디렉토리 시작 부분에 "/"를 넣으면 안된다는 것을 깨달았고 몇 초 후에 Ctrl+를 사용하여 명령을 취소했습니다.C

디렉토리는 여전히 존재하며 현재 a부터 z까지의 폴더가 있지만 Windows라면 사라진 것과 없는 것을 알 수 있습니다. 테스트 서버에서 이 명령을 테스트해 보았는데 이 명령이 0-9로 시작하는 폴더를 삭제한 다음 a-z까지 삭제할 것이라고 가정했습니다. 내 테스트에서는 모든 것이 사라졌거나 아무것도 삭제되지 않았기 때문에 이 이론을 확인할 수 없었습니다.

그래도 여전히 궁금합니다. 그렇습니까? 이 명령은 단계별로 어떻게 작동합니까? 일부 데이터가 손실되었나요?

답변1

이 명령은 단계별로 어떻게 작동합니까?

재귀. rm디렉터리가 비어 있지 않으면 해당 디렉터리는 삭제되지 않습니다. 따라서 먼저 해당 디렉토리로 재귀하여 해당 내용("일반" 파일)을 삭제합니다. 이것은 의미한다풀리다프로세스는 디렉터리 계층 구조의 가장 깊은 수준에서 시작하여 디렉터리가 비워지면 위쪽으로 제거됩니다. (약간 다를 수도 있지만) 이렇게 말할 수 있을 것 같습니다.

/
---- somedir                        <-- (5)
-------- a                          <-- (4)
------------ a                      <-- (3)
---------------- a                  <-- (2)
-------------------- somefile1.txt  <-- (1)
-------------------- somefile2.txt  <-- (1)
-------------------- somefile3.txt  <-- (1)
-------------------- [...]
---------------- b                  <-- (2)
---------------- [...]              <-- (2)
------------ b                      <-- (3)
------------ [...]                  <-- (3)
-------- b                          <-- (4)
-------- [...]                      <-- (4)

     ^   ^   ^   ^   ^
    (5) (4) (3) (2) (1)

그런데 실행 시 어떤 일이 발생하는지 이해하는 데 도움이 되는 옵션이 rm있습니다 .-v

-v, --verbose
    explain what is being done

일부 데이터가 손실되었나요?

예(아마도), 디렉터리 계층 구조의 맨 아래에 있습니다. 파일 연결 해제는 매우 빠르며, 파일이 충분히 작은 경우 커널은 각 파일과 관련된 데이터 블록을 빠르게 삭제합니다.

디렉토리에서 가능한 한 멀리 이동하십시오. /dir/a/e/g/r/c/somefile(알파벳 순서로 그렇게 멀리 이동한다고 가정하면)와 같은 파일은 사라질 가능성이 높습니다... 물론 손실되는 데이터의 양은 Ctrl+ 를 누르는 속도에 따라 다릅니다 C.

관련 정보