리눅스에서 일정 시간이 지난 파일을 찾고 지우는 방법에 대해서 간단하게 작성합니다.


1. 일정 시간이 지난 파일을 찾는 방법 : find 명령어


find 명령어에 여러 옵션이 사용될 수 있습니다. 

terminal에서 man find  해보시면 많은 옵션에 대한 설명이 자세히 나와있습니다. 


find 명령어를 통해 변경된지 하루가 넘은 파일을 찾기 위해서는 다음과 같이 옵션이 주어져야 합니다. 


example : find /path/..../files/* -mtime +1


예를들어 다음과 같이 보이는 파일들이 존재한다고 가정했을 때


-rw-r--r--  1 root root 13369971 Jan 12 01:01 a1.tif

-rw-r--r--  1 root root 12896037 Jan 15 04:09 a2.tif


현재 날짜가 1월 15일 이라고 하면.. 
a1.tif는 한 3일 전에 최종 수정된 것이구요. a2.tif는 만들어진지 하루가 안된 파일입니다. 

즉 find /path/..../files/* -mtime +1 명령어를 통해서 a1.tif만 검색되겠죠.

*추가)
-mtime은 수정된 시간을 기준으로 합니다.
-atime은 접근 시간을 기준으로 합니다. 
-ctime은 변경된 시간을 기준으로 합니다.

-amin , -cmin , -mmin  은 각각 분을 기준으로 하는 것입니다.

예로 -mmin +30은 수정된 지 30분 이상된 파일들..

2. 일정 시간이 지난 파일을 지우는 방법 : find 명령어

앞서서 일정 시간이 지난 파일을 찾는 방법에 대해서 정리했습니다.
일정 시간이 지난 파일을 찾아서 지우는 것도 역시 find  명령어를 사용하는데요.
이번에는 exec라는 옵션을 사용하면 됩니다. 

example : find /path/..../files/* -mtime +1 -exec rm {} \;


3. cron에 등록하기


위 2번에서 수행해본  example을 shell 파일로 만들어주세요.

예를 들어 aaa.sh 이라고 저장했으면 그 안에는 다음과 같이 작성되어 있겠죠.


#!/bin/bash

find /path/..../files/* -mmin +1 -exec rm {} \;


수정된지 1분 이상 된 파일을 지워라하는 shell script가 되는 것이구요.

이것을 cron에 등록해주시면 됩니다. 


cron 관련해서 간단한 포스팅을 작성한 적이 있습니다. 


cron 관련 포스팅 : http://ngee.tistory.com/558








+ Recent posts