'ls -l' 명령의 출력에서 ​​디렉토리 크기는 무엇을 의미합니까?

'ls -l' 명령의 출력에서 ​​디렉토리 크기는 무엇을 의미합니까?

명령 출력에서 ​​디렉토리 크기는 무엇을 의미합니까 ls -l?

답변1

이는 디렉터리(즉, 이 디렉터리에 속하는 파일 테이블)에 대한 메타 정보를 저장하는 데 사용되는 디스크 공간의 크기입니다. 즉, 1024인 경우 이는 디스크의 1024바이트가 이 목적으로 사용됨을 의미합니다(항상 전체 블록을 할당함).

답변2

로 인쇄된 "디렉토리 크기"는 (모든 파일 유형과 마찬가지로) 의 호출 ls -l에 의해 보고된 값입니다 .stat()statbuf.st_size

이것이 st_size디렉터리에 대해 의미하는 바는 전적으로 파일 시스템 유형에 따라 다릅니다. 파일 시스템 유형을 모르고 해당 개념을 이해하지 않으면 st_size.

  • 현재 일반적으로 이름이 붙여진 과거 UNIX 파일 시스템에서 v7-fs디렉토리는 16비트 inode 번호와 14바이트의 파일 이름을 포함하는 16바이트 항목으로 반복되었습니다. 디렉토리의 "크기"는 작업과 관련하여 의미가 있으며 read(2)항상 커지거나 그대로 유지됩니다. 및 항목 ...현재 및 한 수준 위의 디렉터리에 대해 수동으로 하드 링크하여 생성됩니다. 정상적인 빈 처녀 디렉토리의 링크 수는 2입니다.

  • 1989년부터(SVr4)라고 불리는 BSD-4.2 파일 시스템에서 ufs디렉토리는 안정성이 부여되지 않은 형식을 사용하는 일련의 가변 길이 레코드이므로 사용자 공간 명령은 이 형식을 읽을 수 없습니다. 보고된 "크기"는 v7-fs에서와 같이 바이트 단위의 크기입니다. 크기는 일반적으로 커지거나 그대로 유지되지만 최신 버전의 파일 시스템은 일부 조건에서 크기를 줄일 수 있지만 항상 예상할 수 있는 것은 아닙니다. 빈 디렉토리에 대해 보고된 링크 수는 와 마찬가지로 2입니다 v7-fs.

  • 1988년 여름부터 1991년 5월 사이에 내가 설계하고 구현한 파일 시스템 에서 WOFS디렉터리는 항상 "크기" 0을 보고하며 호출을 사용하여 읽을 수 있는 콘텐츠 유형이 없습니다 read(2). 이는 WOFS최초의 Copy-on-Write 파일 시스템이고 WOFS파일에서 디렉터리에 나열되는 대신 해당 디렉터리를 보고하기 때문입니다. WOFS를 사용하여 디렉토리를 읽으면 readdir()의도한 항목에 대한 데이터만 얻을 수 있고 .및 에 대해서는 데이터를 얻을 수 없습니다 ... 빈 디렉토리의 링크 수 WOFS는 1이고 전체 동작은 POSIX와 완전히 호환됩니다.

  • 에서는 논문을 ZFS읽은 후 구현되었습니다 WOFS. ZFS는 기록 중 복사 파일 시스템이며 작성자는 WOFS. ZFS의 디렉토리는 number of directory entriesin 을 보고 st_size하므로 보고된 "크기"는 디렉토리 데이터에서 차지하는 디스크 공간과 관련하여 실제 의미가 없습니다. ZFS 디렉토리에는 .및 항목이 없지만 ..을 호출하면 readdir()이러한 항목이 위조되어 처음 두 작업에 대해 반환됩니다. ZFS는 목록에서 하드 링크 디렉토리를 지원하지 않는 유일한 FS이지만 디렉토리에 대해 보고된 링크 수는 항상 2입니다. ZFS의 이러한 두 가지 불규칙성은 POSIX가 아닌 과거 프로그램의 혼란을 줄이기 위해 구현되었습니다.

  • ZFS와 유사하게 WAFL은 WOFS. Netapp의 문서는 논문이 출판된 WAFL지 3년 후에 작성되었으며 WOFSWAFL은 기록 중 복사이지만 WAFL은 디렉토리에 콘텐츠가 있다는 가정하에 "실제 디렉토리 크기"일 수 있는 "크기" 값을 보고하는 것으로 보입니다.

답변3

디렉토리는 자체 및 해당 내용에 대한 메타데이터를 위해 최소 4096바이트를 예약합니다.

또한 4096바이트는 ext2/ext3/ext4 파일 시스템의 기본 할당 단위(블록)이므로 디렉터리는 더 작을 수 없습니다.

다른 파일 시스템에서는 기본 크기가 다른 디렉터리를 찾을 수 있습니다. 이는 파일 시스템의 기본 블록 크기 때문입니다.

디렉터리 크기는 채워짐에 따라 동적으로 커질 수도 있지만 일단 채워지면 디렉터리를 제거하지 않고는 메타데이터용으로 예약된 공간을 다시 할당할 수 없습니다.

답변4

디렉토리는 전화번호부와 같은 단순한 디렉토리입니다. 숫자 목록과 그 옆에 이름이 있는 파일일 뿐입니다. 각 번호는 파일 시스템의 파일(inode 번호)을 참조하며 이름은 파일 이름입니다.

해당 데이터를 저장하려면 디스크 공간이 필요하며, 데이터가 할당되고 증가하고 축소되는 방법은 파일 시스템에 따라 다릅니다.

관련 정보