AWS CLI 설치합니다.
sudo apt-get install awscli
AWS configure 를 설정하여 서버 내 명령어로 S3 로 접근할 수 있도록 합니다.
(IAM 에서 S3 로 접근할 수 있는 유저를 만든 뒤, 그 유저의 AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY 를 입력하여 세팅합니다.)
aws configure

(저는 /var/www/script 내에 생성하였습니다.)
#!/bin/bash
# error log
exec 2>> /var/www/script/pm2-log-backup.log
# script start datetime
echo "$(date): Script started" >> /var/www/script/pm2-log-backup.log
LOG_DIR="/root/.pm2/logs"
BUCKET_NAME="zebipay"
CURRENT_DATETIME=$(date +"%Y-%m-%d_%H:%M:%S")
INSTANCE_ID=$(curl -s http://169.254.169.254/latest/meta-data/instance-id)
FOLDER_NAME="$CURRENT_DATETIME"_"$INSTANCE_ID"
for file in $LOG_DIR/*; do
if [[ -f "$file" ]]; then
aws s3 cp "$file" "s3://$BUCKET_NAME/pm2-log-backup/$FOLDER_NAME/"
if [ $? -eq 0 ]; then
rm "$file"
fi
fi
done
# script end datetime
echo "$(date): Script executed" >> /var/www/script/pm2-log-backup.log
최상단에 #!/bin/bash 를 추가하여 bash 로 실행되도록 작성하였고, bash 로 실행되는 문법으로 작성하였습니다.
LOG_DIR 은 S3 로 백업하고 싶은 파일들이 있는 경로이고
BUCKET_NAME 은 S3 버킷 이름입니다.
CURRENT_DATETIME 은 현재 날짜시간으로, 버킷 내에 현재 시간을 이름으로 하는 폴더를 생성하도록 하였습니다.
에러 발생, 스크립트 시작지점, 스크립트 끝나는 지점을 pm2-log-backup.log 에 기록되도록 하여 script 가 실행되는 로그를 남겼습니다.
sudo crontab -e
0 5 * * * bash /var/www/script/pm2-log-backup.sh

