본문으로 바로가기
TaeyoungKim.dev

리눅스 폴더 용량 확인: ls -ldh와 du -sh 숫자가 다른 이유

리눅스작성 약 3분 읽기TaeyoungKim
LinkedInX

project 안에 큰 로그 파일이 있는데 ls -ldh project에는 폴더가 몇 바이트라고 나온다. 로그가 증발한 건 아니다. ls와 du가 서로 다른 크기를 보고 있기 때문이다.

ls -ldh로 본 폴더 크기가 왜 작을까?

ls -ldh project에서 -d는 폴더 안의 목록 대신 폴더 자체를 표시한다. 여기 나오는 크기는 project 안의 모든 파일을 합친 값이 아니다. -h는 숫자를 읽기 쉬운 단위로 바꿀 뿐, 계산 대상을 바꾸지는 않는다.

같은 폴더를 du -sh project로 보면 폴더 아래에 사용된 공간을 합쳐 보여 준다. -s는 합계 한 줄, -h는 읽기 쉬운 단위다. 폴더 용량을 알아보려면 먼저 이 값을 확인하자.

같은 폴더에서 ls와 du를 비교해 보자

아래는 새 임시 폴더에 로그 512KiB와 숨김 캐시 128KiB를 만드는 실습이다. 기존 폴더나 서버 파일은 건드리지 않는다.

bash
lab_dir=$(mktemp -d)
mkdir -p "$lab_dir/project/logs" "$lab_dir/project/.cache"
dd if=/dev/urandom of="$lab_dir/project/logs/app.log" bs=1024 count=512 2>/dev/null
dd if=/dev/urandom of="$lab_dir/project/.cache/index.bin" bs=1024 count=128 2>/dev/null

ls -ldh "$lab_dir/project"
du -sh "$lab_dir/project"
du -h -d 1 "$lab_dir/project" | sort -hr

실행한 파일시스템에서는 ls -ldh가 project에 128B, du -sh가 640K를 표시했다. 마지막 명령은 다음처럼 합계와 바로 아래 폴더를 큰 순서로 보여 줬다.

text
640K  .../project
512K  .../project/logs
128K  .../project/.cache

128B는 폴더 자체에 대해 ls가 보고한 크기다. 로그 512KiB와 캐시 128KiB가 사라진 게 아니라, du의 합계와 하위 폴더에 나타난다. 실제 숫자는 파일시스템의 할당 방식에 따라 달라질 수 있다.

큰 하위 폴더를 찾을 때 숨김 폴더는 어떻게 확인할까?

du -sh project/*도 편하지만 *는 보통 .cache처럼 점으로 시작하는 이름을 포함하지 않는다. 이 예제에서 그렇게 조회하면 512K짜리 logs만 보이고 128K짜리 .cache는 빠진다. 합계 640K와 목록 512K가 맞지 않아 또 한 번 고개를 갸웃하게 된다.

du -h -d 1 project는 지정한 폴더 자체와 바로 아래 각 폴더를 표시하므로 이 숨김 폴더도 함께 확인할 수 있다. sort -hr는 사람이 읽는 K·M 단위를 큰 값부터 정렬한다. du가 권한 때문에 일부 경로를 읽지 못했다면 그 결과를 전체 사용량으로 믿지 말고, 오류가 난 경로와 접근 권한부터 확인하자.

한편 df -h는 파일시스템 전체의 사용·여유 공간을 본다. 어느 폴더가 커졌는지는 du로 좁히고, 장치 전체의 여유 공간은 df로 확인한다. 두 명령의 숫자를 같은 범위의 합계처럼 비교하지 않는 것이 핵심이다.

핵심 요약

ls -ldh는 폴더 자체의 크기를, du -sh는 그 아래를 포함한 디스크 사용량을 본다. 큰 하위 폴더를 찾을 때는 du -h -d 1로 한 단계씩 내려가자. project/*에 숨김 폴더가 빠질 수 있다는 점과 읽기 실패가 있었는지도 함께 확인하면 숫자가 어긋난 이유를 더 빨리 찾을 수 있다.

작성자

TaeyoungKim

기초 개념을 구현과 검증, 실제 운영 판단까지 연결해 기록합니다.

#Linux#du 명령어#폴더 용량#디스크 사용량#숨김 폴더

함께 읽으면 좋은 글