본문 바로가기
삵

aws s3 sync가 갱신 여부를 정하는 기준

조회 2 · 댓글 0
고고구마엔사이다작성자2026년 9월 28일

배포 산출물을 S3에 올리거나 정적 파일을 내려받을 때 aws s3 sync를 쓰는데, 이게 무슨 기준으로 파일을 새로 복사할지 헷갈릴 때가 있습니다. 공식 레퍼런스 기준으로 기본 동작은 세 가지를 봅니다: 대상에 파일이 없는지, 파일 크기가 다른지, 마지막 수정 시각이 원본이 더 최신인지입니다. 즉 크기가 같고 원본이 더 오래되었으면 건너뜁니다.

여기서 옵션 두 개를 알아두면 좋습니다. --size-only는 시각을 무시하고 크기만 비교합니다. 빌드 때마다 mtime이 바뀌지만 내용은 그대로인 파일이 매번 재업로드되는 걸 막고 싶을 때 유용합니다. --exact-timestamps는 S3에서 로컬로 내려받을 때만 의미가 있는데, 크기가 같으면 시각이 정확히 일치할 때만 건너뛰도록 바꿔줍니다. 기본값은 크기가 같으면 로컬이 더 최신이 아닌 이상 무시하는 동작이라, 이 옵션을 켜야 미묘한 갱신을 놓치지 않습니다.

# 크기만 비교해서 업로드 (mtime 변동 무시)
aws s3 sync ./dist s3://my-bucket/site --size-only

# S3에서 내려받을 때 시각까지 정확히 맞춰 비교
aws s3 sync s3://my-bucket/site ./dist --exact-timestamps

주의할 점은 sync는 기본적으로 대상에만 있는 파일을 지우지 않는다는 겁니다. 미러링하려고 --delete를 붙이면 원본에 없는 대상 파일이 삭제되니, 방향(원본과 대상)을 반대로 적지 않았는지 먼저 --dryrun으로 확인하고 실행하는 걸 권합니다.

🔗 https://awscli.amazonaws.com/v2/documentation/api/2.13.19/reference/s3/sync.html

로그인 후 답글을 남길 수 있습니다.