[linux] 시간 지나면 파일 자동삭제(crontab)

최승언·2022년 11월 10일
0

linux

목록 보기
13/26

리눅스 기반 os에서 주로 서버운영을 하다보면 디스크 과부하를 막아주기 위해 어느정도 기간을 두고 오래된 파일은 지워줘야 하는 경우가 생길 것이다. 나는 쉘 스크립트를 통해 파일을 삭제하는 스크립트를 짜고 crontab을 통해 특정 시간대에 해당 스크립트가 실행되도록 할 것이다.

# Deletefile.sh
#!/bin/bash


# ---------- Custom Config Option ----------

log_path="path/logs" #파일경로 1
save_path="path/file" #파일경로 2
expire_days=30 #실행주기

# -----------------------------------------------


echo "Start Deletefile.sh"
find ${log_path}/* -type f -mtime +${expire_days} -exec rm -f {} \;
find ${save_path}/*.csv -type f -mtime +${expire_days} -exec rm -f {} \;
echo "End Deletefile.sh"

해당 파일을 생성한 뒤 crontab 명령어를 실행시킨다.

crontab -e # 크론텍 편집기 실행
00 00 * * * <sh파일경로> > <sh실행로그파일경로> 2>&1

여기서 00 00 * * *은 다음과 같은 의미를 지닌다.

*      *      *      *      *
분(0-59)  시간(0-23)  일(1-31)  월(1-12)   요일(0-7)

sh파일경로는 말그대로 sh파일경로를 넣어주면 되고 sh실행로그파일경로는 실행한 sh파일에 대한 로그파일 결과이다. 예를들어 Deletefile.sh가 파일경로라면 뒤에 Deletefile.sh.log로 간단하게 지정해주면 된다.

profile
작업하다가 막힌부분을 기록하는 곳.

0개의 댓글