CIFS에서 콜론이 있는 디렉토리 제거

CIFS에서 콜론이 있는 디렉토리 제거

네트워크 드라이브(파일 시스템: CIFS)에 콜론이 포함된 디렉터리(Ubuntu 사용)를 삭제할 수 없습니다. 이 디렉터리를 어떻게 삭제할 수 있나요?(루트 액세스 권한은 없지만 읽기/쓰기 액세스 권한)

rmdir ':5N0A210'/출력 rmdir ':5N0A210':

rmdir: failed to remove ':5N0A210': No such file or directory

출력 ls -li:

123011781 drwxr-sr-x 2 username domain users      0 May 31 10:00 :5N0A210

출력 ls -1b:

:5N0A210

출력 find . -inum 123011781 -delete:

find: cannot delete ‘./:5N0A210’: No such file or directory

출력 rename 's|:|-|g' *:

Can't rename :5N0A210 -5N0A210: No such file or directory

방금 ":test" 디렉터리를 만들고 오류 없이 삭제할 수 있다는 것을 깨달았습니다.

':5N0A210'을 생성하고 삭제할 수도 있지만 GUI를 새로 고치자마자 나타납니다. ls -li이전과 동일한 inode 번호가 표시됩니다.

또한 ":4N0A210"("5"를 "4"로 변경)을 만들고 오류 없이 삭제할 수도 있습니다.

모든 테스트는 ":5N0A210"과 동일한 디렉터리에서 수행됩니다.

답변1

디렉토리에서 :5N0A210:

rm -rf ./\:5N0A210

rm -rf ':5N0A210'

rm -rf ./:5N0A210

rm -rf :5N0A210

이것들은 모두 내 환경에서 작동합니다.

고쳐 쓰다

위 명령을 사용하여 서버 측에서 삭제할 수도 있습니다. 서버에 액세스할 수 없는 경우 해당 액세스 권한이 있는 사람에게 서버를 제거하도록 요청하세요.

답변2

Windows 파일 이름에는 일정 범위의 예약 문자가 허용되지 않습니다 \ / : * ? " < > |. CIFS는 이 규칙을 따릅니다. 즉, 파일 이름에 이러한 문자를 사용할 수 없습니다.

이러한 문자를 시각적으로 유사한 대체 문자로 변환하도록 SAMBA를 구성할 수 있지만 vfs catia이는 기본값이 아니므로 인스턴스에서 구성되지 않을 수 있습니다. (그렇다면 간단한 쉘 문자 와일드카드 ?만으로도 콜론과 일치할 수 있습니다 rmdir ?5N0A210. 즉, . 하지만 이미 시도했지만 실패했습니다.)

유일한 다른 해결책은 파일 시스템을 호스팅하는 서버에서 디렉터리를 직접 삭제하는 것입니다. 이것이 Windows라면 파일 시스템 검사로 인해 디렉터리 이름이 강제로 변경됩니다. SAMBA를 사용하는 Unix/Linux라면 간단한 rmdir(또는 rm -rf)이면 충분합니다.

관련 정보