리눅스에서 구글 드라이브를 Terminal로 사용하는 방법
부제: gdrive 이 앱에서 Google 로그인이 일시적으로 사용 중지되었습니다
0. Linux에서 Google Drive를 사용하고 싶다.
윈도우는 좋은 프로그램들을 잔뜩 지원해주는데, 리눅스는 알아서 하라는걸까. 윈도우에서는 데스크톱용 드라이브를 다운받을 수 있고, G Suite 사용자는 구글 드라이브 파일 스트림을 사용할 수 있다.
근데 리눅스용 소프트웨어는 아직도 깜깜무소식이다. 수많은 리눅스 기반의 OS 사용자들과 라즈베리파이 사용자들의 속이 까맣게 타 들어가는 소리가 들렸다. 그래서 참다 못한 리눅스 사용자들이…
1. 그래서 알아서 만들어서 쓴다
클론 작업이 편리하게 이루어지려면 역시 GUI보단 CLI가 좋다. 그래픽 인터페이스가 없으면 하나하나 검색해서 사용해야 한다는 불편함이 늘 함께하지만, 그 약간의(?) 불편함을 극복하면 완전히 새로운 세상이 펼쳐진다. 텍스트 기반의 인터페이스는 자동화가 간편하고, 부재하는 기능을 손쉽게 추가·변형·응용할 수 있다.
내가 만들기 전에 이미 만들어진 소프트웨어가 있는지 검색해 보는 것은 우주의 진리; 그렇게 검색해본 여러 소프트웨어가 있다.
l Gdrive (오늘의 주인공)
l overGrive(오버ㅈㄹ이브)(유료)
l InSync (유료)
l drive
l Rclone
l GNOME (버전 3.18 이상)
l drive-cli (Python 패키지)
이 중에서 Gdrive를 사용해볼 것이다.
2. 설치 방법
생각보다 까다로운 과정이 포함되어 있으니, 귀찮은걸 싫어한다면 빠른 포기를 권한다. 큰 흐름을 설명하자면 다음과 같은 과정을 거친다.
l 컴파일 된 바이너리 파일 다운로드
(혹은 직접 컴파일)
l Google Cloud Platform에서 새 프로젝트 만들기
n OAuth 2.0 클라이언트 ID 생성
n 클라이언트 ID와 Secret 확보
n Google Drive API 사용 설정
l Gdrive 바이너리 파일 수정
l Gdrive OAuth 인증 후 사용
이 과정을 따라올 수 있는 자만이 다음 단계로 넘어갈 수 있다. 리눅스 사용자들이라면 이러한 과정에 이미 단련이 될 대로 되었다고 생각하기 때문에, 마음 놓고 서술하였다.
3. 컴파일 된 바이너리 파일 다운로드
안타깝게도 Gdrive는 현재 유지보수가 되고 있지 않다. 하지만 깃허브는 커밋을 거꾸로 거슬로 올라갈 수 있다는 점… 마지막으로 컴파일된 바이너리 파일의 모음집이 2.1.0 버전에 수록되어 있다. 앞의 링크를 클릭해서 자신의 환경에 맞는 바이너리 파일을 다운받는다.
참고로 라즈베리파이와 Linux arm 64-bit가 서로 다르므로 이 점에 유의하면 좋다.
다운받은 파일을 /bin 폴더에 두어도 괜찮고, /home/**USERNAME**/gdrive 처럼 유저 홈 디렉토리에 따로 폴더를 만들어 보관해도 좋다. 다만 /bin 폴더에 두면 PATH를 따로 설정해주지 않아도 바로 커맨드를 입력할 수 있다는 장점이 있지만, sudo가 불가능하다면 권한이 필요하지 않은 폴더에 두어도 아무 문제 없다.
4. Google Cloud Platform에서 새 프로젝트 만들기
이걸 왜 만들어야 하느냐면… 현재 유지보수 되지 않고 있는 Gdrive를 내가 직접 만든 클라이언트를 통해 구동시켜야 하기 때문이다. 쉽게 비유하자면, 넥슨이 망해서 메이플을 못 하니까 프리메이플 서버를 돌려야 할 판이다. 여기에서 등장하는 OAuth 2.0의 개념이 궁금하다면 생활코딩의 관련 수업을 참조하면 된다. 이외에도 구글에 ‘OAuth 2.0 이란?’이라고 검색하면 많은 자료들을 만날 수 있다.
새 프로젝트를 만들고 사용자 인증 정보 획득 및 클라이언트 ID와 Secret 코드 확보의 과정은 마찬가지로 생활코딩의 강의에서 매우 친절하게 설명해주고 있으나, 여기에서도 (아주 조금이지만 더 최신화 된 사진으로) 설명할 것이다.
l 구글 클라우드 플랫폼에 접속한다.
구글 계정으로 로그인을 하고, 새 프로젝트를 생성하면서 프로젝트 이름을 적어준다. 프로젝트가 생성되면 오른쪽 위에 종 모양의 아이콘에서 프로젝트가 생성되었다고 알림이 뜬다. 그러면 프로젝트 이름을 클릭해서 해당 프로젝트로 이동해준다.
l ‘API 및 서비스 – 사용자 인증 정보’에 들어간다.
l 사용자 인증 정보 만들기 – OAuth 클라이언트 ID를 누른다.
시행착오를 겪으며 이미 만들어둔 클라이언트가 보인다. 처음 만드는 사람이라면 위의 사진과는 다르게, 아무런 인증 정보가 보이지 않을 것이다.
중간에 OAuth 동의 화면이 뜰 수 있는데, 대충 적고 넘어가도 된다.
l 클라이언트 생성
이 과정이 중요하다. 여기에서 클라이언트 ID는 몰라도 클라이언트 보안 비밀번호는 누구에게도 노출하지 말아야 한다. 이 값을 메모장에 저장해 둔다. 아래에서 쓰인다.
l 사용자 인증 정보 탭 위에 라이브러리 탭으로 들어간다.
위의 사진은 이미 API 사용 설정을 눌렀을 때 볼 수 있는 화면이다. ‘관리’를 누르면 할당량(quota) 및 요청량을 확인할 수 있다.
l 앱 설정은 이 정도로 마무리
Google Drive API 설정은 여기에서 끝이다. 위의 과정은 구글 클라우드 플랫폼에 클라이언트를 생성해서 해당 클라이언트가 resource owner(사용자)의 Google Drive에 접근할 수 있게 권한 설정을 한 것이라고 이해하면 편하다(엄밀한 설명은 아니지만 넘어가도록 한다).
5. Gdrive 바이너리 파일 수정
위의 번잡스러운 짓을 한 데에는 이유가 있다. 이 바이너리 파일을 실행($ ./gdrive about)시키면 oauth 인증을 위한 링크가 뜨고, 해당 링크로 들어가면 아래와 같은 메시지를 볼 수 있기 때문이다.
이 앱에서 Google 로그인이 일시적으로 사용 중지되었습니다
이 앱은 아직 Google 로그인을 사용하도록 Google의 인증을 받지 않았습니다.
자, 이제 프리메이플을 돌릴 시간이다.
l Gdrive 바이너리 파일이 존재하는 디렉토리에서 다음과 같은 명령어를 실행한다.
sed -i "s|367116221053-7n0vf5akeru7on6o2fjinrecpdoe99eg.apps.googleusercontent.com|**자신의 클라이언트 아이디**|g" gdrive
sed -i "s|1qsNodXNaWq1mQuBjUjmvhoO|**클라이언트 시크릿**|g" gdrive
위의 명령어는 gdrive 바이너리 파일에서 개발자가 적어둔 클라이언트 ID를 당신의 아이디로 치환하는 명령어이다.
아래의 명령어는 gdrive 바이너리 파일에서 개발자가 적어둔 클라이언트 시크릿을 당신의 시크릿으로 치환하는 명령어이다.
위에서 메모해둔 정보를 입력하여 치환하면 된다.
바이너리 파일에서 hex 데이터를 이런 방식으로 치환할 생각을 어떻게 했을까… 이 방법을 가르쳐준 일본의 한 유튜버에게 깊은 감사를 표한다.
개발자의 클라이언트에 관한 정보는 깃허브 이슈트래커의 한 댓글에서 확인했으며, 댓글이 해당 소스코드의 주소도 가르쳐주었다.
그 이후에 해당 바이너리를 실행하며 about 아규먼트를 넣어주어 사용하면 된다. 사용법에 관해서는 깃허브를 참조하기 바란다.
6. 여담
핵심적인 역할을 해준 일본인 유튜버의 댓글에 한국인도 있다.. 한국인도 일본인도 모두 영어로 의사소통하는 이 기묘한 분위기는 역시 적응이 안 된다.
댓글 없음:
댓글 쓰기