본문으로 바로가기 본문 바로가기
WIKI 기술 지식 베이스

Rclone

원문 보기 위키 갱신

rclone은 명령줄에서 클라우드 스토리지의 파일을 관리하는 도구예요. rclone을 사용해서 R2에 객체를 동시에 업로드할 수 있어요. 시작 전에 액세스 키를 생성해야 해요.

출처: 문서

본문

시작하기 전에 액세스 키를 생성해야 해요. 모든 예시는 여러분이 생성한 Access Key ID와 Secret Access Key 값을 나타내는 access_key_id와 access_key_secret 변수를 사용해요.

rclone은 클라우드 스토리지의 파일을 관리하는 명령줄 도구예요. rclone을 사용해서 R2에 객체를 동시에 업로드할 수 있어요.

rclone 구성하기

rclone을 설치한 뒤 rclone config를 실행해서 새로운 S3 스토리지 제공자를 구성할 수 있어요. 그러면 새 제공자 정보에 대한 일련의 질문이 표시돼요.

권장 사항

고유한 제공자 이름(provider name)을 선택하고 나머지 프롬프트에는 모두 기본 답변을 사용하는 것을 권장해요.

그러면 rclone 설정 파일이 생성되는데, 아래에 주어진 사전 설정 구성으로 수정할 수 있어요.

  1. n을 선택해 새 remote(원격)를 생성해요.
  2. 새 remote의 이름을 선택해요. 예를 들어 r2를 사용해요.
  3. Amazon S3 Compliant Storage Providers 스토리지 유형을 선택해요.
  4. 제공자로 Cloudflare R2 storage를 선택해요.
  5. AWS 자격 증명을 수동으로 입력할지, 아니면 런타임 환경에서 가져올지를 선택해요.
  6. AWS Access Key ID를 입력해요.
  7. AWS Secret Access Key(비밀번호)를 입력해요.
  8. 연결할 리전을 선택해요(선택 사항).
  9. S3 API 엔드포인트를 선택해요.

참고

rclone v1.59 이상을 실행하고 있는지 확인해야 해요 (rclone 다운로드). v1.59 이전 버전은 S3 사양을 모든 경우에 엄격하게 준수하지 않기 때문에 HTTP 401: Unauthorized 오류를 반환할 수 있어요.

기존 rclone 설정 편집하기

이전에 rclone을 구성해 둔 적이 있다면 rclone config file을 실행해서 rclone 설정 파일의 위치를 확인할 수 있어요:

rclone config file
# Configuration file is stored at:
# ~/.config/rclone/rclone.conf

그런 다음 편집기(nano나 vim 등)를 사용해서 새 제공자를 추가하거나 수정해요. 아래 예시는 새 r2 제공자를 추가한다고 가정해요:

[r2]
type = s3
provider = Cloudflare
access_key_id = abc123
secret_access_key = xyz456
endpoint = https://<accountid>.r2.cloudflarestorage.com
acl = private

참고

객체 수준 권한을 가진 토큰을 사용한다면 오류를 피하기 위해 설정에 no_check_bucket = true를 추가해야 해요.

그런 다음 새 rclone 제공자를 평소 워크플로우에 사용할 수 있어요.

버킷 및 객체 나열하기

rclone tree 명령을 사용해서 remote(이 경우 Cloudflare R2)의 내용을 나열할 수 있어요.

rclone tree r2:
# /
# ├── user-uploads
# │   └── foobar.png
# └── my-bucket-name
#     ├── cat.png
#     └── todos.txt

rclone tree r2:my-bucket-name
# /
# ├── cat.png
# └── todos.txt

객체 업로드 및 검색

rclone copy 명령을 사용해서 R2 버킷에 객체를 업로드하고 반대로 다운로드할 수 있어요. 이를 통해 R2가 지원하는 최대 객체 크기인 5 TB까지 파일을 업로드할 수 있어요.

# Upload dog.txt to the user-uploads bucket
rclone copy dog.txt r2:user-uploads/
rclone tree r2:user-uploads
# /
# ├── foobar.png
# └── dog.txt

# Download dog.txt from the user-uploads bucket
rclone copy r2:user-uploads/dog.txt .

멀티파트 업로드 파트 크기에 관한 참고 사항

멀티파트 업로드에서 파트 크기는 사용되는 Class A 작업 수에 큰 영향을 줄 수 있으며, 이는 최종 청구 금액을 바꿀 수 있어요. 각 파트 업로드는 별도의 작업으로 간주되므로 파트 크기가 클수록 작업 수는 줄지만, 업로드가 실패할 경우 재시도 비용이 커질 수 있어요. 또한 멀티파트 업로드는 항상 단일 PutObject보다 최소 3배 많은 작업을 사용한다는 점을 고려해야 해요. 그 이유는 최소한 하나의 CreateMultipartUpload, UploadPart, CompleteMultipartUpload 작업을 포함하기 때문이에요.

파트 크기의 균형은 사용 사례에 크게 의존하지만, 이런 요소들은 청구 금액을 최소화하는 데 도움이 되므로 한 번쯤 생각해 볼 가치가 있어요.

rclone의 멀티파트 업로드 파트 크기는 --s3-chunk-size CLI 인수를 사용해 구성할 수 있어요. rclone이 멀티파트 업로드를 사용하도록 하려면 --s3-upload-cutoff 인수도 조정해야 할 수 있다는 점을 기억하세요. 둘 다 설정 파일에서도 설정할 수 있어요. 일반적으로 --s3-upload-cutoff는 --s3-chunk-size보다 작지 않아요.

rclone copy long-video.mp4 r2:user-uploads/ --s3-upload-cutoff=100M --s3-chunk-size=100M

사전 서명된 URL 생성하기

rclone link 명령을 사용해서 파일에 대한 공개 액세스를 일시적으로 공유할 수 있는 사전 서명된 링크(presigned link)를 생성할 수도 있어요.

# You can pass the --expire flag to determine how long the presigned link is valid. The --unlink flag isn't supported by R2.
rclone link r2:my-bucket-name/cat.png --expire 3600
# https://<accountid>.r2.cloudflarestorage.com/my-bucket-name/cat.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=<credential>&X-Amz-Date=<timestamp>&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=<signature>

더 알아보기 (Learn more)