
저는 왜 PHP나 쉘을 통해 디렉터리를 삭제하는 것이 Windows에서 삭제를 클릭하는 것만큼 쉽지 않은지 궁금했습니다. 이제 삭제는 단순히 파일 할당 테이블에서 파일의 연결을 해제하는 것이므로 디렉터리를 삭제하려면 그 안에 있는 모든 파일의 연결을 해제해야 한다는 것을 깨달았습니다.
디렉토리 항목을 제거할 수 있지만 그 안에 있는 파일 항목은 제거할 수 없습니까? 운영 체제는 파일 시스템에서 접근할 수 없는 파일을 주기적으로 확인합니까?
답변1
많은 UNIX에는 사용자가 디렉토리 링크를 unlink
해제할 수 있는 명령이 있지만 실제로는 그렇지 않습니다.root
~ 아니다디렉터리의 내용을 재귀적으로 연결 해제하므로 매우 위험합니다. 그런 일이 발생하면 fsck
연결이 끊긴 디렉터리를 복구하는 데 사용하세요. 이 디렉터리는 파일 시스템의 lost+found
폴더에 임의의 이름으로 표시됩니다(이런 일이 unlink
발생했을 때 이름이 손실되었기 때문입니다).
답변2
예, 가능합니다. OS에는 이러한 일이 발생하지 않도록 방지하는 절차가 있으므로 가능하지만 가능성은 낮습니다. 하지만 디스크 오류와 이상한 현상으로 인해 문제가 발생할 수 있습니다.
이것은 일반적으로 무엇입니까chkdsk,fsck, 그리고 수많은 다른 유틸리티가 이를 수행하도록 설계되었습니다. 그들은 할당 테이블을 읽고 이를 알려진 파일 항목과 일치시킵니다. 잘못된 것이 있으면 어떤 조치가 취해집니다.
Windows에서는 일반적으로 다음을 확인하여 검사를 원한다는 신호를 Windows에 보낼 수 있습니다.속성드라이브 아이콘을 마우스 오른쪽 버튼으로 클릭하면 옵션이 표시됩니다. 그것~할 것 같다그런 다음 검사를 수행하십시오. Windows는 시동 디스크 검사를 선호하는 것 같지만 다음 재부팅 시 검사를 수행할 것이라는 메시지가 표시됩니다.
Linux에서는 ... 활성 시스템에서 fsck 유틸리티를 사용하면 심각한 부상을 입을 수 있습니다. 이것이 바로 Linux 상자가 일반적으로 시작 중에 항상 파일 시스템 검사(fsck!)를 수행하는 이유입니다. 간단히 재부팅하면 검사가 발생하는 경우가 많습니다. (비록 UPS가 실패할 때 홈 서버에서 전원을 끄면 UPS가 트리거된다는 것을 알고 있습니다!) (파일 시스템이 더티로 표시됨)
OS X? 단서가 아닙니다. 방금 기계 근처에서 라테를 마셨고 가장 가까운 GeniusBar와 연결하여 자체적으로 문제가 발생한 것을 해결했다고 생각했습니다. (내 생각에는 아마도 스타벅스™ 안이나 근처에 있어야 할 것 같습니다.)