이슈 상황

DB의 특정 테이블을 백업하는 스크립트를 cron을 통해 수행하는데 종종 백업파일이 생성되지 않는 이슈가 발생

 

원인

원인은 모르지만 우선 백업을 받아야 하기때문에 유사한 재현 스크립트를 통해 테스트 후 해결책을 적용

 

스크립트 내용

[root@pyhost ~]# cat ctest.sh

#/bin/bash

DATE=$(sudo date -d 'yesterday' +%Y-%m-%d"_"%T)

TARGETFILE="/root/test_516_$DATE.csv"

echo -e "Files to create: $TARGETFILE\n"

filecreate () {
RNUM=$(shuf -i 1-10 -n 1);
if [ $RNUM == 1 ]; then
    touch $TARGETFILE
    echo a >> $TARGETFILE
else
    touch $TARGETFILE
fi
}

filecreate;
 
if [ ! -s $TARGETFILE ]; then
NUM=0
    while [ $NUM -lt 10 ];
        do filecreate;
        if [ ! -s $TARGETFILE ]; then
            sleep 2
        else
            echo -e "$TARGETFILE file was \033[1;32msuccessfully\e[21\033[0m created in $NUM times by retrial."
            exit 0
        fi
        NUM=$((NUM+1));
	echo -e "\e[34m\e[1m$NUM times tried...\e[21\033[0m"
    done
    echo -e "\033[1;31m\e[5mFailed to create file greater than size 0.\e[21\033[0m"
fi

exit 0

실행 방법 : /root 디렉토리에 ctest.sh 를 위치한 후 실행 시키면 됨.

 

스크립트 설명

1) 1 ~ 10 사이의 랜덤 수를 발생
2) 랜덤 수 중 1일 때만 파일사이즈가 0 이상의 파일을 생성
3) 생성된 파일 사이즈가 0이 아닐때까지 2초 간격으로 10회 동안 반복해서 실행

script for file create

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다