Linux du 명령어: 파일 공간 사용량 추정

LinuxBeginner
지금 연습하기

소개

이 실습에서는 디스크 공간 사용량을 추정하고 분석하는 강력한 도구인 Linux 의 du (disk usage) 명령어를 살펴봅니다. 여러분이 급격히 성장하는 파일 서버를 관리하는 시스템 관리자라고 가정해 봅시다. 여러분의 임무는 공간을 많이 차지하는 디렉토리와 파일을 식별하여 스토리지 활용도를 최적화하는 것입니다. du 명령어는 이러한 디스크 공간 조사 과정에서 든든한 탐정 도구가 되어줄 것입니다.

이 실습은 단계별 안내에 따라 학습하고 연습할 수 있는 가이드형 실습입니다. 각 단계를 주의 깊게 따라가며 직접 실습해 보세요. 통계에 따르면 이 실습은 초급 수준이며, 98%의 완료율과 학습자들로부터 100%의 긍정적인 평가를 받았습니다.

du 의 기본 개념 이해하기

du 명령어는 디스크 공간 사용량을 파악하기 위한 첫 번째 방어선입니다. 먼저 기본적인 기능부터 살펴보겠습니다.

먼저, 조사를 진행할 프로젝트 디렉토리로 이동합니다.

cd ~/project

이제 기본적인 du 명령어를 실행해 봅니다.

du

팁: 파일과 폴더는 무작위로 생성되며 크기 또한 무작위이므로, 실행할 때마다 결과가 다를 수 있습니다.

다음과 유사한 출력을 보게 될 것입니다.

0       ./documents/reports
0       ./documents
10240   ./backups
0       ./logs/archive
0       ./logs/system
5120    ./logs/application
5120    ./logs
15360   .

각 줄은 두 가지 정보를 보여줍니다.

  1. 디스크 사용량 (KB 단위)
  2. 해당 디렉토리 경로

처음에는 숫자가 다소 생소하게 느껴질 수 있습니다. 이 숫자들은 킬로바이트 (KB) 단위의 디스크 사용량을 나타냅니다. 하지만 걱정하지 마세요. 더 읽기 쉽게 만들 수 있습니다!

-h (human-readable) 옵션을 사용하여 명령어를 실행해 보겠습니다.

du -h

이제 다음과 같은 출력이 나타납니다.

0       ./documents/reports
0       ./documents
10M     ./backups
0       ./logs/archive
0       ./logs/system
5.0M    ./logs/application
5.0M    ./logs
15M     .

-h 옵션은 크기를 사람이 이해하기 쉬운 형식 (킬로바이트는 K, 메가바이트는 M 등) 으로 변환해 줍니다. 덕분에 한눈에 내용을 파악하기가 훨씬 수월해집니다.

참고할 몇 가지 사항은 다음과 같습니다.

  • 마지막의 .은 현재 디렉토리 (이 경우 ~/project) 를 나타냅니다.
  • 디렉토리의 디스크 사용량에는 모든 하위 디렉토리의 사용량이 포함됩니다.
  • 설정 스크립트가 무작위로 파일 크기를 생성하므로, 실제 보이는 크기는 예시와 약간 다를 수 있습니다.

특정 디렉토리 조사하기

기본을 익혔으니 이제 특정 디렉토리를 더 자세히 살펴보겠습니다. 상당한 공간을 차지하고 있는 것으로 보이는 logs 디렉토리에 집중해 보겠습니다.

먼저 logs 디렉토리로 이동합니다.

cd ~/project/logs

이제 du를 사용하여 이 디렉토리를 검사합니다.

du -h

다음과 같은 출력이 나타날 수 있습니다.

0       ./archive
0       ./system
5.0M    ./application
5.0M    .

이를 통해 logs 디렉토리 내의 각 하위 디렉토리에 대한 디스크 사용량 내역을 알 수 있습니다. 그런데 만약 logs 디렉토리의 전체 합계만 보고 싶다면 어떻게 해야 할까요?

--max-depth 옵션을 사용하면 du가 디렉토리 구조를 얼마나 깊게 탐색할지 제한할 수 있습니다.

du -h --max-depth=0

이렇게 하면 현재 디렉토리의 합계만 출력됩니다.

5.0M    .

