[부사리]일정기간 데이터 tar묶는 쉘 스크립트

By | 2018년 10월 23일
Print Friendly, PDF & Email

#!/bin/bash
### xxxx_yyyymmdd 형식의 파일이름으로 저장되어 있는 데이터를 15일 단위로 묶는 쉘
# crontab 등록시 /xxx/xxx.sh >> /xxx/xxx_`date +%Y%m%d`.log 2>&1
# 원본이 있는 디렉토리 지정
SOURCEDIR=/xxx
# tar 묶은 후 tar저장 디렉토리 지정
TARFILE=/xxx
cd $SOURCEDIR
# 가장 오래된 파일 검색하여 파일명에서 yyyymm 만 가져옴
TARSTART=`ls –time-style=”+%Y-%m-%d %H:%M:%S” -tr | head -n 1 | cut -c 6-11`
# 가장 오래된 파일 기준 13일 지난 파일을 검색하여 yyyymm 이름만 가져옴
TAREND13=`ls –time-style=”+%Y-%m-%d %H:%M:%S” -tr | head -n 13 | tail -n 1 | cut -c 6-11`
# 가장 오래된 파일 기준 14일 지난 파일을 검색하여 yyyymm 이름만 가져옴
TAREND14=`ls –time-style=”+%Y-%m-%d %H:%M:%S” -tr | head -n 14 | tail -n 1 | cut -c 6-11`
# 가장 오래된 파일 기준 15일 지난 파일을 검색하여 yyyymm 이름만 가져옴
TAREND15=`ls –time-style=”+%Y-%m-%d %H:%M:%S” -tr | head -n 15 | tail -n 1 | cut -c 6-11`
# 가장 오래된 파일 기준 16일 지난 파일을 검색하여 yyyymm 이름만 가져옴
TAREND16=`ls –time-style=”+%Y-%m-%d %H:%M:%S” -tr | head -n 16 | tail -n 1 | cut -c 6-11`
# 가장 오래된 파일 기준 17일 지난 파일을 검색하여 yyyymm 이름만 가져옴
TAREND17=`ls –time-style=”+%Y-%m-%d %H:%M:%S” -tr | head -n 17 | tail -n 1 | cut -c 6-11`
# 가장 오래된 파일 검색하여 전체파일명 가져옴
TARSTART1=`ls –time-style=”+%Y-%m-%d %H:%M:%S” -tr | head -n 1`
# 가장 오래된 파일 기준 13일 지난 파일을 검색하여 전체파일명 가져옴
TARNAME13=`ls –time-style=”+%Y-%m-%d %H:%M:%S” -tr | head -n 13 | tail -n 1`
# 가장 오래된 파일 기준 14일 지난 파일을 검색하여 전체파일명 가져옴
TARNAME14=`ls –time-style=”+%Y-%m-%d %H:%M:%S” -tr | head -n 14 | tail -n 1`
# 가장 오래된 파일 기준 15일 지난 파일을 검색하여 전체파일명 가져옴
TARNAME15=`ls –time-style=”+%Y-%m-%d %H:%M:%S” -tr | head -n 15 | tail -n 1`
# 가장 오래된 파일 기준 16일 지난 파일을 검색하여 전체파일명 가져옴
TARNAME16=`ls –time-style=”+%Y-%m-%d %H:%M:%S” -tr | head -n 16 | tail -n 1`
# tar 묶은 원본데이터를 다른 디렉토리로 이동
SOURCEMV=/xxx
# 1일 파일과 16일의 전체 파일명 동일하면 13일 이하로 에러발생
if [ “$TARSTART1” == “$TARNAME16” ]
then
echo “ERROR : Backup failed! Less than 13 days!”
# 1일 == 17일 yyyymm 동일하면 15일 기간 데이터 압축
elif [ “$TARSTART” == “$TAREND17” ]
then
for i in {1..15}
do
TARRUN=`ls –time-style=”+%Y-%m-%d %H:%M:%S” -tr | head -n $i`
done
#tar 압축 실행
echo “1 == 17 15day Archive Start”
tar -zcvf $TARFILE/$TARSTART1-$TARNAME15.tar.gz $TARRUN
echo “1 == 17 15day Archive Success”
mv $TARRUN $SOURCEMV
# 1일 == 16일 yyyymm 동일하면 16일 기간 데이터 압축
elif [ “$TARSTART” == “$TAREND16” ]
then
for i in {1..16}
do
TARRUN=`ls –time-style=”+%Y-%m-%d %H:%M:%S” -tr | head -n $i`
done
#tar 압축 실행
echo “1 == 16 16day Archive Start”
tar -zcvf $TARFILE/$TARSTART1-$TARNAME15.tar.gz $TARRUN
echo “1 == 16 16day Archive Success”
mv $TARRUN $SOURCEMV
# 1일 == 15일 yyyymm 동일하면 15일 기간 데이터 압축
elif [ “$TARSTART” == “$TAREND15” ]
then
for i in {1..15}
do
TARRUN=`ls –time-style=”+%Y-%m-%d %H:%M:%S” -tr | head -n $i`
done
#tar 압축 실행
echo “1 == 15 15day Archive Start”
tar -zcvf $TARFILE/$TARSTART1-$TARNAME15.tar.gz $TARRUN
echo “1 == 15 15day Archive Success”
mv $TARRUN $SOURCEMV
# 1일 == 14일 yyyymm 동일하면 14일 기간 데이터 압축
elif [ “$TARSTART” == “$TAREND14” ]
then
for i in {1..14}
do
TARRUN=`ls –time-style=”+%Y-%m-%d %H:%M:%S” -tr | head -n $i`
done
#tar 압축 실행
echo “1 == 14 14day Archive Start”
tar -zcvf $TARFILE/$TARSTART1-$TARNAME15.tar.gz $TARRUN
echo “1 == 14 14day Archive Success”
mv $TARRUN $SOURCEMV
# 1일 == 13일 yyyymm 동일하면 13일 기간 데이터 압축
elif [ “$TARSTART” == “$TAREND13” ]
then
for i in {1..13}
do
TARRUN=`ls –time-style=”+%Y-%m-%d %H:%M:%S” -tr | head -n $i`
done
#tar 압축 실행
echo “1 == 13 13day Archive Start”
tar -zcvf $TARFILE/$TARSTART1-$TARNAME15.tar.gz $TARRUN
echo “1 == 13 13day Archive Success”
mv $TARRUN $SOURCEMV
else
echo “ERROR : Backup failed! Less than 13 days!”
fi

관련 글

댓글 남기기(글만 입력하셔도되요. 이메일,이름,웹사이트 미입력 가능)

This site uses Akismet to reduce spam. Learn how your comment data is processed.