Object Storage(rclone)
Object Storage(rclone)
개요
이 페이지는 rclone이라는 오픈소스 툴을 사용하여 Object Storage를 복제하는 방법에 대한 가이드를 제공합니다.
Migration 도구
Migration 대상이 되는 버컷의 규모 및 사용 환경에 따라 아래와 같은 Tool을 활용할 수 있습니다.
| Tool | Live Migrataion | Type | 설명 |
|---|---|---|---|
| sdt-migration | O | CLI + k8s | - 마이그레이션 작업 중에도 소스의 오브젝트가 지속적으로 변경사항이 발생하는 경우 - 소스 버킷에 버전관리가 설정되어 있고 이전 버전 오브젝트도 같이 마이그레이션 해야 하는 경우 - 기존에 k8s cluster를 사용하고 있거나 또는 신규 k8s cluster를 배포할 수 있는 환경이 있는 경우 |
| rclone | X | CLI | - 마이그레이션 작업 중에 버킷의 변동사항이 크지 않거나 Apps를 중지하고 마이그레이션 할 수 있는 환경인 경우 ※ 버전관리가 설정된 버킷의 경우 최신버전만 복제됩니다. |
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 설정 필요)
마이그레이션 절차
1. Configuration
복제 수행을 위해 Source , Target 각각의 Object Storage 접속 정보를 설정합니다. rclone config 명령어를 사용하거나 $HOME/.config/rclone/rclone.conf 또는 특정 디렉토리에 아래의 내용을 등록합니다.
| Variables | 예시 | 비고 |
|---|---|---|
| v1_object_storage_private_endpoint_url | https://obj1.skr-west-1.scp-in.com:8443 | SCP v1 Object Storage private endpoint url |
| v1_access_key | SCP v1 Object Storage 인증키-Access key | |
| v1_secret_key | SCP v1 Object Storage 인증키-Secret key | |
| v1_region | KR-WEST-1 | SCP v1 resion |
| v2_object_storage_private_endpoint_url | https://object-store.private.kr-west1.s.samsungsdscloud.com | SCP v2 Object Storage private endpoint url |
| v2_access_key | SCP v2 Access key | |
| v2_secret_key | SCP v2 Secret key | |
| v2_region | kr-west1 | SCP v2 region |
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
