얼마 전 기다리고 있던 데이터가 드디어 오픈되면서 대용량 데이터를 받을 일이 생겼다.
아직 일부분만 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
** 위 블로그에서 설명한 내용과 아주 약간 다른다. 서비스 계정 id 생성 -> Oauth 클라이언트 Id 생성 정도
- Google Cloud Platform 접속
- 새프로젝트 생성
- 생성한 프로젝트 선택 후 관련 api에 google drive api 사용 추가
- 사용자 인증 정보 만들기
- Oauth 동의화면에서 동의화면 설정 후 다시 사용자 인증 정보로 돌아가 사용자 인증 정보 만들기 클릭
- Oauth 클라이언트 ID 생성
- 생성된 키와 비밀번호를 따로 copy해 저장해 놓는다.
2. rclone 설치
- rclone 다운로드: https://rclone.org/downloads/
- 원하는 위치에 압축 풀기
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를 선택하면 수 초 후에 다운로드가 시작된다.
아직 다운로드 중인데 생각보다 컴퓨터가 힘겨워 하는 듯 하다... 탐색기에만 들어가면 프로그램 응답 없음이 되는 중. 추가로 문제가 생기거나 데이터가 제대로 받아지지 않았다면 내용을 추가할 예정이다.