S3-호환 CLI
익숙한 S3 명령어를 통해 파일과 디렉터리를 관리할 수 있는 명령줄 도구로, AWS S3 사용 경험이 있는 사용자들이 Koneksi 스토리지를 보다 쉽게 활용할 수 있도록 도와줍니다.
완전한 사용 방법 가이드
앱 기능
S3 호환 명령:
ls,cp,mv,rm,mb,rb와 같은 익숙한 명령을 사용하세요.크로스 플랫폼 지원: Linux, macOS, Windows에서 작동합니다.
재귀 작업: 재귀적 디렉터리 업로드/다운로드 지원
진행률 표시: 파일 전송 중 시각적 피드백 제공
재시도 로직: 실패한 작업 자동 재시도
유연한 구성: 구성 파일 및 환경 변수 지원
작동 방식
CLI는 S3 개념을 Koneksi의 스토리지 모델로 변환합니다.
버킷 → 연결 디렉터리
객체 → 연결 파일
S3 URI → 연결 경로(예:
s3://bucket/key→ 디렉터리/파일)
설치
전제 조건
Go 1.23 이상(소스 빌드용)
유효한 Koneksi API 자격 증명(클라이언트 ID 및 클라이언트 비밀번호)
옵션 1: 사전 빌드된 바이너리 다운로드
릴리스 페이지를 방문하세요여기.
귀하의 플랫폼에 적합한 바이너리를 다운로드하세요:
Linux용 koneksi-s3-linux-amd64
macOS(Intel)용 koneksi-s3-darwin-amd64
macOS(Apple Silicon)용 koneksi-s3-darwin-arm64
Windows용 koneksi-s3-windows-amd64.exe
바이너리를 실행 가능하게 만듭니다(Linux/macOS):
chmod +x koneksi-s3-*PATH에 있는 위치로 이동합니다.
sudo mv koneksi-s3-* /usr/local/bin/koneksi-s3옵션 2: 소스에서 빌드
저장소를 복제합니다.
git clone https://github.com/your-org/koneksi-s3-cli-standalone.git
cd koneksi-s3-cli-standalone바이너리를 빌드합니다.
make build시스템 전체에 설치:
sudo make install옵션 3: 플랫폼별 빌드
특정 플랫폼에 맞춰 빌드:
# Linux
make build-linux
# macOS (Intel)
make build-darwin-amd64
# macOS (Apple Silicon)
make build-darwin-arm64
# Windows
make build-windows
# All platforms
make build-all설정 또는 구성
구성 방법
CLI는 세 가지 구성 방법을 지원합니다(우선순위 순):
환경 변수(가장 높은 우선순위)
구성 파일
명령줄 플래그(특정 옵션용)
구성을 설정하는 방법
방법 1: 구성 파일
~/.koneksi-s3.yaml에 구성 파일을 만듭니다.
# 필수 자격 증명
client_id: "your-client-id"
client_secret: "your-client-secret"
# 선택적 설정
directory_id: "default-directory-id" # Default directory for operations
timeout: 30 # Request timeout in seconds
retry_count: 3 # Number of retries for failed requests
retry_wait_time: 1 # Wait time between retries in seconds
retry_max_wait_time: 30 # Maximum wait time between retries방법 2: 환경 변수
KONEKSI_ 접두사로 환경 변수를 설정합니다.
export KONEKSI_CLIENT_ID="your-client-id"
export KONEKSI_CLIENT_SECRET="your-client-secret"
export KONEKSI_DIRECTORY_ID="default-directory-id"
export KONEKSI_TIMEOUT=30
export KONEKSI_RETRY_COUNT=3방식 3: 혼합 구성 방식
구성 방법을 혼합하여 사용할 수 있습니다. 예를 들어, 자격 증명은 구성 파일에 저장하되, 디렉터리 ID는 환경을 통해 재정의할 수 있습니다.
# ~/.koneksi-s3.yaml contains client_id and client_secret
export KONEKSI_DIRECTORY_ID="project-specific-directory"구성 확인 중
버킷을 나열하여 구성을 테스트하세요.
koneksi-s3 ls올바르게 구성한 경우 디렉토리 목록이 표시됩니다.
기본 사용법
S3 URI 형식 이해
CLI는 S3 스타일 URI를 사용하여 원격 위치를 참조합니다.
s3://bucket-name/- 버킷(디렉토리)을 참조합니다.s3://bucket-name/path/to/object- 객체(파일)를 참조합니다.
필수적인명령
버킷(디렉토리) 목록 나열
# 모든 버킷 나열
koneksi-s3 ls
# 출력 예:
# 2024-01-15 10:30:00 my-documents
# 2024-01-15 11:45:00 project-files
# 2024-01-15 12:00:00 backups버킷에 있는 객체 나열
# 버킷에 있는 객체 나열
koneksi-s3 ls s3://my-documents/
# 접두사가 있는 객체 나열
koneksi-s3 ls s3://my-documents/reports/
# 출력 예:
# 2024-01-15 10:30:00 1024 file1.txt
# 2024-01-15 11:00:00 2048 file2.pdf
# 2024-01-15 11:30:00 512 reports/monthly.xlsx파일 업로드
# 단일 파일 업로드
koneksi-s3 cp local-file.txt s3://my-documents/remote-file.txt
# 진행률 표시와 함께 업로드
koneksi-s3 cp large-file.zip s3://backups/
# 특정 경로에 업로드
koneksi-s3 cp report.pdf s3://my-documents/reports/2024/january.pdf파일 다운로드
# 파일 다운로드
koneksi-s3 cp s3://my-documents/remote-file.txt local-file.txt
# 현재 디렉토리에 다운로드(원래 파일 이름 유지)
koneksi-s3 cp s3://my-documents/report.pdf .
# 새로운 이름으로 다운로드
koneksi-s3 cp s3://my-documents/old-name.txt new-name.txt버킷 만들기 및 제거
# 새 버킷 만들기
koneksi-s3 mb s3://new-bucket/
# 빈 버킷 제거
koneksi-s3 rb s3://old-bucket/
# 비어 있지 않은 버킷을 강제로 제거합니다(신중하게 사용하세요!)
koneksi-s3 rb --force s3://old-bucket/명령 참조
ls - 목록 명령
ls - 목록 명령버킷이나 버킷에 있는 객체를 나열합니다.
통사론:
koneksi-s3 ls [s3://bucket[/prefix]]예시들
# 모든 버킷 나열
koneksi-s3 ls
# 버킷의 루트 수준 나열
koneksi-s3 ls s3://my-bucket/
# 접두사가 있는 목록
koneksi-s3 ls s3://my-bucket/documents/2024/
# 재귀적 목록(지원되는 경우)
koneksi-s3 ls -r s3://my-bucket/cp - 복사 명령
cp - 복사 명령로컬 파일 시스템과 S3 간, 또는 S3 위치 간에 파일을 복사합니다.
통사론:
koneksi-s3 cp [options] <source> <destination>옵션:
-r, --recursive: 디렉터리를 재귀적으로 복사합니다.--dry-run: 실제로 복사하지 않고 복사될 내용을 표시합니다.
예시들
# 파일 업로드
koneksi-s3 cp file.txt s3://bucket/file.txt
# 파일 다운로드
koneksi-s3 cp s3://bucket/file.txt file.txt
# S3 위치 간 복사
koneksi-s3 cp s3://bucket1/file.txt s3://bucket2/file.txt
# 재귀적 업로드
koneksi-s3 cp -r local-folder/ s3://bucket/remote-folder/
# 재귀적 다운로드
koneksi-s3 cp -r s3://bucket/remote-folder/ local-folder/
# 작업을 미리 보기 위한 연습 실행
koneksi-s3 cp -r --dry-run local-folder/ s3://bucket/mv - 이동 명령
mv - 이동 명령로컬 파일 시스템과 S3 간, 또는 S3 내에서 파일을 이동하거나 이름을 바꿉니다.
통사론:
koneksi-s3 mv <source> <destination>예시들
# 로컬 파일을 S3로 이동
koneksi-s3 mv file.txt s3://bucket/file.txt
# S3에서 로컬로 이동
koneksi-s3 mv s3://bucket/file.txt file.txt
# S3 내에서 이름 바꾸기
koneksi-s3 mv s3://bucket/old-name.txt s3://bucket/new-name.txt
# 버킷 간 이동
koneksi-s3 mv s3://bucket1/file.txt s3://bucket2/file.txtrm - 명령 제거
rm - 명령 제거S3에서 객체를 제거합니다.
통사론:
koneksi-s3 rm [options] s3://bucket/key옵션:
-r, --recursive: 객체를 재귀적으로 제거합니다.--dry-run: 실제로 제거하지 않고 제거될 항목을 표시합니다.
예시들
# 단일 객체 제거
koneksi-s3 rm s3://bucket/file.txt
# 확인 후 제거
koneksi-s3 rm s3://bucket/important-file.txt
# 재귀적으로 제거
koneksi-s3 rm -r s3://bucket/folder/
# 드라이런
koneksi-s3 rm -r --dry-run s3://bucket/folder/mb - 버킷 명령 만들기
mb - 버킷 명령 만들기새로운 버킷(디렉토리)을 만듭니다.
통사론:
koneksi-s3 mb s3://bucket-name/예시들
# 버킷 만들기
koneksi-s3 mb s3://my-new-bucket/
# 특정 이름으로 생성
koneksi-s3 mb s3://project-2024-data/rb - 버킷 명령 제거
rb - 버킷 명령 제거빈 양동이를 꺼내세요.
통사론:
koneksi-s3 rb [options] s3://bucket-name/옵션:
--force:비어 있지 않은 버킷을 제거합니다.
예시들:
# 빈 버킷 제거
koneksi-s3 rb s3://old-bucket/
# 비어 있지 않은 버킷 강제 제거
koneksi-s3 rb --force s3://old-bucket/고급 사용법
대용량 파일 작업
대용량 파일 업로드의 경우 CLI는 다음을 자동으로 처리합니다.
전송 중 진행률 표시
실패 시 자동 재시도
메모리 사용량을 최소화하는 효율적인 스트리밍
# 진행 상황을 담은 대용량 파일 업로드
koneksi-s3 cp large-dataset.zip s3://backups/datasets/
# CLI는 다음을 표시합니다:
# Uploading large-dataset.zip to s3://backups/datasets/
# Progress: [##########----------] 50% (512MB/1GB)일괄 작업
여러 파일 업로드
# 모든 .txt 파일을 업로드하세요
for file in *.txt; do
koneksi-s3 cp "$file" "s3://bucket/texts/$file"
done
# 디렉토리 구조 업로드
koneksi-s3 cp -r ./project/ s3://bucket/projects/2024/여러 파일 다운로드
# 접두사가 포함된 모든 파일 다운로드
koneksi-s3 cp -r s3://bucket/reports/2024/ ./local-reports/
# 특정 패턴 다운로드(셸 사용)
for month in jan feb mar; do
koneksi-s3 cp "s3://bucket/reports/2024/$month-report.pdf" .
done스크립팅 및 자동화
백업 스크립트 예
#!/bin/bash
# backup-to-koneksi.sh
BACKUP_DATE=$(date +%Y%m%d)
BACKUP_BUCKET="s3://backups"
# 일일 백업 버킷 만들기
koneksi-s3 mb "$BACKUP_BUCKET/daily-$BACKUP_DATE/"
# 중요한 디렉터리 업로드
for dir in documents projects config; do
echo "Backing up $dir..."
koneksi-s3 cp -r "$HOME/$dir/" "$BACKUP_BUCKET/daily-$BACKUP_DATE/$dir/"
done
echo "Backup completed for $BACKUP_DATE"동기화 스크립트 예제
#!/bin/bash
# sync-projects.sh
# 새 파일이나 수정된 파일을 업로드하세요
find ./projects -type f -mtime -1 | while read file; do
s3_path="s3://project-bucket/${file#./}"
echo "Uploading $file to $s3_path"
koneksi-s3 cp "$file" "$s3_path"
done다양한 디렉토리 ID로 작업하기
특정 작업에 대한 기본 디렉토리 ID를 재정의합니다.
# 세션에 대한 디렉토리 ID 설정
export KONEKSI_DIRECTORY_ID="project-specific-id"
# 특정 디렉토리에 업로드
koneksi-s3 cp file.txt s3://bucket/file.txt
# 기본값으로 재설정
unset KONEKSI_DIRECTORY_ID성능 최적화
병렬 업로드
# GNU Parallel을 사용하여 병렬로 파일 업로드
find . -name "*.jpg" | parallel -j 4 koneksi-s3 cp {} s3://images/{}
# 또는 xargs를 사용하여
find . -name "*.pdf" | xargs -P 4 -I {} koneksi-s3 cp {} s3://documents/{}효율적인 재귀 연산
# 더 나은 성능을 위해 재귀 플래그를 사용하세요
koneksi-s3 cp -r large-directory/ s3://bucket/
# 개별 파일 업로드 대신
# 이렇게 하지 마세요 - 속도가 느려집니다:
find large-directory -type f -exec koneksi-s3 cp {} s3://bucket/{} \;문제 해결 가이드
인증 오류
문제: "인증 실패" 또는 "잘못된 자격 증명"
솔루션:
자격 증명이 올바르게 설정되었는지 확인하세요.
# 환경 변수 확인
echo $KONEKSI_CLIENT_ID
echo $KONEKSI_CLIENT_SECRET
# 구성 파일 확인
cat ~/.koneksi-s3.yaml자격 증명에 공백이 없는지 확인하세요.
Koneksi 시스템에서 자격 증명이 활성화되어 있는지 확인하세요.
연결 시간 초과
문제: "요청 시간 초과" 오류
솔루션:
시간 초과 설정을 늘리세요:
export KONEKSI_TIMEOUT=60 # 60 seconds네트워크 연결을 확인하십시오.
# 테스트 API 엔드포인트
curl -I https://api.koneksi.com/health불안정한 연결에 재시도 구성을 사용하세요
파일 업로드 실패
문제: 대용량 파일 업로드 실패
솔루션:
대용량 파일의 시간 초과를 늘리세요:
export KONEKSI_TIMEOUT=300 # 5 minutes임시 파일의 사용 가능한 디스크 공간을 확인하세요.
파일 권한 확인
디렉토리/버킷을 찾을 수 없습니다
문제: "버킷을 찾을 수 없음" 오류
솔루션:
사용 가능한 버킷을 나열하세요.
koneksi-s3 ls버킷 이름 철자를 확인하세요.
디렉토리 ID가 올바른지 확인하세요:
echo $KONEKSI_DIRECTORY_ID디버그 모드
문제 해결을 위해 자세한 출력을 활성화하세요.
# 디버그 환경 변수 설정(지원되는 경우)
export KONEKSI_DEBUG=true
# 자세한 출력으로 명령 실행
koneksi-s3 -v cp file.txt s3://bucket/도움 받기
1. 기본 제공 도움말:
# 일반 도움말
koneksi-s3 --help
# 명령별 도움말
koneksi-s3 cp --help
koneksi-s3 ls --help2. 버전 정보:
koneksi-s3 --version빠른 참조
필수 명령 요약
# 모든 버킷 나열
koneksi-s3 ls
# 버킷 콘텐츠 나열
koneksi-s3 ls s3://bucket/
# 파일 업로드
koneksi-s3 cp file.txt s3://bucket/file.txt
# 파일 다운로드
koneksi-s3 cp s3://bucket/file.txt file.txt
# 디렉토리 업로드
koneksi-s3 cp -r folder/ s3://bucket/folder/
# 파일 이동/이름 바꾸기
koneksi-s3 mv s3://bucket/old.txt s3://bucket/new.txt
# 파일 삭제
koneksi-s3 rm s3://bucket/file.txt
# 버킷 만들기
koneksi-s3 mb s3://new-bucket/
# 버킷 삭제
koneksi-s3 rb s3://bucket/구성 빠른 설정
# 구성 파일 생성
cat > ~/.koneksi-s3.yaml << EOF
client_id: "your-client-id"
client_secret: "your-client-secret"
directory_id: "your-directory-id"
timeout: 30
retry_count: 3
EOF
# 또는 환경 변수를 사용하십시오.
export KONEKSI_CLIENT_ID="your-client-id"
export KONEKSI_CLIENT_SECRET="your-client-secret"일반적인 패턴
# 백업 패턴
koneksi-s3 cp -r /important/data/ s3://backups/$(date +%Y%m%d)/
# 아카이브 패턴
tar czf - /path/to/files | koneksi-s3 cp - s3://archives/backup.tar.gz
# 일괄 업로드 패턴
find . -name "*.log" -mtime -1 | while read f; do
koneksi-s3 cp "$f" "s3://logs/$(basename "$f")"
done
# 패턴 다운로드 및 추출
koneksi-s3 cp s3://archives/data.tar.gz - | tar xzf -팁과 모범 사례
재귀 플래그 사용: 디렉터리 작업의 경우 성능 향상을 위해 항상
-r플래그를 사용하십시오.접두사로 구성: S3 스타일 접두사를 사용하여 파일을 구성합니다(예:
s3://bucket/year/month/day/).드라이 런으로 테스트:
--dry-run플래그를 사용하여 실행 전에 작업을 미리 봅니다.반복 작업 스크립팅: 일반적인 작업에 대한 셸 스크립트를 생성합니다.
전송 모니터링: 대용량 전송의 경우 screen/tmux 세션에서 실행합니다.
정기 백업: cron 작업을 사용하여 정기 백업을 예약합니다.
보안 자격 증명: 버전 제어에 자격 증명을 커밋하지 않습니다.
추가 리소스
GitHub 저장소: https://github.com/koneksi-tech/s3-cli
이슈 트래커: https://github.com/koneksi-tech/s3-cli/issues
릴리스: https://github.com/koneksi-tech/s3-cli/issues
Last updated