개발 지식, 스크립트/리눅스
폴더의 정확한 의미
개발하는지호
2024. 9. 5. 12:10
나는 이전까지 폴더 하면 파일들을 저장하는 하나의 '공간' 이라고 생각했다.
그 결과, ls -alh를 사용하면 해당 폴더가 차지하는 용량이 나오는데 만약 4.0K 이면 폴더 내부에 총 4.0KB 파일들만 들어갈 수 있다고 생각했다.
하지만!!! 이게 아니었다.
<<폴더의 정확한 의미>>
파일들이 들어있는 실제 데이터 공간이 아니라, 그 안에 들어 있는 "파일 및 하위 폴더들을 관리하기 위한 구조" 이다.
폴더 자체는 메타데이터를 포함하고 있으며, 해당 폴더 안에 파일과 디렉토리가 존재하는지에 대한 정보를 유지한다.
조금 더 깊게 파악한다면.
폴더의 역할
1. 파일 및 하위 디렉토리 관리
- 폴더는 그 안에 있는 파일들과 하위 폴더들의 이름, 위치, 권한, 타임스탬프 등을 관리한다.
- 폴더 자체는 이러한 메타데이터만을 포함하며, 실제 데이터는 각 파일이 별도로 디스크에서 차지하는 공간에 저장된다.
2. 폴더 자체의 크기
- 폴더 자체가 차지하는 크기는 메타데이터가 차지하는 공간으로, 일반적으로 4KB 정도이다. 이는 디렉토리 안의 파일이 얼마나 많고 크든 관계없이 일정한 크기이다.
3. 파일의 실제 데이터
- 폴더 안에 있는 파일들은 각각 실제로 데이터를 저장하며, 각 "파일은 자신만의 디스크 공간을 차지"한다.
- ls -alh로 파일을 보면 파일이 디스크에서 차지하는 실제 크기를 확인할 수 있다.
<<정리>>
폴더가 가지는 용량은 폴더 하위에 파일이 들어갈 수 있는 용량, 공간을 의미하는 것이 아니고 해당 하위 데이터를 관리하기 위한 메타데이터를 가지고 있을 뿐, 실제 파일 데이터는 별도의 디스크에 저장된다.
ls 로는 실제 사용하고 있는 용량을 알 수 있고,
du는 해당 폴더가 차지하는 용량이라고 볼 수 있다.
결론
- ls : 파일의 실제 데이터 크기를 보여준다.
- du : 파일이 디스크에서 실제로 차지하는 블록 단위의 크기를 보여준다. 블록 크기보다 작은 파일도 블록 크기만큼 공간을 차지한다.
공부하면 할 수록 놀랍다 ㅋㅋ 내가 무지했던게 들어날수록 놀랍다 ㅋㅋ 더 열심히 파헤치고 열심히 하자