리눅스 `du` 명령어를 통해 파일이나 디렉토리의 실제 디스크 사용량과 실제 크기를 확인할 수 있습니다. 이러한 값이 왜 다를 수 있는지 그 이유를 알아보겠습니다.
실제 디스크 사용량과 실제 크기의 차이
파일의 크기와 해당 파일이 하드 드라이브에서 차지하는 공간은 거의 일치하지 않는 경우가 많습니다. 디스크 공간은 블록이라는 단위로 할당됩니다. 파일 크기가 블록 크기보다 작더라도 파일 시스템은 더 작은 단위의 공간을 사용하지 않기 때문에 전체 블록을 해당 파일에 할당합니다.
파일 크기가 블록 크기의 정확한 배수가 아니라면 하드 드라이브에서 사용하는 공간은 항상 다음 블록 크기로 반올림됩니다. 예를 들어, 파일 크기가 2블록보다 크지만 3블록보다 작더라도 파일을 저장하기 위해 3블록의 공간이 필요합니다.
파일 크기와 관련하여 두 가지 측정 기준이 사용됩니다. 첫 번째는 파일의 실제 크기로, 파일 내용을 구성하는 바이트 수를 나타냅니다. 두 번째는 하드 디스크에서 파일이 실제로 차지하는 공간으로, 해당 파일을 저장하는 데 필요한 파일 시스템 블록의 수를 나타냅니다.
예시를 통한 이해
간단한 예시를 통해 이를 확인해 보겠습니다. 우선, 단일 문자를 파일로 리디렉션하여 작은 파일을 생성합니다.
echo "1" > geek.txt
geek.txt’ 명령어 실행 결과” />
이제 `ls -l` 명령어를 사용하여 파일의 길이를 확인해 보겠습니다.
ls -l geek.txt
출력 결과에서 파일의 크기는 2바이트로 표시됩니다. 파일에 단 한 글자만 입력했는데 왜 2바이트일까요? 파일 내부에서 어떤 일이 일어나는지 좀 더 자세히 살펴보겠습니다.
정확한 바이트 수를 확인하고, 인쇄되지 않는 문자를 16진수 값으로 표시해주는 `hexdump` 명령어를 사용해 볼 것입니다. `-C` 옵션을 함께 사용하여 16진수 값과 함께 출력 내용을 표시하도록 하겠습니다.