소개
s3put은 Surma가 개발한 Go 기반의 명령줄 인터페이스(CLI) 도구로, Amazon S3 및 Google Cloud Storage(GCS)와 같은 클라우드 스토리지에 파일을 병렬로 업로드하거나 다운로드하는 데 특화되어 있습니다. 이 프로그램은 대용량 파일 전송 시 속도 저하 문제를 해결하기 위해 다중 코루틴을 활용한 동시 업로드 기능을 제공합니다. 사용자는 간단한 명령어로 로컬 디렉터리의 내용을 버킷에 푸시하거나, 버킷의 내용을 로컬로 가져올 수 있습니다. 오픈소스 라이선스(MIT)로 배포되며, GitHub에서 소스 코드와 릴리스 바이너리를 확인할 수 있습니다.
상세정보
프로그램 소개/무엇인지
s3put은 Amazon S3와 Google Cloud Storage(GCS)에 특화된 명령줄 인터페이스(CLI) 도구입니다. Go 언어로 작성되어 있으며, Surma에 의해 개발 및 유지보수되고 있습니다. 이 도구는 대용량 데이터 전송 시 발생할 수 있는 병목 현상을 해결하기 위해 다중 코루틴 기반의 병렬 업로드 기능을 핵심으로 제공합니다.
주요 기능병렬 파일 업로드 및 다운로드
s3put은 -c 또는 –concurrency 옵션을 통해 동시에 실행할 코루틴 수를 지정할 수 있으며, 기본값은 10입니다. 이를 통해 여러 파일을 동시에 S3 또는 GCS 버킷에 업로드하거나, 버킷에서 로컬 디스크로 다운로드할 수 있습니다. 이 기능은 대용량 파일이나 numerosi 파일을 처리할 때 전송 시간을 크게 단축시킵니다.
접근 키 기반 인증
AWS S3 사용 시 –access-key 및 –secret-key 옵션을 통해 AWS 액세스 키 ID와 시크릿 액세스 키를 제공해야 합니다. 마찬가지로 GCS 사용 시에도 해당 인증 정보를 입력하여 구글 클라우드 스토리지에 접근할 수 있습니다. 이 인증 방식은 표준 클라우드 제공업체의 보안 프로토콜을 따릅니다.
버킷 및 프리픽스 지정
–bucket 옵션을 통해 대상 S3 또는 GCS 버킷의 URL을 지정할 수 있으며 (예: s3://s3.amazonaws.com/bucket-name 또는 gcs://storage.googleapis.com/bucket-name), –prefix 옵션을 통해 원격 저장소 내에 적용할 경로 프리픽스를 설정할 수 있습니다. 이를 통해 특정 폴더 구조 내에서 파일을 조직적으로 관리할 수 있습니다.
캐시 컨트롤 헤더 설정
–cache-control 옵션을 사용하여 업로드되는 객체에 Cache-Control HTTP 헤더를 설정할 수 있습니다. 이는 CDN 효율성이나 브라우저 캐싱 동작을 제어해야 하는 웹 애플리케이션 시나리오에서 유용합니다.
다운로드·설치 방법
s3put의 바이너리는 GitHub 저장소의 [릴리스 섹션](https://github.com/surma/s3put/releases)에서 다운로드할 수 있습니다. Windows 사용자는 해당 릴리스 페이지에서 Windows용 실행 파일을 받아 압축을 풀고, 시스템 경로에 추가하거나 원하는 폴더에 배치하여 사용할 수 있습니다. 별도의 설치 프로그램은 제공되지 않으며, 직접 실행 가능한 바이너리 형태로 배포됩니다.
기본 사용법/명령어
s3put의 기본 사용 형식은 다음과 같습니다:
Usage: s3put [global options]
전역 옵션으로는 -c/–concurrency (코루틴 수, 기본 10), –continue (오류 발생 시 계속 진행), -p/–prefix (원격 저장소에 적용할 경로 프리픽스), –cache-control (Cache-Control 헤더 설정), -k/–access-key (AWS 액세스 키 ID), -s/–secret-key (AWS 시크릿 액세스 키), -b/–bucket (대상 버킷 URL), -h/–help (도움말 표시)가 있습니다.
예를 들어, GCS 버킷에 현재 디렉터리의 모든 파일을 15개의 코루틴으로 업로드하려면 다음 명령을 사용합니다:
$ s3put -c 15 -k GOOG2MLXXXXXXXXX -s XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -b gcs://storage.googleapis.com/some-bucket put .
반대로, S3 버킷에서 현재 디렉터리로 파일을 10개의 코루틴으로 다운로드하려면:
$ s3put -c 10 -k XXXXXXXXXXXXXXXX -s XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -b s3://s3.amazonaws.com/some-bucket get .
이때 버킷 URL은 s3:// 또는 gcs:// 스키마를 반드시 포함해야 하며, 액세스 키와 시크릿 키는 실제 발급받은 값으로 대체해야 합니다.
이런 경우에 유용합니다
대용량 데이터 세트나 수많은 파일을 클라우드 스토리지로 마이그레이션해야 하는 개발자나 시스템 관리자에게 유용합니다. 예를 들어, 로컬 백업 파일을 S3로 이동하거나, GCS에 저장된 데이터 세트를 로컬 머신으로 분석 목적으로 가져올 때 병렬 전송 기능을 통해 시간을 절약할 수 있습니다. 특히 자동화 스크립트나 CI/CD 파이프라인 내에서 클라우드 스토리지와의 데이터 교환이 필요한 경우에 효과적입니다.
시스템 요구사항
별도의 시스템 요구사항이 등록되지 않았습니다.


