서버 & 리눅스 실무팁

리눅스 쉘 스크립트 실전 예제 Part 2: 자동 삭제 스크립트

smartbay 2025. 6. 14. 15:32

리눅스 쉘 스크립트 실전 예제 Part 2: 자동 삭제 스크립트

실무와 개발 현장에서 자주 발생하는 불필요한 파일 정리 작업, 쉘 스크립트로 자동화해보세요.


1. 30일 이상 지난 파일 자동 삭제

용도: 오래된 로그나 백업 파일을 주기적으로 정리할 때 사용합니다. 정리 기준은 마지막 수정 시점입니다.

find /path/to/dir -type f -mtime +30 -delete

설명:
- /path/to/dir: 실제 삭제 대상 디렉토리로 변경합니다.
- -mtime +30: 수정된 지 30일이 지난 파일을 찾습니다.
- -delete: 해당 파일을 삭제합니다.
실행 전에는 -print 옵션으로 대상 목록을 먼저 확인하는 것이 안전합니다.


2. 빈 파일 자동 삭제

용도: 크기가 0인 불필요한 파일을 자동으로 정리할 수 있습니다.

find /path/to/dir -type f -empty -delete

설명:
- -type f -empty: 비어 있는 일반 파일을 찾습니다.
- -delete: 해당 파일을 즉시 삭제합니다.
주의: 실수 방지를 위해 -print로 미리 파일 목록을 검토한 후 실행합니다.


3. 임시 파일(.bak, .tmp) 일괄 삭제

용도: 백업이나 임시 작업 중 생성된 파일(.bak, .tmp 등)을 주기적으로 정리할 수 있습니다.

find /path/to/dir -type f \( -name "*.bak" -o -name "*.tmp" \) -delete

설명:
- \(...\): 여러 조건을 묶기 위한 그룹입니다.
- -o: OR 조건으로 .bak 또는 .tmp 파일을 모두 삭제합니다.


4. 오래된 압축 파일(.gz, .zip) 정리

용도: 3개월 이상 지난 압축 로그 파일 등을 주기적으로 삭제할 때 사용합니다.

find /path/to/logs -type f \( -name "*.gz" -o -name "*.zip" \) -mtime +90 -delete

설명:
- -mtime +90: 90일 이상 지난 파일을 대상으로 합니다.
- -name "*.gz" 또는 "*.zip": 압축된 로그/백업 파일에 사용됩니다.


5. 특정 확장자만 삭제 (*.log)

용도: 디버깅이나 테스트 과정에서 남은 로그 파일 등을 한번에 삭제할 때 유용합니다.

find /path/to/dir -type f -name "*.log" -delete

설명:
- -name "*.log": 확장자가 .log인 파일을 찾아 삭제합니다.
- 주기적으로 실행하거나 크론(cron)에 등록하여 자동 정리할 수도 있습니다.


마무리

삭제 관련 스크립트는 반드시 안전성을 고려하여 사전에 테스트한 후 사용해야 합니다. 특히 -delete 명령은 돌이킬 수 없는 작업이므로, 초기에는 -print 또는 echo로 미리 검토하는 것을 강력히 권장드립니다.

스크립트 예:

#!/bin/bash
# 30일 이상 된 log 파일 삭제
find /var/log/app -type f -name "*.log" -mtime +30 -print >> deleted_files.log
find /var/log/app -type f -name "*.log" -mtime +30 -delete

실행 전 반드시 경로와 조건을 적절히 변경해주세요.


실무에 바로 적용할 수 있는 리눅스 쉘 스크립트 예제, 스마트베이에서 함께합니다.


스마트베이 | IT 자동화 혁신 파트너
비즈니스 효율을 높이는 스마트한 IT 솔루션을 제공합니다.

웹사이트 : www.esmartbay.co.kr
E-mail : smartbay.svc@gmail.com
카카오톡 : 바로 상담하기