본문 바로가기
IT/리눅스

리눅스 오래된 파일 찾기 및 삭제 (커맨드, 스크립트)

by JGSHIN 2025. 2. 15.
SMALL

1. 개요

이 스크립트는 특정 디렉터리 내에서 가장 오래된 DB "Full" 백업 파일을 찾고, 그 이후로 생성된 .trn 및 .diff 확장자를 가진 파일만 남기고 나머지를 삭제하는 기능을 합니다.

 

 

 

2. 스크립트 분석

#!/bin/bash

 

# Full 파일이 있는 최상위 디렉터리로 이동

cd /path/to/top_directory_containing_full_files

 

# 가장 오래된 Full 파일 찾기

oldest_full=$(find . -type f -name "*.Full" -printf '%T@ %p\n' | sort -n | head -1 | cut -f2- -d" ")

 

# 가장 오래된 Full 파일의 날짜 가져오기

oldest_date=$(date -r "$oldest_full" "+%Y%m%d")

 

# Full 파일 이후의 .trn .diff 파일 삭제

find . -type f \( -name "*.trn" -o -name "*.Diff" \) ! -newermt "$oldest_date" -delete

  • 쉘 스크립트의 시작을 알리는 해시뱅(shebang) 선언.

3. Full 파일이 있는 최상위 디렉터리로 이동

 
cd /path/to/top_directory_containing_full_files
  • 백업 파일이 저장된 디렉터리로 이동합니다.
  • /path/to/top_directory_containing_full_files를 실제 백업 디렉터리 경로로 변경해야 합니다.

4. 가장 오래된 Full 파일 찾기

 
oldest_full=$(find . -type f -name "*.Full" -printf '%T@ %p\n' | sort -n | head -1 | cut -f2- -d" ")

설명

  • find . -type f -name "*.Full"
    → 현재 디렉터리(.)에서 확장자가 .Full인 파일 목록을 검색
  • -printf '%T@ %p\n'
    → 각 파일의 최종 수정 시간(epoch, 초 단위)과 파일 경로를 출력
    (예: 1692332331.123456789 ./backup_20240801.Full)
  • sort -n
    가장 오래된 파일이 첫 번째 줄에 오도록 정렬
  • head -1
    → 가장 오래된 파일만 선택
  • cut -f2- -d" "
    → 파일 경로만 추출 (시간 정보 제외)

🔹 예제 결과

 
./backup_20240801.Full

5. 가장 오래된 Full 파일의 날짜 가져오기

 
oldest_date=$(date -r "$oldest_full" "+%Y%m%d")

설명

  • date -r "$oldest_full"
    → oldest_full 파일의 최종 수정 시간을 가져옴
  • "+%Y%m%d"
    YYYYMMDD 형식으로 변환 (예: 20240801)

🔹 예제 결과

 
20240801

6. Full 파일 이후의 .trn 및 .diff 파일 삭제

 
find . -type f \( -name "*.trn" -o -name "*.Diff" \) ! -newermt "$oldest_date" -delete

설명

  • find . -type f
    → 현재 디렉터리(.)에서 파일만 검색
  • \( -name "*.trn" -o -name "*.Diff" \)
    → 확장자가 .trn 또는 .Diff인 파일만 선택
  • ! -newermt "$oldest_date"
    → oldest_date보다 새로운 파일을 제외
  • -delete
    삭제 실행

📌 즉, oldest_date보다 오래된 .trn 및 .Diff 파일을 삭제합니다.


📌 스크립트 실행 예제

예제 1: 디렉터리 내 파일 목록

backup_20240801.Full
backup_20240802.trn
backup_20240803.trn
backup_20240801.Diff
backup_20240730.trn  # 오래된 파일
backup_20240729.trn  # 오래된 파일

예제 2: 스크립트 실행 후 남는 파일

  • backup_20240801.Full (가장 오래된 Full 파일 → 유지됨)
  • backup_20240802.trn, backup_20240803.trn (Full 파일 이후 생성된 파일들 유지)
  • backup_20240801.Diff (Full 파일과 동일한 날짜라 유지)

삭제됨

  • backup_20240730.trn
  • backup_20240729.trn

📌 결론

이 스크립트는:

  1. 가장 오래된 Full 백업 파일을 찾고
  2. 해당 날짜 이후로 생성된 .trn 및 .Diff 파일은 유지
  3. 이전 날짜의 .trn 및 .Diff 파일을 삭제

👉 백업 관리에 최적화된 자동화 스크립트입니다. 🚀

LIST
📧 이메일 문의
by @ 2025 JGSHIN