파일 크기가 올바른지 확인하는 Bash 스크립트

파일 크기가 올바른지 확인하는 Bash 스크립트

나는 이 bash 스크립트 일정을 만들고 디렉토리에서 특정 크기 이하의 특정 유형의 파일(".gz"로 끝나는 파일)(마지막 수정: 24시간 전)을 감지하면 이메일을 보내려고 합니다. 현재 가지고 있습니다. 내 전체 컴퓨터에서 실행 중입니다. (저는 10KB로 설정했습니다.)

어쨌든 그냥 이메일을 보냅니다. 파일이 임계값 미만임을 실제로 감지한 경우에만 이메일을 보내길 원합니다. 누구든지 확인하고 내가 어디에서 문제를 겪고 있는지 알려 주면 좋을 것입니다! 이것은 나의 첫 번째 진지한 스크립트 중 하나이므로 어휘가 조금 더 적습니다!

1) 이 스크립트는 디렉토리에서 ".gz"로 끝나고 지난 24시간 동안 수정된 모든 파일을 찾습니다.

2) 이러한 파일을 검사하여 크기가 특정 임계값(예: 10KB)을 초과하는지 확인합니다.

3) 그럴 경우 아무런 조치를 취하지 않으나, 기준치 미만일 경우 위 이메일 주소로 이메일이 발송됩니다.

#!/bin/bash
for file in /*; do
stat $file
    FAILURE= find . -name "*.gz" -size -10k -mtime -1 -printf 'Failure %p\n'
done
if $FAILURE
then
    echo "The backup test has failed!" | mail -s "BACKUP FAILURE" [email protected]
fi

답변1

다음은 약간 수정된 스크립트입니다.

#!/bin/bash
if files=$(find . -name "*.gz" -size -10k -mtime -1 -print) ; then
   echo "The backup test has failed!\n$files" | mail -s "BACKUP FAILURE"   [email protected]
fi

암시적 루프가 있으므로 for 루프에 넣을 필요는 없습니다.찾다주문하다.

아직 이것을 이해하지 못했다면 사용할 수 있는 디버깅 기술 중 하나는 위의 명령 중 일부를 실행하여 테스트하는 것입니다.

하지만 그것도 하나 있어요배쉬 디버거.

답변2

이 폴더 /usr/test에 작은 gz 파일이 있는지 확인하고 싶다면 다음이 도움이 될 것입니다. 이 경로에 있는 모든 gz 파일의 로그 파일을 보내고 목록을 이메일로 보냅니다. 나중에 사용하기 위해 이 목록을 사용할 수 있습니다.

내 스크립트는 다음과 같습니다

#!/bin/bash
size_checker ()
{
cd /usr/test
ls *.gz > gzfiles
for FILE in `cat gzfiles`
 do
  SIZE=`ls -la $FILE | awk '{print $5}'`
   if [ "$SIZE" -lt 10241 ]
    then
     LAST_MODIFIED=`ls -la $FILE | awk '{print $6,$7}'` 
    echo "${FILE} ${LAST_MODIFIED}" >> log
   if
done   
uuencode log log.txt | mailx -s "Log of small gz files" [email protected]
}
size_checker
exit 0

수정 시간을 추가하면 마지막 수정 날짜와 함께 10kb 이하의 모든 gz 파일을 받게 됩니다.

관련 정보