작성일:

Go 언어로 만든 크로스 플랫폼 클라우드 스토리지 특화 백업 및 동기화 프로그램

Rclone

  • https://rclone.org/
  • file, sftp 부터 Amazon S3, MinIO 와 같은 Object Storage, Cloud Storage 등의 많은 Providers 를 지원

Install

Rclone config

  • Providers 설정 기반, config 파일을 통해 설정

Rclone config 기본 파일 위치 확인

# linux config 파일 위치 확인
$ rclone config file
Configuration file is stored at:
/home/<HOME>/.config/rclone/rclone.conf
# windows 
$ rclone config file
Configuration file is stored at:
C:\Users\<HOME>\AppData\Roaming\rclone\rclone.conf

Rclone config 추가

  • config 파일을 직접 수정 하거나 Interactive 화면을 통해 진행
$ rclone config
No remotes found - make a new one
n) New remote
s) Set configuration password
q) Quit config
n/s/q>
...
  • Rclone config 내용 확인
$ rclone config show

Rclone Provider config

Amazon S3
[mys3]
type = s3
provider = AWS
env_auth = true
region = ap-northeast-2
location_constraint = ap-northeast-2
[mys3]
type = s3
provider = AWS
env_auth = true
region = ap-northeast-2
location_constraint = ap-northeast-2
access_key_id = AKIAXXXXXXXXXXXXXXXX
secret_access_key = 1oxxxxxxxxxxxxxxxxxxxxxxxxx
MinIO
[myminio]
type = s3
provider = Minio
env_auth = false
access_key_id = KEYxxxxxxxxx
secret_access_key = PWDxxxxxxxxx
endpoint = http://minio-server
SFTP

공개키 인증을 위해 key_file 지정하지 않으면 ssh_agent를 통해 접근시도

type = sftp
host = HOST
user = USER
key_file = ~/.ssh/id_rsa

주요 명렁어

# List all directories/containers/buckets in the path. 
$ rclone lsd minio:

# local directories : ls -al ~/
$ rclone lsd ~/

Copy, Sync

  • 원본과 동일한 파일은 복사하지 않음
# copy
$ rclone copy source-directory/ remote:target-directory/

# sync, mirror
$ rclone sync source-directory/ remote:target-directory/

Global Flags

  • 주요 전역 설정
    --checkers int                         Number of checkers to run in parallel (default 8)
    --config string                        Config file (default "$HOME/.config/rclone/rclone.conf")
-L, --copy-links                           Follow symlinks and copy the pointed to item	
-n, --dry-run                              Do a trial run with no permanent changes
    --exclude stringArray                  Exclude files matching pattern
    --fast-list                            Use recursive list if available; uses more memory but fewer transactions	
    --include stringArray                  Include files matching pattern	
-P, --progress                             Show progress during transfer	
    --transfers int                        Number of file transfers to run in parallel (default 4)
# sync 예제
$ rclone sync source-directory/  remote:target-directory/ --progress --transfers 8 --copy-links
Transferred:             0 / 0 Bytes, -, 0 Bytes/s, ETA -
Errors:                 0
Checks:              6123 / 6123, 100%
Transferred:            0 / 0, -
Elapsed time:          0s

# local sync 예제
$ rclone sync source-directory/  /path/target-directory/ --progress --transfers 8 --copy-links
Transferred:             0 / 0 Bytes, -, 0 Bytes/s, ETA -
Errors:                 0
Checks:              6123 / 6123, 100%
Transferred:            0 / 0, -
Elapsed time:          0s

기타

Mount

Serve

  • https://rclone.org/commands/rclone_serve/
  • 특정 프로토콜을 활용하여 별도 원격 서비스 제공 (Gateway)
    • rclone serve dlna - DLNA를 통한 원격:경로 제공
    • rclone serve docker - 도커의 볼륨 플러그인 API에서 원격을 제공
    • rclone serve ftp - FTP를 통해 원격:경로를 제공
    • rclone serve http - HTTP를 통해 원격 서비스를 제공
    • rclone serve restic - restic의 REST API에 대한 원격 서비스를 제공
    • rclone serve sftp - SFTP를 통해 원격 서비스를 제공
    • rclone은 webdav를 제공합니다 - webdav를 통해 원격:경로를 제공

댓글남기기