OCI/Infrastructure

OCI Object Storage Rclone

우디.. 2024. 12. 2. 10:02

Rclone

Rclone은 다양한 클라우드 스토리지 또는 온프레미스에서 클라우드로 파일과 디렉토리를 동기화할 수 있습니다.

  • Rclone as a centralized or gateway solutio
    • 중앙 위치 또는 게이트웨이에 Rclone을 배포하고, 다양한 운영 체제, 소스 또는 NAS(네트워크 연결 스토리지) 어플라이언스에서 NFS(네트워크 파일 시스템) 또는 SMB(서버 메시지 블록) 공유를 마운트한 다음, Rclone을 사용하여 로컬 소스에서 OCI 오브젝트 스토리지로 데이터를 복사할 수 있습니다.

 

  • Rclone deployed in the NFS or SMB Servers
    • OCI 오브젝트 스토리지로 직접 데이터를 복사하기 위해 NFS 또는 SMB 서버에 직접 Rclone을 배포할 수 있습니다

Rclone 명령어

  • rclone copy
    • Source에서 Target으로 복사 가능
    • 기존의 Source에서 Target으로 test1.txt, test2.txt, test3.txt 파일을 복사한 경우
      • Source에서 test1.txt, test2.txt 파일안에 추가되는 내용이 있고 test3.txt 파일이 삭제된 경우 rclone copy 명령어를 사용할 경우 test1.txt, test2.txt 수정된 파일만 Target으로 업로드 되고 test3.txt 파일의 경우 변경사항 없이 Target에 계속 존재함
  • rclone sync
    • Source에서 Target으로 복사와 동일하게 파일이 전송되면 Overwrite가 발생
      • copy와 같은점: 동일한 txt파일이 수정될 경우 수정된 내역의 파일 업로드
      • copy와 다른점: source에서 target으로 업로드 된파일이 source에서 삭제된 경우 target에서도 삭제됩니다.
  • rclone bisync
    • 양방향 전송
    • source와 target에 서로 없는 파일들을 맞교환하여 양쪽다 동일한 파일을 가집니다.
    • 서로 동일한 파일을 가지고 있지만 파일안에 서로 다른 내용인 경우 Source의 파일을 기반으로 Target의 파일이 Overwrite 됩니다.
    • 주로 가운데 서버가 있고 각각의 클라이언트가 파일 시스템을 공유하고 있을 때 유용한 방법
  • rclone move
    • source 쪽에서 target으로 파일을 옮겨집니다.
    • 옮기게 되면 source쪽에서는 파일이 없어집니다.
    • 주의할 점은 폴더 to 폴더 로만 사용이 가능합니다.
  • rclone moveto
    • move의 경우 폴더에서 폴더로만 사용이 가능하기 때문에 파일에서 폴더로 옮기기 위해서는 moveto를 통해서 가능합니다.

Linux

Rclone 설치 및 설정

Rclone 설치 방법

  1. curl 설치 스크립트 실행
curl <https://rclone.org/install.sh> | sudo bash
  1. 사전에 컴파일된 바이너리 설치
curl -O <https://downloads.rclone.org/rclone-current-linux-amd64.zip> 
or
wget <https://downloads.rclone.org/rclone-current-linux-amd64.zip>

unzip rclone-current-linux-amd64.zip
cd rclone-*-linux-amd64

cp rclone /usr/bin
chown root:root /usr/bin/rclone
chmod 755 /usr/bin/rclone

mkdir -p /usr/local/share/man/man1
cp rclone.1 /usr/local/share/man/man1/
mandb

1번 방법을 선택했다면 2번 방법으로 설치를 진행하지 않아도 된다.

 

Rclone 설정

rclone config 명령어를 사용

 

n 엔터 후 remote 이름 설정

 

Storage type 선택, OCI Object Storage 36번 선택

 

 

rclone에서 사용할 인증 제공자를 선택하는데 2번을 선택하겠습니다.

 

object storage namespace, object storage compartment ID, object storage region 과 endpoint for object storage API의 값을 넣습니다.

 

object storage namespace의 경우 버킷 혹은 root tenancy에서 확인할 수 있습니다.

compartment의 ocid의 경우 해당 리소스가 있는 compartment의 ocid를 복사 붙여 넣습니다.

Object Storage의 api endpoint의 경우 선택사항 입니다. 리전의 기본 endpoint를 사용하려면 블랭크 상태로 사용하면 됩니다.

 

OCI 구성 파일의 전체 경로와 config_profile 정보를 입력합니다.

 

고급 구성 옵션이 필요하지 않기 때문에 기본 매개변수인 n은 선택합니다.

 

 

Rclone의 요약된 구성을 보여주고 구성을 저장하려면 y를 선택합니다.

 

 

OCI cli 설정

My profile에서 API key 추가

 

API key 값을 oci cli config에 설정

.oci 경로의 config 파일에 복사 붙여 넣고 올바른 key 파일 경로로 설정합니다.

 

 

Rclone 실습

모든 버킷 조회하기

rclone lsd remote-test:

 

버킷 생성하기

rclone mkdir remote-test:test-bucket

 

생성된 버킷 확인

 

버킷의 콘텐츠 나열

rclone ls remote-test:test-bucket
rclone ls remote-test:test-bucket --max-depth 1

 

 

/source 디렉토리에서 3개의 텍스트 파일 생성

 

리눅스 폴더에서 Object Storage 버킷으로 데이터를 전송

 

rclone copy /path/to/local/data OCIStorage:your-bucket-name

rclone copy /path/to/local/data remote-test:test-bucket

 

Object Storage 버킷으로 전송된 것을 확인할 수 있습니다.

 

Object Storage 모든 파일 삭제

rclone delete remote-test:test-bucket

 

 

다중 스레드 스트림, 데이터 전송 진행률, 버퍼 크기 등과 같은 고급 옵션 예시

rclone -vvv --progress --stats-one-line --max-stats-groups 10 --log-format date,time,UTC,longfile --fast-list --buffer-size 256Mi --oos-no-check-bucket --oos-upload-cutoff 10Mi --multi-thread-cutoff 16Mi --multi-thread-streams 3000 --transfers 3000 --checkers 64 --retries 2 --oos-chunk-size 10Mi --oos-upload-concurrency 10000 --oos-attempt-resume-upload --oos-leave-parts-on-error sync /root/source/ oci:test-bucket

 

 

 

https://docs.oracle.com/en/learn/migrate-data-to-oci-object-storage/index.html#introduction