본문 바로가기

Storage&CDN/S3

s3 sync shell

S3 cli 쓰레드 늘리는 설정(10 -> 50~80)

aws configure set default.s3.max_concurrent_requests 20 (default 10)

aws configure set default.s3.max_queue_size 10000

 

4 core / 16 Mem 기준 1 core에서 90% 이상 sync 명령어가 점유

평균 50~80MB/s Throughput 까지 성능이 나옴, 하루 5~7TB 업로드 가능

Path 별로 병렬처리 시 더 나은 성능을 뽑을 수는 있음(bandwidth 고려)

 

#!/bin/bash
while true
do
        psCount=$(ps -ef |grep /usr/local/bin/aws)
        if [ "$psCount" = 2 ]
        then
                echo "in progress"
        else
                sync=$(aws s3 sync /root/s3_migration/ s3://test-lee/)
        fi
done

 

 

S3 Object Count

aws s3 ls s3://s3-cloudtrail-output/ --recursive --summarize | grep "Total Objects:"

 

 

CentOS File Count

find . -type f |wc -l

 

Count Listing

#!/bin/bash
echo 'start'
s_2019_o=$(aws s3 ls s3://newsvod.s3.kbs.co.kr/vol1/mp4/2019/ --recursive --summarize | grep "Total Objects:")
l_2019=$(find /vol1/mp4/2019/ -type f |wc -l)
s_2019=$(echo $s_2019_o |awk '{print $3}')
echo "l_2019: $l_2019"
echo "s_2019: $s_2019"
echo "d_2019: `expr $l_2019 - $s_2019`"

 

s3 sync의 경우 실행할때마다 파일 리스팅이 되어, root 경로 등 최상위 path에서 실행시키면 동기화 시간이 오래 걸림.

따라서 마지막 동기화 시간을 줄이기 위해서는 사용하는 최소 path 기준으로 나눠서 cli를 사용하면 훨씬 빠르다.