Files
caliverse_doc/04. 서버설정/Shell Script/s3upload.sh
2025-05-01 07:27:54 +09:00

52 lines
1.7 KiB
Bash

#!/bin/bash
# 로컬 경로 지정
LOCAL_DIR="/home/saanghaa/aws/s3sync"
# S3 버킷 및 경로 지정
S3_BUCKET="metaverse-client-launch"
S3_DIR="s3sync"
# 디렉토리의 모든 파일을 찾습니다.
FILES=$(find ${LOCAL_DIR} -type f)
# 전송된 용량 및 전송 시간의 합계를 초기화합니다.
TOTAL_SIZE=0
TOTAL_TIME=0
# 각 파일을 개별적으로 전송합니다.
for FILE in $FILES
do
# 전송 시작 시간을 기록합니다.
START_TIME=$(date +%s)
# AWS CLI를 사용하여 파일을 S3로 전송합니다.
aws s3 cp ${FILE} s3://${S3_BUCKET}/${S3_DIR}/$(basename ${FILE})
# 전송 종료 시간을 기록합니다.
END_TIME=$(date +%s)
# 전송 시간을 계산합니다.
ELAPSED_TIME=$(($END_TIME - $START_TIME))
# 전송된 파일의 용량을 계산합니다 (바이트).
FILE_SIZE_BYTES=$(ls -al ${FILE} | awk '{print $5}')
# 파일 크기를 메가바이트로 변환합니다.
FILE_SIZE_MB=$(echo "scale=2; ${FILE_SIZE_BYTES}/1024/1024" | bc)
# 파일 이름, 전송 시간, 그리고 파일 크기를 출력합니다.
echo "파일 이름: $(basename ${FILE}), 파일 크기: ${FILE_SIZE_MB} MB, 전송 시간: ${ELAPSED_TIME}"
# 전송된 용량 및 전송 시간의 합계를 업데이트합니다.
TOTAL_SIZE=$(echo "scale=2; ${TOTAL_SIZE} + ${FILE_SIZE_MB}" | bc)
TOTAL_TIME=$((TOTAL_TIME + ELAPSED_TIME))
# 초당 전송 속도 계산
transfer_rate_per_second=$(echo "scale=2; $TOTAL_SIZE / $TOTAL_TIME * 1024" | bc)
done
# 전체 전송된 용량과 소요된 시간을 출력합니다.
echo "전체 전송된 용량: ${TOTAL_SIZE} MB, 전체 소요된 시간: ${TOTAL_TIME}"
echo "초당 전송 속도: $transfer_rate_per_second KB/s"