
du는 리눅스에 기본 탑재된 명령줄 도구로, 디렉터리와 파일이 차지하는 디스크 공간을 보여줍니다. 'disk usage'(디스크 사용량)의 약자인 du는 명령줄 환경에서 디스크 공간을 분석할 때 가장 널리 쓰이는 필수 도구입니다.
기본 사용법
du /path/to/directory분석할 디렉터리 경로와 함께 du 명령을 실행하면, 각 하위 디렉터리가 차지하는 디스크 용량이 하나씩 표준 출력으로 표시됩니다. 다만 디렉터리가 매우 크거나 시스템 전체를 스캔하는 경우 수만 줄에 달하는 결과가 출력되고 상당한 시간이 소요될 수 있습니다. 그래서 실무에서는 아래에서 소개하는 옵션(플래그)들을 함께 사용하는 것이 일반적입니다. 대부분의 옵션은 자유롭게 조합할 수 있지만, 의미가 서로 충돌하는 일부 조합은 함께 쓸 수 없습니다.
출력 결과 제어하기

du -c출력 맨 아래에 스캔한 디렉터리들의 총 디스크 사용량을 나타내는 합계(total) 줄을 추가로 표시합니다.
du -s지정한 디렉터리의 총 사용량 요약만 보여줍니다. 계산이 완료되기 전까지는 아무런 출력도 나타나지 않습니다.
du > du-report.txt명령 결과를 현재 작업 디렉터리의 du-report.txt라는 텍스트 파일로 저장합니다. 명령줄에 능숙한 사용자에게는 익숙한 리다이렉션 기법이지만, 초보자에게도 알아두면 매우 유용합니다.
du | less출력을 less 페이저로 파이프하여, 탐색 단축키로 스크롤하면서 읽기 좋은 형태로 결과를 살펴볼 수 있습니다.
크기 표시 단위 변경하기

특정 단위를 지정하면 파일 크기는 일반적으로 반올림되어 표시됩니다. 예를 들어 4KB짜리 파일은 -m 옵션 사용 시 0MB로 표시되고, 750KB 파일은 1MB로 표시됩니다.
du -h'사람이 읽기 쉬운(human readable)' 형식으로 표시합니다. 기본 블록 크기 대신 KB, MB, GB처럼 상황에 맞는 적절한 단위가 자동으로 선택됩니다.
du -k1024바이트(1킬로바이트) 블록 단위로 크기를 표시합니다.
du -m1,048,576바이트(1메가바이트) 블록 단위로 크기를 표시합니다.
du -g1,073,741,824바이트(1기가바이트) 블록 단위로 크기를 표시합니다.
파일과 심볼릭 링크 포함하기

du -L명령줄 인수와 파일 계층 구조에서 심볼릭 링크를 따라갑니다(역참조). 이 옵션이 없으면 링크가 가리키는 실제 디렉터리 트리가 아니라, 심볼릭 링크 자체가 차지하는 공간(보통 파일 시스템의 최소 단위)만 보고됩니다.
du -a디렉터리뿐 아니라 모든 개별 파일의 디스크 사용량까지 함께 표시합니다.
du /path/to/file.txt명령에 지정한 특정 파일 하나의 디스크 사용량만 표시합니다.
파일, 디렉터리, 링크 제외하기

du -X FILE지정한 파일에 담긴 패턴과 일치하는 항목을 계산에서 제외합니다.
du --exclude="*.o"패턴과 일치하는 파일과 하위 디렉터리를 제외합니다. 위 예제에서는 이름이 '*.o' 패턴과 일치하는 항목이 모두 건너뛰어집니다. 여기서 사용되는 것은 정규 표현식이 아니라 셸(shell) 패턴이라는 점에 유의하세요. 즉, 와일드카드는 0개 이상의 임의 문자열과 일치하는 *와 임의의 한 문자와 일치하는 ? 두 가지뿐입니다. 제외된 파일은 디렉터리 크기 계산에서 빠지며, -a 옵션을 함께 사용하면 결과 출력에서도 생략됩니다.
du --threshold=SIZESIZE가 양수이면 그보다 작은 항목을, 음수이면 그보다 큰 항목을 제외합니다. SIZE는 정수이며 단위를 붙일 수 있습니다. 예를 들어 --threshold=1MB는 1메가바이트(1000²바이트) 미만의 모든 파일을 건너뜁니다. 단위는 1024의 거듭제곱을 나타내는 K, M, G, T, P, E, Z, Y(키비바이트, 메비바이트, 기비바이트 등) 또는 표준적인 1000의 거듭제곱을 나타내는 KB, MB, GB, TB(킬로바이트, 메가바이트, 기가바이트 등)를 사용할 수 있습니다. du --threshold=1GB처럼 활용하면 시스템에서 가장 큰 파일을 찾는 데 매우 유용합니다.
du -d N탐색할 최대 깊이를 N단계 하위 디렉터리로 제한합니다. 양의 정수를 지정할 수 있으며, 이 설정에서 du는 지정한 디렉터리부터 N단계까지만 개별적으로 스캔합니다. 그보다 깊은 하위 디렉터리가 존재하면 따로 나열하지 않고 상위 디렉터리의 용량에 포함시킵니다. 참고로 -d 0은 -s 옵션과 동일한 결과를 출력합니다.
예를 들어 부모 디렉터리 하나와 세 개의 하위 디렉터리로 이루어진 'dir1/dir2/dir3/dir4' 경로를 생각해 봅시다. du -d 2 dir1을 실행하면 dir3까지만 스캔되며, dir4는 별도로 표시되지 않지만 그 안의 파일들은 dir3의 크기에 포함됩니다.
마무리: du를 파이프와 함께 활용하기
du 명령은 다른 유틸리티와 조합할 때 진가를 발휘합니다. 대표적인 예가 du -a / | sort -n -r | head -n 10입니다. 이 명령은 전체 파일 시스템을 검색하고(du -a /), 결과를 크기 순으로 내림차순 정렬한 뒤(sort -n -r), 상위 10개 항목만 화면에 보여줍니다(head -n 10). 사실상 시스템에서 용량이 가장 큰 파일 10개를 찾는 바로 가기라고 할 수 있습니다. du를 파이프(|)로 다른 명령들과 자유롭게 연결하면 훨씬 더 강력하고 실용적인 결과를 얻을 수 있습니다.