Object Storage(rclone)

Object Storage(rclone)

개요

이 페이지는 rclone이라는 오픈소스 툴을 사용하여 Object Storage를 복제하는 방법에 대한 가이드를 제공합니다.

Migration 도구

Migration 대상이 되는 버컷의 규모 및 사용 환경에 따라 아래와 같은 Tool을 활용할 수 있습니다.

ToolLive MigrataionType설명
sdt-migrationOCLI + k8s- 마이그레이션 작업 중에도 소스의 오브젝트가 지속적으로 변경사항이 발생하는 경우
- 소스 버킷에 버전관리가 설정되어 있고 이전 버전 오브젝트도 같이 마이그레이션 해야 하는 경우
- 기존에 k8s cluster를 사용하고 있거나 또는 신규 k8s cluster를 배포할 수 있는 환경이 있는 경우
rcloneXCLI- 마이그레이션 작업 중에 버킷의 변동사항이 크지 않거나 Apps를 중지하고 마이그레이션 할 수 있는 환경인 경우
※ 버전관리가 설정된 버킷의 경우 최신버전만 복제됩니다.
표. Object Storage migration tool 비교

Rclone

rclone은 70가지 이상의 다양한 클라우드 스토리지 제품을 지원하는 오픈 소스, 명령줄 기반 파일 관리 프로그램입니다. 사용자가 여러 클라우드 서비스와 로컬 스토리지를 효율적으로 동기화, 복사, 이동 및 관리할 수 있도록 설계되었으며, “클라우드 스토리지의 스위스 나이프"로 불리기도 합니다.

주요 기능

  • 다양한 스토리지 지원: Amazon S3, Google Drive, Dropbox, Microsoft OneDrive, Azure Blob, FTP, WebDAV 등 70개 이상의 클라우드 및 스토리지 프로토콜을 지원합니다.
  • 파일 관리 명령: rsync, cp, mv, ls, mount 등 표준 Unix 명령어와 유사한 구문을 사용하여 파일을 관리할 수 있습니다.
  • 데이터 동기화 및 백업: 소스와 대상을 동일하게 유지하는 sync 기능과 백업을 위한 copy 기능을 제공합니다.
  • 암호화 및 무결성 검증: 전송 중 데이터 무결성을 위해 체크섬을 검증하며, 업로드 전 파일을 암호화할 수 있습니다.
  • 대역폭 최적화: 대역폭 제한 설정 및 중단된 전송을 다시 시작하는 기능으로 효율적인 데이터 전송을 지원합니다.
  • 클라우드 간 직접 전송: 로컬 디스크를 거치지 않고 클라우드 제공업체 간에 직접 데이터를 마이그레이션할 수 있습니다.
  • 마운트 기능: 클라우드 스토리지를 로컬 파일 시스템처럼 마운트하여 사용할 수 있습니다.

일반적인 용도

  • 대규모 데이터 마이그레이션: 클라우드 서비스 간 또는 로컬에서 클라우드로 대량의 데이터를 효율적으로 옮길 때 사용됩니다.
  • 자동화된 백업: 스크립트를 활용하여 예약된 백업 작업을 자동화할 수 있습니다.
  • 미디어 서버 통합: Plex, Emby 같은 미디어 서버에서 클라우드에 저장된 콘텐츠를 직접 스트리밍하는 데 활용됩니다.

더 자세한 정보와 다운로드는 rclone 공식 웹사이트에서 확인할 수 있습니다.

사전작업

안내
  • rclone 이 설치된 서버에서 v1, v2 Object Storage 버킷 접속이 가능해야 합니다.
  • rclone 의 실행 위치에 따라 Object Storage로의 접속을 위한 vpc endpoint 설정이 필요합니다. (v1에 설치시 v2에 vpc endpoint 설정 필요)
file_mig_rclone_01
그림. Object Storage Migration 환경

마이그레이션 절차

1. Configuration

