
나도 물어봤어Windows용 형제 질문.
Linux에서(방금 테스트했습니다):
- 빈 폴더의 크기는 이름에 관계없이 4KB로 제공됩니다.
- 빈 파일의 크기는 0바이트로 주어진다.
그러나 파일과 폴더에는 이름이 있으므로 어딘가에 저장해야 합니다.
- 대략 어디에 저장되어 있나요?
- 이러한 데이터를 저장하는 데 사용할 수 있는 최대 메모리는 미리 정의된 숫자입니까, 아니면 디스크의 사용 가능한 공간에 따라 달라집니까?
- 짧은 이름의 빈 파일은 더 큰 이름의 빈 파일보다 공간을 덜 차지합니까? (또는 이러한 이름이 저장되는 데이터 구조에는 각 파일에 대해 고정된 바이트 수가 있어서 나머지 바이트를
\0
?로 채울 수도 있습니다.) - 짧은 이름의 빈 폴더는 더 큰 이름의 빈 폴더보다 공간을 덜 차지합니까?
- 이라는 빈 폴더가
foobar
이라는 빈 파일보다 더 적은 공간, 동일한 공간 또는 더 많은 공간을 차지 합니까foobar
? - 의 빈 파일은
/etc/empty.txt
의 빈 파일보다 더 적은 공간, 동일한 공간 또는 더 많은 공간을 차지 합니까/etc/long/nested/path/until/the/empty/file/is/reached/empty.txt
?
답변1
파일 이름은 디렉터리에 저장됩니다. 디렉토리는 디렉토리 항목으로 구성되며 각 디렉토리 항목에는 파일 이름과 해당 파일의 inode 번호가 포함됩니다. inode에는 파일을 소유한 사용자 ID 및 그룹 ID, inode가 마지막으로 수정된 시간 등과 같은 다양한 메타데이터가 포함되어 있습니다. 파일 이름이 길수록 디렉토리에서 더 많은 공간을 차지합니다. 동일한 inode 번호를 참조하는 여러 디렉토리 항목(동일하거나 다른 디렉토리에)이 있을 수 있습니다. 동일한 inode를 가리키는 추가 디렉토리 항목이 생성되는 것을 하드 링크 생성이라고 합니다.
inode 테이블에는 고정된 수의 inode가 있으므로 많은 수의 inode를 생성하면 결국 inode 테이블의 공간이 부족해질 수 있습니다. ("df -i"를 통해 사용 중인 inode 수를 확인할 수 있습니다. 파일 시스템의 평균 inode 크기가 기본값보다 작을 것으로 예상하는 경우 많은 수의 inode로 파일 시스템을 생성할 수도 있습니다. )
디렉토리도 inode로 구성되며 다음을 제외하면 파일과 매우 유사하게 작동합니다. 첫째, "빈" 디렉토리에도 '.'에 대한 디렉토리 항목이 있습니다. (디렉터리 자체) 및 ".."(상위 디렉터리)이므로 "빈" 디렉터리라도 4K의 공간을 차지합니다. 둘째, 디렉토리에는 하드 링크가 없을 수 있습니다. 즉('.' 및 '..' 항목 무시) 디렉터리 inode를 참조하는 디렉터리 항목만 있을 수 있습니다. 이는 디렉터리가 일반화된 그래프가 아닌 트리를 형성한다는 것을 의미합니다.
답변2
ls 명령은 무엇보다도 파일 크기를 표시합니다.
파일이 디렉터리인 경우 표시되는 크기는 시스템에서 할당한 크기입니다.(4K 블록당: ext4 파일 시스템의 경우 4096비트) 0바이트가 있어도 마찬가지입니다.
파일이 일반 파일인 경우 표시되는 크기는 파일이 차지하는 크기가 아니라 해당 내용의 크기입니다.
일반 파일인지 디렉터리인지 파일이 차지하는 크기를 확인하려면 "du file_name" 명령을 사용하세요.