본문 바로가기
정보통신기술

리눅스에서 특정 폴더의 한 달 이상된 파일 자동 삭제 스크립트

by 주니미 2025. 4. 25.
반응형

📂 리눅스에서 특정 폴더의 한 달 이상된 파일 자동 삭제 스크립트

리눅스 서버나 NAS, 백업 저장소 등에서는 일정 기간이 지난 파일을 주기적으로 정리하는 것이 시스템 자원 관리에 매우 중요합니다. 아래는 특정 디렉터리에 쌓이는 30일 이상된 파일을 자동으로 삭제하는 쉘 스크립트입니다.


🔧 쉘 스크립트 코드

#!/bin/bash

# 삭제할 대상 디렉터리 (절대경로로 지정)
TARGET_DIR="/home/user/logs"

# 로그 파일 경로
LOG_FILE="/var/log/delete_old_files.log"

# 삭제 기준 (30일 이상 지난 파일)
FIND_CONDITION="-type f -mtime +30"

# 현재 날짜 저장
CURRENT_DATE=$(date +"%Y-%m-%d %H:%M:%S")

echo "[$CURRENT_DATE] 시작: $TARGET_DIR 디렉터리에서 30일 이상된 파일 삭제 시작" >> "$LOG_FILE"

# 파일 찾고 삭제
find "$TARGET_DIR" $FIND_CONDITION -print -delete >> "$LOG_FILE" 2>&1

echo "[$CURRENT_DATE] 완료: 삭제 작업 종료" >> "$LOG_FILE"

📌 주요 설명

항목 설명
TARGET_DIR 정리할 디렉터리 경로입니다. 예: /var/log/myapp
FIND_CONDITION -mtime +30은 30일보다 오래된 파일을 의미합니다.
-print -delete 삭제 전 경로를 로그에 출력하고 파일 삭제를 수행합니다.
LOG_FILE 삭제 내역이 저장될 로그 파일입니다. 에러도 함께 기록됩니다.

🕒 crontab 등록 (정기 실행)

자동으로 매일 새벽 2시에 실행되도록 하고 싶다면 다음과 같이 crontab에 등록하세요:

crontab -e
0 2 * * * /bin/bash /home/user/scripts/delete_old_files.sh

💡 쉘 스크립트에 실행 권한을 부여하세요:

chmod +x /home/user/scripts/delete_old_files.sh

✅ 응용 팁

  • 확장자 제한: .log만 삭제하고 싶다면 -name "*.log" 조건을 추가하세요.
  • 서브디렉터리 포함 제외: -maxdepth 1을 사용하여 현재 디렉터리만 검사할 수 있습니다.
  • 보존 정책 적용: mtime 값을 변경해 기간 조정 가능 (예: +7, +90 등).

📈 SEO 최적화 추천 키워드 및 해시태그

추천 키워드:

  • 리눅스 자동 파일 삭제
  • 쉘 스크립트 파일 정리
  • cron 자동화 스크립트
  • log 파일 정리 방법
  • 리눅스 파일 관리 팁

🧩 관련 추천 주제

  • logrotate를 활용한 리눅스 로그 자동 관리 방법
  • tmpwatch vs find 명령어 비교
  • NAS/서버에서 공간 절약을 위한 자동 백업 및 정리 스크립트
  • systemd 타이머로 자동화 스크립트 대체하기


마치며

리눅스 환경에서는 시스템 자원을 정기적으로 정리하는 것이 효율적인 운영을 위해 필수입니다. 특히 로그 파일이나 임시 파일이 주기적으로 쌓이는 환경에서는 이번에 소개한 쉘 스크립트 자동 삭제 방식을 통해 안정성과 유지보수 비용을 크게 줄일 수 있습니다. 앞으로는 이러한 자동화를 통해 시스템 운영의 효율성을 높여보세요.

반응형