본문 바로가기
일반IT/리눅스

리눅스 서버 용량 부족? 😱 가장 큰 파일 찾아 삭제하는 초간단 해결법

by gasbugs 2025. 10. 11.

안녕하세요! 오늘은 리눅스 서버를 운영하다 보면 누구나 한 번쯤 겪게 되는 '디스크 용량 부족' 문제를 해결하는 방법을 알아보겠습니다. 갑자기 서비스가 멈추거나 서버에 접속이 안 되는 아찔한 상황! 😨 대부분 디스크 공간이 꽉 차서 발생하는 문제일 수 있습니다.

이럴 때 임시방편으로 가장 큰 파일을 찾아 삭제하면 급한 불을 끌 수 있는데요, 지금부터 차근차근 그 방법을 알려드릴게요!

1단계: 파일시스템 사용량 확인하기 📊

가장 먼저 어떤 디스크가 문제인지 파악해야 합니다. df 명령어를 사용하면 현재 서버의 전체 파일시스템 사용량을 한눈에 볼 수 있습니다.

  1. 문제가 발생한 서버에 접속합니다. (예시: node01)
    ssh node01
  2. -h 옵션(human-readable)을 붙여 사람이 보기 편한 단위(GB, MB)로 사용량을 확인합니다.[실행 결과 예시]결과를 잘 살펴보세요. Use% 열이 90%를 훌쩍 넘는 곳이 바로 우리의 목표 지점입니다. 위 예시에서는 루트(_/_) 파일시스템의 사용량이 98% 에 달하네요.
  3. ⚠️ 중요! 이후 단계에서 사용할 경로는 바로 이 Mounted on 열에 있는 경로입니다. 위 예시에서는 / 가 되겠죠? 여러분의 환경에 맞는 경로를 꼭 기억해두세요. 이 글에서는 편의상 /path/to/mountpoint 로 지칭하겠습니다.
    df -h

2단계: 가장 큰 파일 찾아내기 (삭제는 아직!) 🔍

이제 용량이 꽉 찬 파일시스템(_/_ 또는 /data 등)에서 어떤 파일이 가장 많은 공간을 차지하고 있는지 찾아볼 차례입니다.

삭제부터 하면 위험해요! 🚨 어떤 파일인지 먼저 확인하는 습관이 중요합니다. 아래 명령어는 가장 큰 파일의 크기와 경로만 보여줍니다.

find /path/to/mountpoint -type f -printf '%s %p\n' | sort -nr | head -n 1

명령어가 조금 길고 복잡해 보이죠? 하나씩 분해해서 설명해 드릴게요.

  • find /path/to/mountpoint -type f -printf '%s %p\n':
    • find: 특정 경로에서 파일을 검색합니다.
    • -type f: 디렉터리가 아닌 '파일'만 찾습니다.
    • -printf '%s %p\n': 찾은 파일의 정보를 특정 형식으로 출력합니다. %s는 파일 크기(size), %p는 파일 경로(path)를 의미합니다. 즉, [파일크기] [파일경로] 형태로 출력됩니다.
  • | (파이프): 왼쪽 명령어의 결과를 오른쪽 명령어의 입력으로 전달하는 연결고리입니다.
  • sort -nr:
    • sort: 전달받은 내용을 정렬합니다.
    • -n: 숫자(numeric) 기준으로 정렬합니다.
    • -r: 역순(reverse), 즉 내림차순으로 정렬합니다. 가장 큰 숫자가 맨 위로 오겠죠?
  • head -n 1: 전달받은 내용의 첫 번째 줄만 보여줍니다.

결과적으로 이 명령어는 "지정한 경로에서 가장 큰 파일 하나를 찾아서 크기와 함께 보여줘!" 라는 의미가 됩니다.

3단계: 확인 후, 가장 큰 파일 삭제하기 🗑️

2단계에서 찾은 파일이 불필요한 로그 파일이나 백업 파일처럼 삭제해도 안전한 파일이라고 확신이 들었다면, 이제 삭제를 진행합니다.

아래 명령어는 2단계 명령어에 삭제 로직을 추가한 것입니다.

find /path/to/mountpoint -type f -printf '%s %p\n' | sort -nr | head -n 1 | awk '{print $2}' | xargs rm

새롭게 추가된 부분만 살펴볼까요?

  • awk '{print $2}':
    • awk: 강력한 텍스트 처리 도구입니다.
    • '{print $2}': 입력된 내용에서 두 번째 열(column)만 출력하라는 의미입니다. [파일크기] [파일경로] 형태의 입력에서 파일 경로만 쏙 뽑아내는 역할을 합니다.
  • xargs rm:
    • xargs: 이전 명령어에서 넘어온 결과(파일 경로)를 rm 명령어의 인자(argument)로 넘겨줍니다.
    • rm: 파일을 삭제하는 명령어입니다.

즉, 가장 큰 파일의 경로를 찾아서 rm 명령어로 삭제하는 과정이 자동으로 실행됩니다.

💥 주의! 💥 이 명령어는 확인 절차 없이 파일을 영구적으로 삭제합니다. 시스템 운영에 필수적인 파일을 삭제하면 서버가 부팅되지 않을 수도 있습니다. 삭제하기 전에 반드시 어떤 파일인지, 지워도 되는 파일인지 재차 확인하세요!

4단계: 공간 확보 확인하기 ✅

파일을 성공적으로 삭제했다면, 정말로 디스크 공간이 확보되었는지 확인해야겠죠? 1단계에서 사용했던 df -h 명령어를 다시 실행해 봅시다.

df -h /path/to/mountpoint

이번에는 전체 파일시스템을 볼 필요 없이, 우리가 작업했던 특정 경로만 지정해서 확인하면 더 편리합니다.

[실행 결과 예시]

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        50G   42G  7.5G  85% /

Use%가 98%에서 85%로 확 줄어든 것을 볼 수 있습니다. 성공입니다! 🎉 이제 서버는 다시 정상적으로 동작할 수 있는 공간을 확보했습니다.


오늘은 리눅스 서버의 디스크 용량이 가득 찼을 때 가장 큰 파일을 찾아 삭제하는 방법을 단계별로 알아보았습니다. 이 방법은 급할 때 아주 유용하지만, 근본적인 해결책은 아닐 수 있습니다. 주기적으로 불필요한 로그를 정리하거나, 디스크 용량을 증설하는 등의 장기적인 계획을 세우는 것이 더 중요하답니다! 😊