AWS Log EC2 to S3 .sh (이전 30일 치)
기존에 있는 로그 30일치 업로드 시
#!/bin/sh
for day in {30..1}; do
BASE_DT=$(date -d "$day days ago" +%Y-%m-%d)
SOURCE_DIR=/app/server/was-tomcat-9.0.83/logs/
S3_BUCKET=hm-shopby-logs
S3_PATH=s3://$S3_BUCKET/was-access-log/year=${BASE_DT:0:4}/month=${BASE_DT:5:2}/day=${BASE_DT:8:2}
UPLOAD_LOG=/app/aws-cli/util/log/was-access-log.$BASE_DT.log
INST_ID=$(ec2-metadata -i | awk -F' ' '{print $2}')
S3_FILE_LIST=()
S3_LS_RESULT=$(/app/aws-cli/bin/aws s3 ls $S3_PATH/$INST_ID --profile happy | awk -F' ' '{print $4}' | awk -F'.' '{print "was-access-log."$2".log"}')
for s3 in $S3_LS_RESULT; do
S3_FILE_LIST+=($s3)
done
cd $SOURCE_DIR
S3_LS_RESULT=$(ls was-access-log.$BASE_DT.log*)
echo "[START]$(date '+%Y-%m-%d %H:%M:%S')" >> $UPLOAD_LOG
for i in $S3_LS_RESULT; do
IS_EQUAL=0
for s3 in "${S3_FILE_LIST[@]}"; do
if [[ "$i" == "$s3" ]]; then
IS_EQUAL=1
break
fi
done
if [[ $IS_EQUAL == 1 ]]; then
continue
fi
NEW_FILE=$INST_ID'-'$i
/usr/bin/cp $i $NEW_FILE
/usr/bin/tar cvzf ${NEW_FILE%.*}.tar.gz $NEW_FILE
/app/aws-cli/bin/aws s3 cp ${NEW_FILE%.*}.tar.gz $S3_PATH/${NEW_FILE%.*}.tar.gz --profile happy 2>> $UPLOAD_LOG
rm -rf $NEW_FILE
rm -rf ${NEW_FILE%.*}.tar.gz
done
echo "[FINISH]$(date '+%Y-%m-%d %H:%M:%S')" >> $UPLOAD_LOG
done