source

UNIX의 셸 스크립트를 사용하여 10일 이상 지난 파일 삭제

ittop 2023. 4. 17. 22:27
반응형

UNIX의 셸 스크립트를 사용하여 10일 이상 지난 파일 삭제

현재 날짜에서 10일 전까지 폴더의 스크립트를 삭제하고 싶습니다.스크립트는 다음과 같습니다.

2012.11.21.09_33_52.script
2012.11.21.09_33_56.script
2012.11.21.09_33_59.script

스크립트는 Crontab에서 10일마다 실행되기 때문에 현재 날짜가 필요합니다.

find는 이런 종류의 태스크에서 일반적인 도구입니다.

find ./my_dir -mtime +10 -type f -delete

설명

  • ./my_dir디렉토리(자신의 디렉토리로 대체)
  • -mtime +1010일 이상 경과한
  • -type f파일만
  • -delete놀랄 일도 아니지전체 명령을 실행하기 전에 필터를 테스트하려면 이 명령을 제거하십시오.

그리고 주의하세요./my_dir나쁜 놀라움을 피하기 위해 존재합니다!

이전 파일을 삭제하기 위해 위의 셸 스크립트를 활성화하고 로그 기록 및 경과 시간 계산을 수행합니다.

#!/bin/bash

path="/data/backuplog/"
timestamp=$(date +%Y%m%d_%H%M%S)    
filename=log_$timestamp.txt    
log=$path$filename
days=7

START_TIME=$(date +%s)

find $path -maxdepth 1 -name "*.txt"  -type f -mtime +$days  -print -delete >> $log

echo "Backup:: Script Start -- $(date +%Y%m%d_%H%M)" >> $log


... code for backup ...or any other operation .... >> $log


END_TIME=$(date +%s)

ELAPSED_TIME=$(( $END_TIME - $START_TIME ))


echo "Backup :: Script End -- $(date +%Y%m%d_%H%M)" >> $log
echo "Elapsed Time ::  $(date -d 00:00:$ELAPSED_TIME +%Hh:%Mm:%Ss) "  >> $log

코드는 몇 가지를 추가합니다.

  • 타임스탬프와 함께 명명된 로그 파일
  • 지정된 로그 폴더
  • find는 로그 폴더에서만 *.txt 파일을 찾습니다.
  • f타입은 파일만 삭제합니다.
  • maxdepth 1은 서브폴더에 들어가지 않도록 합니다.
  • 7일보다 오래된 로그 파일이 삭제됩니다(백업 로그의 경우).
  • 시작/종료 시간을 기록하다
  • 백업 작업의 경과 시간을 계산합니다.

주의: 코드를 테스트하려면 -print -delete 대신 -print를 사용합니다.하지만 신중하게 길을 확인하세요.

메모: 서버 시각이 date - setup timezone/ntp 에서 올바르게 설정되어 있는지 확인합니다.또한 'stat filename'을 사용하여 파일 시간을 확인합니다.

주의: mtime은 mmin으로 치환하여 보다 나은 제어를 할 수 있습니다.mtime은 파일의 타임스탬프를 취득할 때 모든 부분(2일보다 오래된 (+2일은 실제로는 3일을 의미)을 폐기하기 때문입니다.

-mtime +$days  --->  -mmin  +$((60*24*$days))

파일 데이터를 통해 작업할 수 있는 여유가 있다면

find -mmin +14400 -delete

언급URL : https://stackoverflow.com/questions/13489398/delete-files-older-than-10-days-using-shell-script-in-unix

반응형