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.