1. 생성된지 특정 일자가 지난 날짜별 폴더 삭제
서버에서 파일들이 날짜별 디렉토리로 backup → 특정 일자가 지난 날짜별 디렉토리를 삭제
<성능 향상>
로직은 찾아서 삭제하는 것이다. 삭제는 파일 건별로 하므로 개선할 여지가 없다. 대신 대상 파일을 찾는 것을 최소화하면 성능을 향상시킬 수 있다.
날짜별 디렉토리 및 디렉토리 안에 있는 파일/디렉토리 전체를 삭제하므로, 날짜별 디렉토리만 찾는다.
1) 특정 일자가 지난 파일을 찾기X → 특정 일자가 지난 디렉토리를 찾기
2) 디렉토리를 찾은 경우, 해당 디렉토리 하위 디렉토리를 찾지 않기
ex) /data001/BAK/yyyyMMdd 디렉토리에 파일이 backup 되며, 생성된지 30일이 지난 파일들을 삭제할 때 사용하는 명령어
find /data001/BAK/* -type d -prune -mtime + 30 -exec rm -Rf {};
* find 에서 prune 옵션 - if the file is a directory, don't descend into it.
* find 의 time 옵션
종류 |
설명 |
atime |
access 된 시각 |
ctime |
change(chown - ownership, chmod - access permision) 된 시각 |
mtime |
content 가 modified 된 시각 (생성된 시각과 가장 가깝다.) |
* find 의 time 옵션 사용
사용 예시 |
의미 |
mtime-n |
오늘을 포함해서 n일전까지 (n일전을 포함) |
mtime+n |
n일전 이전 (n일은 포함X) |
생성된지 7일이 지난(7일을 포함X) 파일을 찾는다면, mtime+7 옵션을 사용
2. 조건에 맞는 디렉토리를 찾고, 해당 디렉토리 내 생성된지 특정 일자가 지나 날짜 폴더 삭제
ex) 디렉토리 구조는 /data001/TCPProgram/파일구분자/TMP 로 이뤄져있으며, 파일구분자는 상대기관에서 보내주는 파일에 따라 프로그램에 의해 추가/삭제가 가능하다. TMP 폴더 안에 있는 파일 중 생성된지 7일이 지난 파일을 삭제하라.
find /data001/TCPProgram/* -type d -name "TMP" | awk '{find $1 -type f -mtime + 7 -exec rm -Rf {} \\;}'
'Programming etc > UNIX' 카테고리의 다른 글
특정 일자가 지난 날짜별 폴더 삭제 (0) | 2016.01.10 |
---|