반응형
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 +10
10일 이상 경과한-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
반응형
'source' 카테고리의 다른 글
실행 중인 cmdlet의 현재 디렉토리를 가져오는 방법 (0) | 2023.04.17 |
---|---|
bash에서 바이너리로 파일을 표시하는 방법 (0) | 2023.04.17 |
데이터베이스 간에 데이터 전송 (0) | 2023.04.17 |
MySQL의 백틱과 따옴표는 어디에 사용합니까? (0) | 2023.04.17 |
함수 파라미터에 아스타리스크가 표시됩니까? (0) | 2023.04.17 |