--max-depth=0du에게 하위 디렉토리로 들어가지 말고 현재 디렉토리만 표시하라고 지시합니다.

바로 아래 단계의 하위 디렉토리까지만 보려면 --max-depth=1을 사용합니다.

du -h --max-depth=1

출력 결과:

0       ./archive
0       ./system
5.0M    ./application
5.0M    .

이를 통해 어떤 하위 디렉토리가 가장 많은 공간을 차지하는지 더 명확하게 파악할 수 있습니다.

--max-depth 옵션은 디렉토리 구조가 매우 복잡하게 중첩되어 있을 때 특정 계층 수준에 집중하고 싶은 경우 특히 유용합니다.

디스크 사용량 정렬 및 분석하기

가장 많은 공간을 사용하는 하위 디렉토리를 식별했으므로, 이제 결과를 정렬하는 방법을 배워보겠습니다. 정렬을 이용하면 디스크 공간을 가장 많이 소모하는 대상을 빠르게 찾아낼 수 있습니다.

dusort 명령어를 조합하여 사용하겠습니다. sort 명령어에 익숙하지 않더라도 작동 방식을 설명해 드릴 테니 걱정 마세요.

먼저, du의 출력을 크기순으로 정렬해 보겠습니다.

du -h | sort -h

이 명령어는 세 가지 작업을 수행합니다.

  1. du -h: 디스크 사용량을 사람이 읽기 쉬운 형식으로 출력합니다.
  2. |: 파이프 기호입니다. 왼쪽 명령어의 출력을 오른쪽 명령어의 입력으로 전달합니다.
  3. sort -h: 입력된 내용을 사람이 읽기 쉬운 크기 단위를 기준으로 숫자순 정렬합니다.

다음과 같은 출력이 나타날 수 있습니다.

0       ./archive
0       ./system
5.0M    .
5.0M    ./application

결과가 작은 것부터 큰 순서로 정렬되었습니다. 하지만 보통은 큰 디렉토리를 먼저 확인하고 싶을 때가 많습니다. 순서를 뒤집으려면 sort-r 옵션을 추가합니다.

du -h | sort -hr

출력 결과:

5.0M    ./application
5.0M    .
0       ./system
0       ./archive

이제 logs 폴더 내에서 어떤 하위 디렉토리가 가장 많은 공간을 차지하는지 내림차순으로 명확하게 확인할 수 있습니다.

직계 하위 디렉토리에만 집중하여 정렬하려면 지금까지 배운 기술을 조합하면 됩니다.

du -h --max-depth=1 | sort -hr

이 명령어는 현재 디렉토리의 직계 하위 디렉토리들만 표시하고 정렬합니다.

명령줄의 진정한 힘은 이처럼 간단한 명령어들을 조합하여 복잡한 작업을 수행하는 데서 나옵니다. 우리는 방금 du, sort 그리고 여러 옵션을 조합하여 디스크 사용량을 신속하게 분석했습니다!

가장 큰 파일 찾기

지금까지는 디렉토리 크기를 살펴보았습니다. 하지만 가장 많은 공간을 차지하는 구체적인 파일을 찾고 싶다면 어떻게 해야 할까요? du 명령어는 주로 디렉토리 단위로 작동하지만, 다른 명령어와 조합하면 큰 파일을 찾아낼 수 있습니다.

find 명령어와 du를 함께 사용해 보겠습니다. find가 생소하더라도 원리를 설명해 드리겠습니다.

먼저, 프로젝트 디렉토리로 돌아갑니다.

cd ~/project

이제 finddu를 사용하여 가장 큰 파일들을 찾아보겠습니다.

find . -type f -exec du -h {} + | sort -hr | head -n 5

명령어가 복잡해 보일 수 있지만, 하나씩 쪼개어 보겠습니다.

  1. find . -type f: 현재 디렉토리 (.) 와 그 하위 디렉토리에서 모든 파일 (-type f) 을 찾습니다.
  2. -exec du -h {} +: 찾은 각 파일에 대해 du -h를 실행합니다. {}는 파일 이름으로 대체되며, +find가 가능한 한 많은 파일 이름을 du 명령어에 한꺼번에 전달하도록 합니다.
  3. sort -hr: 결과를 크기 역순 (큰 것부터) 으로 정렬합니다.
  4. head -n 5: 상위 5 개 결과만 보여줍니다.

