.fuse_hidden * 파일을 삭제하는 방법?


34

일부 Windows 컴퓨터와 일부 폴더를 공유하도록 구성된 Samba 서버를 실행하는 작은 Linux 서버 (Debian Squeeze)가 있습니다. Windows에서 디렉토리 중 하나를 삭제하려고 할 때 "폴더를 삭제할 수 없습니다"오류가 발생했습니다.

리눅스 콘솔에서 디렉토리를 삭제하려고했는데 비슷한 오류가 발생했습니다.

# rm dir-name -rf
rm: cannot remove `dir-name': Directory not empty

디렉토리의 내용을 나열하고 .fuse_hidden이라는 파일과 16 진수 (000bd8c100000185)를 발견했습니다.

# ls -la dir-name
-rwxrwxrwx 1 root root 5120 Feb 13 11:46 .fuse_hidden000bd8c100000185

.fuse_hidden 파일을 삭제하려고했지만 새 파일이 즉시 만들어졌습니다 (16 진수 숫자 변경 참고).

# rm dir-name/.fuse_hidden000bd8c100000185
# ls -la dir-name
-rwxrwxrwx 1 root root 5120 Feb 13 11:46 .fuse_hidden000bd8c100000186

또한 Midnight Commander를 사용하여 파일을 성공적으로 삭제하려고 시도했습니다.

지금까지 내가 찾은 다른 솔루션은 GUI와 관련이 있으며 콘솔 만 있습니다.

모든 제안을 부탁드립니다.


3
퓨즈 데몬이 활성화 된 것 같습니다. 파일을 삭제하기 전에 중지하십시오.
ott--

그 동안 내 의견을 변경했습니다.
ott--

그게 내 첫 생각이지만 중지 할 퓨즈 서비스를 찾을 수 없었고 대신 삼바를 다시 시작했는데 문제가 해결되었습니다. 파일이 사라졌습니다. 감사.
Lando

rm dir-name -rf?
Hauke ​​Laging

답변:


52

이것은 다른 시스템이 NFS 마운트에서 연 파일을 삭제할 때 발생하는 것과 유사합니다. 문제는 파일의 "링크 수"가 1보다 크면서 파일 시스템에서 파일이 제거되어 다른 프로세스가 여전히 파일을 열어두고 있다는 것입니다.

  • 파일이 실제로 상주하는 시스템에 로그인하십시오. (네트워크 마운트 없음)
  • 실행 lsof dir-name/.fuse_hidden000bd8c100000185프로세스가 파일 핸들을 열어 잡고있는 것을 알 수 있습니다.
  • 의미가있는 경우 해당 프로세스를 종료하거나 프로세스를 종료하지 않고 열린 파일 핸들을 "정상적으로"해제하기 위해 수행 할 수있는 단계를 파악하십시오.

일반적으로 다른 프로세스가 연 로컬 파일 시스템에서 파일을 삭제하면 OS가 요청을 준수하고 디렉토리 트리에서 파일을 제거하지만 트리가 가리키는 inode는 여전히 운영 체제에서 사용중인 것으로 간주됩니다. 파일을 열 때마다 "링크 수"가 1 씩 증가하고 해당 링크 수가 0이 될 때만 공간이 해제됩니다.

이런 성격의 문제가 발생하면 OS는 디렉토리 트리에서 해당 파일을 제거 하지 않기로 결정한 이유가 무엇이든간에 의미합니다. 직접 inode 번호를 활용하십시오. 처음에는 준수하는 것처럼 보이지만 OS는 숨겨진 점 접두사를 갖도록 이름을 바꾸어 파일 시스템 경로 주소 지정 형식으로 여전히 액세스 할 수 있습니다. 링크 수가 0에 도달하면 공간이 여전히 비워 지지만 해당 오브젝트는 링크가 사라질 때까지 디렉토리에 남아 있습니다.


파일 (이 경우 Samba)을 사용하는 일부 서비스와 관련이 있다고 생각했지만 lsof를 잊어 버렸습니다.
Lando

나를 문제로 인도하십시오. lsof어떤 프로세스가 여전히 파일을 읽고 있는지 식별하는 데 도움이되었고 모든 것을 제거 할 수있었습니다!
ThanksForAllTheFish

나는 문제가 있다고 lsof하고 fuser, 어떤 제안을 해당 파일에 대해 모든 프로세스를 제기하지?
mxmlnkn

0

제안에 감사하지만 아무것도 효과가 없었습니다. 그러나 해결책을 찾았습니다. 외부 SSD를 Windows를 실행하는 PC로 옮겼습니다. "숨겨진 항목"을 선택한 상태에서 파일 탐색기를 사용하여 .Trashes디렉토리를 탐색 하여 .fuser_hidden파일 을 삭제할 수있었습니다 .

이것이 도움이되기를 바랍니다!

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