rclone을 사용하여 Linux에서 Google 드라이브에 백업하는 방법

공식적인 Google 드라이브 리눅스 클라이언트는 아직 출시되지 않았지만, rclone이라는 명령줄 유틸리티를 통해 간편하게 Google 드라이브에 백업할 수 있습니다. 이 글에서는 그 방법을 자세히 안내합니다.

리눅스 환경에서 Google 드라이브 접근

2012년부터 리눅스 지원이 “곧 제공될 것”이라는 발표가 있었지만, 현재까지 Google에서 공식적인 리눅스용 Google 드라이브 클라이언트를 내놓을 기미는 보이지 않습니다. 그 대신 Insync, overGrive, 그리고 odrive와 같은 다양한 서드파티 솔루션들이 존재하며, 일부 파일 탐색기에서는 Google 드라이브 연동 기능을 제공하기도 합니다. 예를 들어, 파일(GNOME 환경) 등이 있습니다.

이러한 서드파티 앱들은 대부분 유료로 제공되며, 구독 또는 일회성 구매가 필요합니다. 물론, overGrive의 경우 제한된 기능을 제공하는 무료 버전도 존재합니다. 하지만 만약 명령줄에서 백업을 실행하거나 스크립트에 해당 기능을 통합하고 싶다면 어떻게 해야 할까요? 다행히도 rclone이라는 강력한 도구가 이 모든 것을 가능하게 해줍니다. rclone은 40개 이상의 다양한 클라우드 서비스를 지원하며, 파일 백업, 다운로드 및 동기화 작업을 수행할 수 있습니다. rsync와 유사한 기능을 클라우드 환경에서 제공한다고 생각하면 이해하기 쉬울 것입니다.

rclone 설치 과정

rclone은 일반적으로 리눅스 시스템에 기본적으로 설치되어 있지 않습니다. 하지만 다행히도 모든 리눅스 배포판에서 작동하는 설치 스크립트가 제공됩니다. 설치 과정은 curl을 사용합니다. 글을 작성하면서 테스트한 결과, Fedora 31 및 Manjaro 18.1.0에는 curl이 기본적으로 설치되어 있었지만, Ubuntu 18.04 LTS에서는 별도로 설치해야 했습니다.

Ubuntu 사용자는 다음 명령어를 통해 curl을 설치할 수 있습니다.

sudo apt-get install curl

curl 설치가 완료되면, 다음 명령어로 rclone을 설치합니다.

curl https://rclone.org/install.sh | sudo bash

rclone 설치가 성공적으로 완료되면 성공 메시지가 표시됩니다.

이제 리눅스 시스템에 rclone이 설치되었습니다. 다음 단계는 설정 과정을 진행하고, rclone을 인증하여 Google 드라이브에 접근할 수 있도록 하는 것입니다.

rclone 원격 연결 설정

rclone에서는 클라우드 서비스에 대한 연결을 “원격”이라고 합니다. Google 드라이브에 대한 원격 연결을 설정해 보겠습니다. 먼저 다음 명령어를 실행하여 rclone 설정 프로세스를 시작합니다.

rclone config

설정 과정에서 많은 질문이 나타납니다. 하지만 너무 걱정하지 마십시오. 대부분의 질문은 기본값을 그대로 사용하고 “Enter” 키를 눌러 넘어갈 수 있습니다.

rclone은 설정된 원격 연결이 없다고 알려줍니다. “n”을 누르고 “Enter”를 눌러 새로운 원격 연결을 만듭니다. 연결 이름을 묻는 메시지가 나타나면 “google-drive”라고 입력합니다. 물론 원하는 이름을 사용해도 괜찮습니다.

긴 메뉴를 통해 원격 연결을 생성할 스토리지 유형을 선택할 수 있습니다.

Google 드라이브 항목이 나타날 때까지 목록을 스크롤하고, 해당 항목의 번호를 기억해 둡니다.

이 예시에서는 13번이 Google 드라이브입니다. 13을 입력하고 “Enter” 키를 누릅니다.

Google 애플리케이션 클라이언트 ID를 입력하라는 메시지가 나타나면, “Enter” 키를 눌러 기본값을 수락합니다.

다음으로 Google 애플리케이션 클라이언트 비밀번호를 입력하라는 메시지가 나타나면, 다시 “Enter” 키를 누릅니다.

rclone이 Google 드라이브에서 작동할 때 가질 범위를 선택하라는 메시지가 나타납니다. “1”을 입력한 후 “Enter” 키를 누릅니다.

“루트 폴더의 ID” 프롬프트에서도 “Enter” 키를 누릅니다.

“서비스 계정 자격 증명” 프롬프트에서도 “Enter” 키를 누릅니다.

“고급 구성 편집” 프롬프트에서도 “Enter” 키를 누르고, “자동 구성 사용” 메뉴에서 “y”를 입력한 후 “Enter” 키를 누릅니다.

이 과정을 통해 rclone은 Google 드라이브와 통신하고 브라우저를 실행하여 Google 드라이브에 접근할 수 있는 권한을 부여받을 수 있습니다.

브라우저 창에서 사용할 Google 계정을 선택합니다.

“허용” 버튼을 클릭하여 rclone이 Google 드라이브에 접근할 수 있도록 허용합니다.

인증이 완료되면 브라우저 창에 “성공!” 메시지가 표시됩니다. 브라우저를 닫고 터미널 창으로 돌아갈 수 있습니다.

“이것을 팀 드라이브로 구성” 프롬프트에서 “n”을 입력한 후 “Enter” 키를 누릅니다.

“예, 편집, 삭제” 메뉴에서 “y”를 입력한 후 “Enter” 키를 누릅니다.

마지막 메뉴에서 “q”를 입력하고 “Enter” 키를 누릅니다.