다음과 같은 출력이 나타날 수 있습니다.

10M     ./backups/large_backup.bak
5.0M    ./logs/application/large_app_log.log
0       ./logs/system/placeholder.log
0       ./logs/archive/placeholder.log
0       ./logs/application/placeholder.log

이 출력은 프로젝트 디렉토리 내에서 가장 큰 5 개의 파일과 그 크기를 보여줍니다.

특정 크기보다 큰 파일에만 집중하고 싶다면 명령어를 수정할 수 있습니다. 1MB 보다 큰 파일을 찾아보겠습니다.

find . -type f -size +1M -exec du -h {} + | sort -hr

이 명령어는 1 메가바이트보다 큰 파일만 필터링하기 위해 -size +1M 옵션을 추가했습니다.

이러한 명령어들은 디스크 공간을 확보해야 할 때 매우 유용합니다. 삭제하거나 아카이브하기에 가장 적합한 거대 파일들을 신속하게 식별할 수 있게 해줍니다.

디스크 사용량 보고서 생성하기

디스크 공간 조사의 마지막 단계로, 전체 프로젝트 디렉토리에 대한 종합적인 디스크 사용량 보고서를 작성해 보겠습니다. 이 보고서는 조사 결과를 요약하고 팀원들에게 공유하는 데 도움이 될 것입니다.

먼저, 프로젝트 디렉토리에 있는지 확인합니다.

cd ~/project

이제 du를 사용하여 상세 보고서를 생성하고 파일로 저장해 보겠습니다.

du -h --max-depth=2 | sort -hr > disk_usage_report.txt

이 명령어를 분석해 보겠습니다.

  1. du -h --max-depth=2: 디스크 사용량을 사람이 읽기 쉬운 형식으로 하위 2 단계 깊이까지 표시합니다.
  2. sort -hr: 결과를 크기 역순 (큰 것부터) 으로 정렬합니다.
  3. > disk_usage_report.txt: 출력을 disk_usage_report.txt 라는 파일에 저장합니다. > 기호는 리다이렉션 연산자로, 보통 화면에 출력될 내용을 파일로 "방향을 돌려" 저장합니다.

보고서를 생성했으니 내용을 확인해 보겠습니다.

cat disk_usage_report.txt

가장 큰 것부터 작은 것 순으로 정렬된 디렉토리 목록과 크기를 확인할 수 있습니다.

가장 큰 디렉토리들만 요약해서 보려면 head 명령어를 사용하여 상위 항목만 확인합니다.

head -n 10 disk_usage_report.txt

이렇게 하면 프로젝트에서 가장 큰 10 개의 디렉토리가 표시됩니다.

이 보고서는 프로젝트의 어느 부분이 디스크 공간을 가장 많이 차지하는지 파악하는 데 매우 유용한 도구입니다. 스토리지 사용 최적화 작업을 진행하거나 팀과 리소스 할당에 대해 논의할 때 훌륭한 근거 자료가 됩니다.

요약

이 실습에서는 강력한 du 명령어와 디스크 공간 관리에서의 활용법을 살펴보았습니다. 우리가 학습한 내용은 다음과 같습니다.

  1. 기본적인 du 명령어를 사용한 디스크 사용량 추정
  2. -h 옵션을 통한 가독성 높은 출력 생성
  3. 특정 디렉토리 조사 및 --max-depth를 이용한 탐색 깊이 제한
  4. 디스크 사용량 결과 정렬 및 분석
  5. 디렉토리 내에서 가장 큰 파일 찾기
  6. 종합적인 디스크 사용량 보고서 생성

이러한 기술은 스토리지 리소스를 관리하는 시스템 관리자나 파워 유저에게 필수적입니다.

이 실습에서 다루지 않은 추가적인 du 옵션들은 다음과 같습니다.

  • -s: 각 인자에 대한 합계만 표시
  • -c: 총합계 (grand total) 산출
  • -a: 디렉토리뿐만 아니라 파일의 디스크 사용량도 표시
  • --time: 각 디렉토리의 마지막 수정 시간 표시
  • --exclude=PATTERN: 패턴과 일치하는 파일이나 디렉토리 제외