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 # 오래된 파일
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
📌 결론
이 스크립트는:
- 가장 오래된 Full 백업 파일을 찾고
- 해당 날짜 이후로 생성된 .trn 및 .Diff 파일은 유지
- 이전 날짜의 .trn 및 .Diff 파일을 삭제
👉 백업 관리에 최적화된 자동화 스크립트입니다. 🚀
LIST
'IT > 리눅스' 카테고리의 다른 글
리눅스 반복 명령어 실행 (while true 반복문) (0) | 2025.02.15 |
---|---|
리눅스 내부망 프록시 서버 설정 방법 (0) | 2025.02.15 |
리눅스에서 특정 프로세스를 일괄 종료(스크립트 포함) (0) | 2025.02.15 |
리눅스에서 Windows NFS 서버를 마운트하는 방법 (0) | 2025.02.15 |
리눅스 JAVA SSL 등록 방법 (0) | 2025.02.15 |