rclone 백업 스크립트 작성

rclone은 매우 다양한 기능을 제공하지만, 여기서는 로컬 컴퓨터에서 Google 드라이브로 파일을 복사하는 가장 기본적인 형태의 백업만 다루겠습니다. rclone은 양방향 동기화도 지원하지만, 여기서는 단방향 복사 방식만을 사용합니다. 이는 클라우드에 오프사이트 백업을 생성하는 가장 기본적인 방법입니다.

텍스트 편집기를 열고 다음 스크립트를 입력하거나 복사하여 붙여넣고, 컴퓨터에 저장합니다. 파일 이름은 “gbk.sh”로 저장합니다. 파일 이름은 편한 대로 설정할 수 있습니다.

#!/bin/bash

/usr/bin/rclone copy --update --verbose --transfers 30 --checkers 8 --contimeout 60s --timeout 300s --retries 3 --low-level-retries 10 --stats 1s "/home/dave/Documents" "google-drive:LinuxDocs"

각 매개변수의 의미는 다음과 같습니다.

  • copy: 로컬 컴퓨터에서 원격 저장소로 파일을 복사합니다. 원격 저장소에 이미 있는 파일은 건너뜁니다.
  • --update: 로컬 파일보다 최신 수정 시간이 있는 원격 저장소의 파일은 건너뜁니다.
  • --verbose: 전송되는 모든 파일에 대한 정보를 출력합니다.
  • --transfers 30: 병렬로 복사할 파일 수를 30개로 설정합니다.
  • --checkers 8: 병렬로 실행할 “체커” 수를 8개로 설정합니다. 체커는 진행 중인 전송을 모니터링합니다.
  • --contimeout 60s: 연결 시간 초과 설정을 60초로 설정합니다. 이는 rclone이 원격 저장소에 연결을 시도하는 시간입니다.
  • --timeout 300s: 전송이 300초 동안 유휴 상태이면 중단된 것으로 간주하고 연결을 끊습니다.
  • --retries 3: 오류 발생 시 전체 복사 작업을 최대 3번 재시도합니다.
  • --low-level-retries 10: 낮은 수준의 재시도 횟수를 10번으로 설정합니다. 실패한 작업을 반복하려고 시도합니다.
  • --stats 1s: 파일 전송 통계를 1초마다 출력합니다.
  • "/home/dave/Documents": 원격 저장소에 복사할 로컬 디렉토리입니다.
  • "google-drive:LinuxDocs": 원격 저장소의 대상 디렉토리입니다. rclone 설정 시퀀스에서 설정한 원격 연결 이름인 “google-drive”를 사용하고 있습니다. 또한, 원격 저장소 이름과 디렉토리 이름 사이의 구분 기호로 콜론(:)이 사용되었습니다. 하위 디렉토리는 일반적인 슬래시(/)로 구분됩니다. 대상 디렉토리가 존재하지 않으면 새로 생성됩니다.

이러한 값 중 일부는 기본값이지만, 필요에 따라 변경할 수 있도록 명시했습니다.

다음 명령어를 사용하여 스크립트를 실행 가능하게 만듭니다.

chmod +x gbk.sh

백업 스크립트 실행

백업 스크립트는 “Documents” 폴더의 내용을 Google 드라이브로 복사합니다. 이 예시에서는 “Documents” 폴더에 악보 모음이 들어있습니다.

다음 명령어로 백업 스크립트를 실행합니다.

./gbk.sh

스크립트 실행 결과, 1초마다 통계 업데이트(--stats 1s)와 자세한 출력(--verbose)을 요청했으므로 많은 정보가 터미널에 출력되는 것을 볼 수 있습니다. 일반적으로 새로운 기능을 사용할 때는 자세한 출력을 설정하여 문제를 파악하는 것이 좋습니다. 스크립트가 원활하게 실행된다면 출력량을 줄일 수 있습니다.

스크립트가 완료되면, 60개의 파일이 오류 없이 전송되었다는 최종 요약 정보를 얻을 수 있습니다. 전송에는 약 24초가 소요되었습니다.

이제 Google 드라이브를 확인하여 클라우드 저장소에 파일이 제대로 복사되었는지 확인해 보겠습니다.

“LinuxDocs” 디렉토리가 생성되었고, 그 안에 파일들이 모두 Google 드라이브로 성공적으로 전송된 것을 확인할 수 있습니다.

rclone을 사용하여 Google 드라이브 파일 확인

터미널 창에서 다음 명령어를 입력하여 Google 드라이브의 폴더 내용을 바로 확인할 수도 있습니다.

rclone ls google-drive:/LinuxDocs

더 많은 rclone 기능

명령줄에서 이러한 복사 작업을 수행할 수 있다는 것은 매우 유용합니다. 클라우드 저장소 사용을 스크립트에 통합하고, cron을 사용하여 백업 스크립트 실행을 예약할 수 있습니다. rclone은 더 다양한 기능을 제공합니다. rclone 공식 문서에서 더 많은 정보를 확인할 수 있습니다. 이 글에서는 rclone의 극히 일부 기능만 다루었지만, rclone을 학습하고 활용한다면 효율성을 크게 높일 수 있을 것입니다.

마지막으로, 언급할 중요한 점은 위에서 구현한 백업 방식이 완전한 백업 솔루션은 아니라는 것입니다. 클라우드에 파일 복사본을 만들어 놓는 것은 분명히 유용하지만, 파일의 여러 버전을 관리하거나 복원 기능을 제공하지는 않습니다. 따라서 rclone은 다른 백업 기술과 함께 사용하는 것이 좋습니다. 기존 백업 시스템에 rclone을 추가하여 지리적으로 떨어진 곳에 데이터를 저장하는 좋은 방법입니다.