본문 바로가기

카테고리 없음

Rclone을 이용한 대용량 데이터 다운로드

반응형

얼마 전 기다리고 있던 데이터가 드디어 오픈되면서 대용량 데이터를 받을 일이 생겼다.

아직 일부분만 release 되었는데도 100기가가 넘는 데이터이다 보니 data 사이트에서도 rclone을 이용한 다운로드를 권장하고 있어 한 번 사용해보고 (까먹지 않도록) 백업을 해놓기로 했다.

rclone 사용법으로 검색하면 보통 마운트를 어떻게 하는지 등의 정보등만 나와서 여기저기서 정보를 취합해 활용해본 결과, 데이터 다운로드 목적의 rclone 사용 process는 다음과 같았다.

** 예시는 OpenRooms Dataset 기준

우선 내가 사용한 데이터의 경우 goold drive 공유 문서함으로 데이터가 공유되었기 때문에 google team drive -> local file storage 기준

1. Google Cloud API - 사용자고유생성번호 만들기

참고:  https://useful-jang.tistory.com/227

 

[구글] 시트, 연동, 사용자, 인증, API, 등록, 방법

프로그램을 통해 구글 시트의 내용을 불러오거나 수정할 수 있습니다. 우선 API를 등록해야 하는데 어떻게 하는지 그 방법을 정리합니다. 1. 접속 우선 아래 링크에 클릭하여 구글 API 사이트에 접

useful-jang.tistory.com

** 위 블로그에서 설명한 내용과 아주 약간 다른다.  서비스 계정 id 생성 -> Oauth  클라이언트 Id 생성 정도

  • Google Cloud Platform 접속
  • 새프로젝트 생성
  • 생성한 프로젝트 선택 후 관련 api에 google drive api 사용 추가
  • 사용자 인증 정보 만들기
  • Oauth 동의화면에서 동의화면 설정 후 다시 사용자 인증 정보로 돌아가 사용자 인증 정보 만들기 클릭
  • Oauth 클라이언트 ID 생성
  • 생성된 키와 비밀번호를 따로 copy해 저장해 놓는다. 

2. rclone 설치

 

Rclone downloads

© Nick Craig-Wood 2014-2021 Source file downloads.md last updated 2021-02-05 Website hosted on a MEMSET CLOUD VPS, uploaded with rclone and built with Hugo. Logo by @andy23.

rclone.org

  • 원하는 위치에 압축 풀기

3. rclone 실행 및 remote space 생성

rclone을 이용해 storage 간 데이터를 이동하기 위해서는 각 storage가 rclone 상에서 configuration 되어야만 한다. 예를 들어, 어떤 구글 공유 드라이브 A에서 local storage B로 데이터를 받고 싶다라고 하면, 이 A 와 B가 rclone remote config 상에 다음과 같이 정의되도록 등록해주어야 한다.

Name    Type

A         drive

B          local

등록 순서는 다음과 같다.

  • rclone.exe 가 위치한 폴더에서 cmd / Window Shell 실행
  • ./rclone config 입력
  • 새로운 remote space를 만들 것이므로 n 입력
  • remote space 유형을 물어보면, google drive ( 현 시점 상 15번) 를 선택한다.
  • command 를 따라 입력하되 cloud id 와 cloud secret에는 각각 1에서 만들었던 cloud id 랑 비번을 입력
  • 쭉 default 로 하다가 share drive 로 할 것인지 묻는다면 yes를 선택. no를 선택하면 구글드라이브>내드라이브 를 인식하고, Yes를 선택하면 구글드라이브>팀드라이브 를 인식한다. configuration 끝
  • local file system 도 동일하게 설정
  • 설정이 끝나면 앞서 만든 두 remote space가 configuration 되어 뜰 것이다.

4. 구글 공유 문서함 설정?

내 경우에는 한 가지 문제가 더 생겼는데, 저자들이 공유해준 데이터는 구글 공유 문서함 폴더상에서 공유 되어 있는데 위 방식대로 google drive를 rclone configuration 하면 팀(공유) 드라이브만 인식이 된다는 것이었다.  좀 헤매다가 공유 폴더가 아닌 파일(zip)의 사본을 팀드라이브에 만들어주는 방식으로 해결했다.

5. 데이터 copy

  • configuration을 끝낸 뒤( q)Quit Config)  명령어를 입력한다.
  • sync와 copy 두 가지를 쓸 수 있는데, sync 의 경우 내가 공유받은 폴더에 대해 관리자와 동등한 권한을 가지고 있다는 가정하에 해당 데이터를 삭제도 할 수 있다. 안전을 위해 copy가 권장된다.
  • command line 명령어는 다음과 같다 이 때 remotespace 이름 뒤에 :를 붙여야 한다는 것에 유의한다. 예를 들어 내 경우  구글 팀드라이브에 해당하는 remote space는 openrooms, 로컬의 경우 localOpenrooms 라고 지었기 때문에 명령어는 다음과 같게 된다.
    ./rclone copy -i openrooms: localOpenrooms:​
  • ./rclone copy -i (드라이브remotespace이름): (로컬remotespace이름):​
  • 입력하면 팀드라이브 내에 만들어낸 데이터 사본 (ex) Image.zip) 을 옮기겠냐고 물어본다.  yes를 선택하면 수 초 후에 다운로드가 시작된다. 

 

아직 다운로드 중인데 생각보다 컴퓨터가 힘겨워 하는 듯 하다... 탐색기에만 들어가면 프로그램 응답 없음이 되는 중. 추가로 문제가 생기거나 데이터가 제대로 받아지지 않았다면 내용을 추가할 예정이다. 

반응형