NTFS 파티션에서 Windows의 이름은 같지만 대소 문자가 다른 두 파일이 발견 될 때 예상되는 기본 동작은 무엇입니까?


16

Linux에서 NTFS 파티션에 두 개의 파일을 작성하는 것은 쉽고, 두 파일 모두 문자가 같지만 대소 문자가 다릅니다 (예 : some_file.txt 및 Some_File.txt). 리눅스는 그것들을 구별합니다.

Windows는이를 어떻게 처리합니까?


1
개인적으로 관련된 모든 요인 때문에 정의되지 않은 동작이 발생한다고 말합니다. 이 경우 Windows가 동작을 정의하지 않으면 정의에 따라 정의되지 않습니다. Windows 가 동작을 정의하더라도 모든 프로그램이이를 일관되게 처리한다는 점을 심각하게 의심하기 때문에 여전히 동작을 정의되지 않은 동작으로 취급합니다.
— jpfx1342

답변:


20

MS-DOS, WOW 및 Win32 특성은 일치하는 첫 번째 파일을 반환합니다. 일부 응용 프로그램 및 API를 들어, 대소 무감각이 되어 시행 (예를 들어, MS-DOS 그냥 처리 할 수 없음). POSIX 특성 은 기본적으로 구별되며 대소 ​​문자를 구분합니다 (예 : UNIX 도구가 설치된 경우). 기본 Windows NT 명령 프롬프트는 설정 (ObCaseInsensitive)과 도구가 사용하는 API에 따라 가장 먼저 찾은 API에만 액세스합니다.

Microsoft Technet 기사 NTFS 볼륨에서 파일 이름이 대 / 소문자 구분 (KB100625) 과 다양한 NT 하위 시스템의 대 / 소문자 구분에 대한 자세한 설명도 참조 하십시오. Windows의 대 / 소문자 구분 이해 : obcaseinsensitive, FILE_CASE_SENSITIVE_SEARCH

특히 ObCaseInsensitive 값은 전체 NT Object Manager의 대소 문자 구분을 제어합니다.

HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\ dword:ObCaseInsensitive
  • 0으로 설정하면 오브젝트 관리자가 대소 문자 구분 모드로 실행됩니다.
  • 1로 설정하면 오브젝트 관리자가 대소 문자를 구분하지 않는 모드로 실행됩니다.
  • 지정하지 않으면 NT 5.1 (Windows XP) 이상 버전은 기본적으로 대소 문자를 구분하지 않는 모드에서 실행됩니다.
  • obcaseinsensitive는 NT 5.0 (Windows 2000) 및 이전 버전의 NT에서 의미가 없으며 항상 대소 문자 구분 모드로 실행됩니다.

Cygwin을가 한다 이 시점에서 / 기본 효과적인 대소 문자 구분 설정을 선택하십시오.

관련 수퍼 유저 질문 Windows 7에서 폴더 이름 대소 문자 구분을 구성하는 방법? 및 TechNet 기사 파일 및 폴더 이름 에 대한 대소 문자 구분 구성에이 상황을 정기적으로 처리해야하는 경우 NT에서 파일 및 폴더에 대한 대소 문자 구분을 사용하는 방법에 대한 자세한 정보가 있습니다.

대소 문자 구분 툴링 / NTFS / NFS 볼륨 액세스에 대한 추가 리소스 :


One.txt와 ONE.txt라는 두 파일이있는 경우 one.txt를 제공하면 "일치하는 파일"은 무엇입니까? "첫 번째 일치 파일"이 될 규칙이 있습니까?
— trusktr

1
아마도 디렉토리의 내부 파일 순서를 기반으로 할 것입니다. 정확히 알고 싶다면 내일 사용해 볼게요.
— Daniel B

2
어느 것이 첫 번째인지는 디렉토리에 나타나는 순서에 따라 순전히 결정됩니다. 이것이 반드시 순서대로 생성되는 것은 아닙니다. 파일이 수정되거나 directoy가 업데이트되면 변경 될 수 있습니다. (Chkdsk, 조각 모음, 삭제, 해당 폴더의 다른 파일을 이동하여 복사하면 순서가 모두 바뀔 수 있습니다.)
— Tonny

1
@trusktr 글쎄, 분명히 어떤 종류의 순서가 있습니다. 각각 대문자와 순서가 다른 여러 파일 세트 (NTFS-3G 사용)를 만들었습니다. Windows (또는보다 정확하게 메모장) 는 생성 순서에 관계없이 항상 대문자로 시작하는 파일을 선택합니다. more그래도 물음표를 반환합니다.
— Daniel B

1
@trusktr 디렉토리 B + 트리의 INDX 항목 순서를 따릅니다. 이 트리는 디자인별로 정렬되어 있지만 NTFS 드라이버에 따라 약간 다를 수 있습니다. 지정된 이름과 INDX 항목 이름의 (정렬 된) 트리를 걷는 동안 (OnCaseInsensitive = 0, Win32 / DOS / WOW API)가 첫 번째로 일치합니다. NTFS는 서수 비교를 사용하므로 대문자 는 항상 소문자보다 먼저 사용해야합니다 . (AZ = 0041-005A, az = 0061-007A)
— Maxx Daymon이 25:14

2

그렇지 않습니다. 대소 문자 차이를 고려하지만 그렇지 않으면 정확히 동일한 이름은 동일한 파일입니다.

모든 소문자로 파일을 만든 다음 한 글자 만 사용하여 다른 파일을 만들면이 문제를 테스트 할 수 있습니다.


지금 테스트 할 환경이 없습니다. 현재 OS X 만 있습니다. 어떻게되는지 설명해 주시겠습니까? 내 첫 번째 추측은 Windows가 어떤 기준으로 읽거나 쓸 파일을 선택하는 것입니다 (예 : 우연히 소문자가 우선하는 어휘 순서 또는 그 반대). 아니면 어떤 파일도 조작 할 수 없습니까?
— trusktr

1
@trusktr 시스템은 관련된 응용 프로그램 또는 코드에 따라 파일이 이미 존재한다고 불평합니다.이 파일은 자동으로 무시되며 기존 파일을 덮어 씁니다. 으로 jpfx1342 댓글을 달았습니다 ,이 문제는 정의되지 않은 동작으로 처리되어야한다.
— Casey
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.