Windows에서 빈 파일과 폴더가 어떻게 0바이트를 차지할 수 있습니까?

Windows에서 빈 파일과 폴더가 어떻게 0바이트를 차지할 수 있습니까?

나도 물어봤어Linux에 대한 형제 질문.


Windows에서(방금 테스트했습니다):

  • 빈 폴더의 크기는 0바이트로 지정됩니다.
  • 빈 파일의 크기는 0바이트로 주어진다.

그러나 파일과 폴더에는 이름이 있으므로 어딘가에 저장해야 합니다.

  • 대략 어디에 저장되어 있나요?
  • 이러한 데이터를 저장하는 데 사용할 수 있는 최대 메모리는 미리 정의된 숫자입니까, 아니면 디스크의 사용 가능한 공간에 따라 달라집니까?
  • 짧은 이름의 빈 파일은 더 큰 이름의 빈 파일보다 공간을 덜 차지합니까? (또는 이러한 이름이 저장되는 데이터 구조에는 각 파일에 대해 고정된 바이트 수가 있어서 나머지 바이트를 \0?로 채울 수도 있습니다.)
  • 짧은 이름의 빈 폴더는 더 큰 이름의 빈 폴더보다 공간을 덜 차지합니까?
  • 이라는 빈 폴더가 foobar이라는 빈 파일보다 더 적은 공간, 동일한 공간 또는 더 많은 공간을 차지 합니까 foobar?
  • 의 빈 파일은 C:\empty.txt의 빈 파일보다 더 적은 공간, 동일한 공간 또는 더 많은 공간을 차지 합니까 C:\long\nested\path\until\the\empty\file\is\reached\empty.txt?

답변1

나는 또한 Linux에 대한 형제자매에게 질문을 했습니다.

차이가 있다면 Windows와 Linux 사이에 있는 것이 아니라(그리고 실제로 macOS, Solaris 등에 대해 같은 질문을 하시겠습니까?) 실제 Windows와 Linux 사이에 있습니다.파일 시스템디스크에 파일을 저장하는 데 사용됩니다.

그러나 각 OS에는 선호하는 파일 시스템이 있지만 Windows의 FAT32는 여전히 Linux의 FAT32와 동일하게 작동합니다. Linux의 NTFS는 Windows의 NTFS와 동일한 방식으로 작동합니다. 등등. 동시에 동일한 OS의 다양한 파일 시스템은 서로 매우 다르게 동작할 수 있습니다. Ext4와 Btrfs(또는 FAT32와 NTFS)는 서로 매우 다르게 동작할 수 있습니다.마일같은 OS를 사용하더라도 별개입니다.

빈 파일의 크기는 0바이트로 주어진다.

모든 경우에 보고된 파일 크기는 다음과 같습니다.언제나메타데이터가 아닌 실제 콘텐츠입니다. 실제로 오늘날 사용되는 모든 파일 시스템은 이를 두 가지 별개의 것으로 간주합니다. 파일이 이름과 데이터가 함께 첨부되어 구성되어 있다고 상상한다면 일반적으로 그렇게 되지 않습니다.

파일 이름이 저장되는 경우가 많습니다.상위 디렉토리에(하드링크도 허용합니다. 즉, 여러 이름을 가진 하나의 파일). 파일 이름이 너무 길면 상위 디렉터리가 더 크게 보일 수 있습니다.

나머지 파일 관련 메타데이터는 이름 근처에 있거나 더 일반적으로 별도의 영역(예: inode 테이블)에 있을 수 있습니다.

이러한 데이터를 저장하는 데 사용할 수 있는 최대 메모리는 미리 정의된 숫자입니까, 아니면 디스크의 사용 가능한 공간에 따라 달라집니까?

그건 다양하다. 각 종류의 파일 시스템에는 고유한 제한이 있을 수 있습니다. 일부는 최대값이 고정되어 있고 일부는 디스크의 특정 비율로 제한됩니다.

예를 들어, FAT에서 각 디렉토리는 "디렉터리 항목"의 특정 최대 수를 가질 수 있습니다(MS-DOS 스타일 8.3 파일 이름은 각각 하나의 항목을 차지하지만 긴 파일 이름은 여러 항목을 차지함). 이는 둘 다 Windows에 있음에도 불구하고 NTFS에는 적용되지 않습니다.

Ext2/Ext4에서 전체 파일 시스템은 고정 크기 레코드 목록으로 저장되는 특정 양의 "inode"(각 파일 또는 디렉터리에 대해 하나씩)로 제한되며 영역은 항상 디스크의 고정된 비율로 설정됩니다. 공간. Ext4 디스크의 inode가 부족해지는 일은 전례가 없습니다. 이는 동적 데이터 구조(일반적으로 B-트리)를 사용하고 필요에 따라 단순히 증가하는 XFS 또는 Btrfs에는 적용되지 않습니다.

짧은 이름의 빈 폴더는 더 큰 이름의 빈 폴더보다 공간을 덜 차지합니까? (또는 이러한 이름이 저장되는 데이터 구조에는 각 파일에 대해 고정된 바이트 수가 있어서 남은 바이트를 \0으로 채울 수도 있습니다.)

그건 다양하다. 일부(대부분?) 파일 시스템의 경우 이름은 가변 길이입니다.

일부 다른 파일 시스템의 경우 특정 임계값에서만 가능합니다. 고정 크기 디렉터리 슬롯이 있는 FAT/exFAT 및 UFS가 그 예입니다. 슬롯이 점유되면 null 바이트로 채워진 1바이트 파일 이름을 저장하든 16바이트 파일 이름을 저장하든 상관없이 슬롯이 점유됩니다.

foobar라는 빈 폴더는 foobar라는 빈 파일보다 더 적은 공간, 동일한 공간 또는 더 많은 공간을 차지합니까?

다시 말하지만 파일 시스템에 따라 다릅니다.

FAT에서는 내가 올바르게 이해했다면 동일할 것입니다. NTFS에서는 폴더가 더 클 것이라고 생각하지만 현재로서는 단지 추측일 뿐입니다.

C:\empty.txt의 빈 파일은 C:\long\nested\path\until\the\empty\file\is\reached\empty.txt의 빈 파일보다 더 적은 공간, 동일한 공간 또는 더 많은 공간을 차지합니까?

파일그 자체, 파일이 전체 경로를 알지 못하기 때문에 항상 동일합니다. OS는 상위 디렉터리를 통해 내려가서 파일을 찾습니다. 이는 아마도 모든 파일 시스템에서 보편적일 것입니다.

하지만 해당 폴더는 0이 아닌 공간을 차지합니다.

관련 정보