오래된 로그 파일 삭제

오래된 로그 파일 삭제

타임스탬프와 함께 특정 시간 이후에 생성되는 일부 로그 파일이 있습니다.

/mylog/path
Log_file_2018-07-19-22-55-31Z.tgz
Log_file_2018-07-20-01-29-11Z.tgz
Log_file_2018-07-20-10-36-49Z.tgz
Log_file_2018-07-21-18-26-36Z.tgz

날짜를 기준으로 오래된 로그를 삭제해야 합니다. 예를 들어 지난 5일간의 로그만 원하고 오래된 로그는 삭제해야 합니다. 매일 생성되는 로그 파일의 수는 다양합니다. 이 목표를 달성하는 방법은 무엇입니까?

답변1

명령에 mtime (수정 시간)을 사용할 수 있습니다.find

 find /mylog/path -mindepth 1 -mtime +5 -delete
  • -mindepth 1명령줄 매개변수를 제외한 모든 파일이 처리됨을 나타냅니다.
  • -mtime +55일 전에 수정된 파일을 확인합니다.
  • -delete삭제됩니다

답변2

귀하의 발견에는 해당 옵션이 없으므로 -mtime이것이 가장 쉬운 방법이라고 생각합니다.

#!/bin/bash
# delete every file that's between 5 and 40 days old
for i in {5..40}; do 
    olddate=$(date --date="$i days ago" +%Y-%m-%d)
    echo "Deleting files from $olddate..."
    rm "Log_file_$olddate-*"
done

만약 너라면언제나5일 후에 로그 파일을 삭제하고 싶지만 어떤 이유로든 사용하고 싶지 않은 경우에는 ( crontab 편집)을 사용하여 다음 스크립트를 매일 실행할 logrotate수 있습니다 .croncrontab -e

olddate=$(date --date="5 days ago" +%Y-%m-%d) && rm "/mylog/path/Log_file_$olddate-*"

관련 정보