본문 바로가기

Programming etc/UNIX

상황에 맞는 UNIX/Linux 명령어

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