rm은 파일을 삭제하지 않고 디렉토리라고 생각합니다.

rm은 파일을 삭제하지 않고 디렉토리라고 생각합니다.

일부 정보를 백업하기 위해 Linux 시스템에 Windows 하드 드라이브가 연결되어 있습니다. "임시 인터넷 파일" 폴더 중 하나를 삭제하고 싶었는데, 그 중 하나만 빼고 모두 삭제되었습니다. 오류를 반환합니다(일부 디렉터리 경로를 통해).

rm: cannot remove '<path>/dorothy[1].js': Is a directory

그런 다음 파일 위치로 이동하여 다음 명령을 실행했습니다.

rm -rf dorothy[1].js

오류 없이 반환되지만 ls여전히 디렉터리에 표시됩니다. 또한 삭제하기 위해 두 가지 방법을 모두 사용해 보았지만 아무 소용이 없었습니다(<inode>는 파일 이름의 inode입니다).

ls -i  
find . -inode <inode> -delete  
find . -inode <inode> -exec rm {} \.

그런 다음 효과가 있는 일을 하려고 노력합니다 cd dorothy[1].js. 안으로 들어가면 ls이것을 사용하여 이것을 반환했습니다.

ls: reading directory.: Input/output error

그럼 이걸 어떻게 삭제하나요?

답변1

NTFS 파일 시스템이 있습니다. 이 경우 Windows 컴퓨터를 제외한 모든 컴퓨터에서는 문제를 안전하게 해결할 수 없습니다. (Linux 코드는 괜찮지만 외부 파일 시스템을 복구하기 위해 이를 신뢰하는 것은 권장하지 않습니다.)

디스크를 Windows 시스템에 넣고 실행 CHKDSK /F Q:하거나 할당된 드라이브 문자를 실행합니다. 그런 다음 파일을 삭제해 보십시오. 실패하면 기다려야 CHKDSK /R Q:하며 실행하는 데 몇 시간이 걸릴 수 있습니다.

답변2

Matt의 의견을 참조하십시오.

fsck를 할 시간이다.

당신이 묘사하는 상황은 드뭅니다. dorothy[1].js를 가리키는 두 개 이상의 inode가 있고 하나의 inode에 손상된 디렉터리 항목이 있고 디렉터리를 가리키는 것으로 생각하는 것 같습니다.

파일 시스템의 개발/테스트 코드를 사용하지 않는 한 이런 일은 절대 발생하지 않습니다.

먼저 fsck를 실행하세요. 그런 다음 안정적인 파일 시스템 코드를 실행하고 있는지 확인하세요. 그런 다음 다음 단계는 디스크의 물리적 디렉터리 구조에 혼란(기술 용어)을 일으키는 작성된 사용자 지정 코드를 살펴보는 것입니다(진동).

또한 파일 이름에는 "[]" 문자가 포함되어 있어 흥미롭습니다. 이 문자는 대부분의 경우 정규식 형식으로 확장됩니다. 이는 귀하의 상황과 관련이 있을 수도 있고 그렇지 않을 수도 있습니다.

모든 것이 제대로 작동하고 fsck 후에 문제가 다시 나타나면 먼저 커널 버전과 시스템에 설치된 모든 패키지를 릴리스하여 긴 디버깅을 수행해야 할 수 있습니다.

관련 정보