복제 수행을 위해 Source , Target 각각의 Object Storage 접속 정보를 설정합니다. rclone config 명령어를 사용하거나 $HOME/.config/rclone/rclone.conf 또는 특정 디렉토리에 아래의 내용을 등록합니다.

Variables예시비고
v1_object_storage_private_endpoint_urlhttps://obj1.skr-west-1.scp-in.com:8443SCP v1 Object Storage private endpoint url
v1_access_keySCP v1 Object Storage 인증키-Access key
v1_secret_keySCP v1 Object Storage 인증키-Secret key
v1_regionKR-WEST-1SCP v1 resion
v2_object_storage_private_endpoint_urlhttps://object-store.private.kr-west1.s.samsungsdscloud.comSCP v2 Object Storage private endpoint url
v2_access_keySCP v2 Access key
v2_secret_keySCP v2 Secret key
v2_regionkr-west1SCP v2 region
표. configuration

rclone.conf

[source]
type = s3
provider = Other
env_auth = true 
access_key_id = <<v1_access_key(스토리지 인증키)>>
secret_access_key = <<v1_secret_key(스토리지 인증키)>>
region = <<v1_region>>
endpoint = <<v1_object_storage_private_endpoint_url>>
acl = private

[target]
type = s3
provider = Other
env_auth = true
access_key_id = <<v2_access_key>>
secret_access_key = <<v2_secret_key>>
region = <<v2_region>>
endpoint = <<v2_object_storage_private_endpoint_url>>
acl = private

2. 실행(Sync)

sync 또는 copy 명령어를 사용하여 복제를 실행합니다. 복제시 버킷을 반드시 지정해야 합니다.

rclone --config="./rclone.conf" sync source:magicscenario001/ target:magicscenario001/ --progress --transfers=12 --checkers=24 --multi-thread-streams=12

Transferred:        3.092 GiB / 3.092 GiB, 100%, 20.547 MiB/s, ETA 0s
Checks:                 0 / 0, -, Listed 8587
Transferred:         4779 / 4779, 100%
Elapsed time:      4m31.0s

주요 옵션

  • --transfers : 동시에 전송할 파일 개수(병렬도)를 조절합니다. 기본값은 4입니다. 이 값을 늘리면 복사 속도가 빨라질 수 있지만, 메모리와 네트워크 사용량도 같이 늘어납니다

  • --checkers : 파일 목록을 읽고, 복사할 파일을 빠르게 찾는 스레드 수입니다. 기본값은 8입니다. 전송 대상이 많은 경우, 이 값을 아주 크게 설정하면 목록 읽기 속도가 빨라집니다

  • --multi-thread-stream : 하나의 대용량 파일도 여러 스레드로 쪼개서 전송합니다. 기본값은 4입니다. 1 이상으로 설정하면 큰 파일의 전송 속도를 높일 수 있습니다

  • --buffer-size : 파일을 한 번에 메모리에 적재할 버퍼 크기입니다. 이 값을 크게 하면 한 번에 더 많은 데이터를 읽어 들여 전송 속도가 빨라지지만, 메모리 사용량도 증가합니다.

  • --progress : 진행 상황을 실시간으로 보여줍니다. 전환 상황과 각 파일별 전송 상태를 바로 확인할 수 있습니다

3. 검증(Check)

전송이 완료된 후 전송된 오브젝트가 문제 없는지 확인할 수 있습니다.

rclone --config="./rclone.conf" check source:magicscenario001/ target:magicscenario001/ --progress 

2025/10/15 14:07:02 NOTICE: S3 bucket magicscenario001: 0 differences found
2025/10/15 14:07:02 NOTICE: S3 bucket magicscenario001: 1 hashes could not be checked
2025/10/15 14:07:02 NOTICE: S3 bucket magicscenario001: 4781 matching files
Transferred:              0 B / 0 B, -, 0 B/s, ETA -
Checks:              4781 / 4781, 100%, Listed 17178
Elapsed time:         5.8s