[linux] 디렉토리 별 디스크 사용량 보기 - 리눅스 du 커맨드로 디스크 사용량 많은 디렉토리 찾기

du 명령어는 디스크 사용량을 확인하는 데 사용합니다. du 명령어의 주요 사용 방법은 다음과 같습니다.

커맨드 사용법

  • 현재 디렉토리의 디스크 사용량 확인: 현재 디렉토리와 하위 디렉토리들의 디렉토리별 디스크 사용량을 표시합니다.
du
23784   ./log/nginx
4       ./log/private
4       ./log/landscape
4       ./log/dist-upgrade
8       ./log/unattended-upgrades
32      ./log/mysql
2588764 ./log/journal/21e15257372601494d3c2ced68f3b60b
2588768 ./log/journal
80      ./log/apt
2926588 ./log
7560876 .

단위가 생략되어 있지만 단위는 Kbyte입니다.

  • 특정 디렉토리의 디스크 사용량을 표시합니다. 마찬가지로 하위 디렉토리들의 사용량도 표시합니다.
du [디렉토리 경로]

  • -h: 디렉토리의 디스크 사용량을 읽기 쉬운 형식으로 표시합니다. 1Mb 미만은 K로, 메가 단위는 M으로 기가 단위는 G로 숫자를 간략하게 표시합니다.
du -h
24M     ./log/nginx
4.0K    ./log/private
4.0K    ./log/landscape
4.0K    ./log/dist-upgrade
8.0K    ./log/unattended-upgrades
32K     ./log/mysql
2.5G    ./log/journal/21e15257372601494d3c2ced68f3b60b
2.5G    ./log/journal
80K     ./log/apt
2.8G    ./log
7.3G    .

마지막의 "."이 현재 디렉토리의 전체 사용 용량입니다.

기본 표시 용량과 "-h" 표시 용량과 차이가 있는 것은 기본 표시 사용량을 읽기 쉬운 형식으로 계산할 때 2진법으로 환산하면서 1024로 나누기 때문입니다.

  • -s: 현재 디렉토리의 전체 용량을 요약 출력합니다.
du -s
7562056 .

du 커맨드 실행 결과에서 마지막 행만 출력하는 것과 같습니다.

  • 원격 서버의 디스크 사용량 확인은 SSH로 접속 정보와 함께 요청할 수 있습니다.
ssh [사용자ID]@[원격호스트IP] 'du -sh'

두 개이상의 옵션을 조합해서 사용할 때는 다음과 같이 사용합니다.

du -shc

현재 디렉토리 바로 밑 디렉토리들의 사용량 합계

du -sh 로 디스크 사용량을 요약 출력하면 현재 디렉토리 밑의 모든 파일의 합계를 출력합니다.

보통은 우리가 알고 싶은 것이 현재 디렉토리 바로 밑에 있는 디렉토리들이 차지하고 있는 디스크 사용량이므로 다음과 같이 du 커맨드를 사용하면 됩니다.

du -sh *
$> du -sh *
4.0K    apps
4.0K    data
148M    files
1.7G    images
626M    logs
4.0K    media
64K     public
8.0K    settings
3.0M    themes

이 커맨드는 결과 출력에서 현재 디렉토리의 전체 합 표시는 제외됩니다. 현재 디렉토리의 전체 합까지 표시하려면 --max-depth 옵션을 사용해 결과 표시 뎁스를 1로 제한해서 같은 결과를 표시할 수 있습니다.

--max-depth 옵션으로 1 뎁스까지 구한 합계 출력에는 현재 디렉토리의 전체 합이 함께 표시됩니다.

 $> du -h --max-depth=1
8.0K    ./settings
1.7G    ./images
64K     ./public
4.0K    ./data
626M    ./logs
4.0K    ./media
4.0K    ./apps
3.0M    ./themes
148M    ./files
2.4G    .

합계 출력 뎁스를 제한하는 것보다는 현재 디렉토리 전체 합계를 "total" 행으로 추가 표시해주는 -c 옵션을 사용하는 것이 더 간편합니다. -c 옵션을 사용하면 결과 출력 맽 끝 행에 "total"로 현재 디렉토리의 전체 디스크 사용량을 표시해줍니다.

$> du -shc *
4.0K    apps
4.0K    data
148M    files
1.7G    images
626M    logs
4.0K    media
64K     public
8.0K    settings
3.0M    themes
2.4G    total

출력 결과 정렬하기

du 커맨드 출력은 디렉토리 시간순으로 정순으로 출력됩니다. 다른 기준으로 정렬해서 출력하려면 파이프(|)를 사용해서 출력 결과를 정렬 할 수 있습니다.

출력 결과를 파일 크기순으로 정렬하려면 다음과 같이 파이프로 정렬할 수 있습니다.

du -sh * | sort -h
$> du -sh * | sort -h
4.0K    apps
4.0K    data
4.0K    media
8.0K    settings
64K     public
3.0M    themes
148M    files
626M    logs
1.7G    images