본문 바로가기
프로그램개발/Linux(Apache.vim)

rclone를 이용해 google drive에 소스 백업

by 크레도스 2020. 5. 29.

출처 : m.blog.naver.com/PostView.nhn?blogId=binsoore&logNo=221214962893&proxyReferer=https:%2F%2Fwww.google.co.kr%2F

 

구글 드라이브를 Synology NAS에 마운트 하는 방법 - rclone

rclone, synology, google team drive, telegram push rclone 를 아래 경로에서 다운 받는다. 제 경우 syno...

blog.naver.com

 

clone, synology, google team drive, telegram push

rclone 를 아래 경로에서 다운 받는다.
제 경우 synology 411+ (intel cpu) 라 linux에 386 으로 다운로드
https://rclone.org/downloads/

 

압축풀고 ( synology 에서는 7z 로 풀면 됨 )
풀어논 경로로 들어가서

https://rclone.org/install/
여기 사이트에서 설치 방법대로 진행한다.

요약 : 단독 실행파일이라 실행 권한 주고, /usr/bin 으로 복사
(아래 한줄한줄 실행)

sudo cp rclone /usr/bin/
sudo chown root:root /usr/bin/rclone
sudo chmod 755 /usr/bin/rclone


이제 rclone 환경설정을 해야 한다.
(클라우드 종류 선택)
난 구글 드라이브 중에서도 파생되어 나온 구글 팀 드라이브
다행이 rclone 에서 지원을 해주니 ... 이 글을 적는것이다. ㅋ

자세한 config 설정은 아래 링크를 정독하여 주시고
https://rclone.org/docs/

Documentation

Configure First, you’ll need to configure rclone. As the object storage systems have quite complicated authentication these are kept in a config file. (See the --config entry for how to find the config file and choose its location.) The easiest way to make the config is to run rclone with the

rclone.org

간단하게 설명해본다.

# rclone config
라고 입력하면 아래 처럼 목록이 나온다.

 


처음 하는것이니 n 이라 입력

No remotes found - make a new one
n) New remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
n/r/c/s/q> n

리모트 연결할 이름을 물어보는데
샘플문서에 remote 로 되어있어, 나도 간편하게 remote
name> remote


 

사용하는 클라우드를 물어보는데 10번 구글 드라이브

client_id>
라고 물어보는데 그냥 엔터
알아도 엔터. (안다고 깝치다가 개 고생했다. 그냥 엔터)

client_secret>
물어본다. 그냥 엔터

service_account_file>
파일 있냐 물어본다. 엔터
너 자동으로 할꺼야?

 

n 이라고 입력

 

뭐 긴 영어줄이 나오면 http 로 시작하는 부분부터 복사해서 브라우져 붙여넣기 (구글 인증 한다)

 

계정 선택하고

 

아래 허용 눌러주고

 

인증된 코드가 나오면 그걸 복사 해서
붙여 넣기 하자.

 

 

 

Google Team Drive 이냐 ? 물어봄.
나는 y

팀드라이브 번호가 나온다. 나는 1번

 


맞냐? y

 

종료 q

설정이 만들어졌다.

명령어
rclone lsd remote:

라고 입력하면 구글 드라이브의 폴더가 보일것이다.

파일복사 명령
rclone copy /home/source/test.txt remote:backup

시놀로지에서는 특정 빈 폴더를 하나 만들고
마운트 명령을 해서 구글 드라이브를 연결 할 수 있다.
어떤 이유에서 인지 (SAMBA) 쓰기 명령이 잘 안되어,
우선은 읽기 전용으로 시놀에 연결하여
탐색기도 보이고, 각종 서비스에서도 구글드라이브 연결된 폴더가 보이도록 하고

파일 복사는 rclone copy [소스] [대상]
파일 이동은 rclode move [소스] [대상]
으로 사용 해볼까 한다. (셋팅 하루차임)

마운트 방법
rclone mount --umask 0 --allow-other --read-only remote:/구글드라이브폴더 /volume1/pds/main &

언마운트 방법
fusermount -uz /volume1/pds/main/


-- 파일 MOVE 상세 명령
-v 정보출력,
---delete-empty-src-dirs 빈폴더 삭제
--log-file=/var/log/rclone.log 로그 파일 남기기

rclone move -v --delete-empty-src-dirs --log-file=/var/log/rclone.log 원본 remote:/대상


그외에 윈도우에서는
https://www.raidrive.com/

 

RaiDrive: Cloud Storages, All Yours!

Map NAS, Router, Google Drive, Google Team Drive, Google Photos, OneDrive and Dropbox to a network drive on File Explorer. No Need File Synchronization & Web Browser!

www.raidrive.com

탐색기에 드라이브 처럼 연결해서 사용할수 있고

smartFTP 사용하여 파일 여러개를 동시에 업로드 하면서
빠른 업로드 속도를 노려볼수도 있겠다.


18. 3. 7 - TIP 추가

업로드가 완료되면 텔레그램으로 Push 알람이 오면 좋을듯 하여
아래 코드를 만들었습니다.

#!/bin/bash rclone move -v --delete-empty-src-dirs --log-file=/var/log/rclone.log upload_folder remote:/public_pds/uploads/ python /volume1/admin/push_msg.py upload_complete

/volume1/admin/send.sh 생성.

# -*- coding: utf-8 -*- # 텔레그램 메세지 보내기 # import sys from urllib import quote, unquote import urllib2 import os # 토큰 TELEGRAM_TOKEN = 'botXXXXXXXXXXXXXXXXXXXXXX' TELEGRAM_CHAT_ID = 'XXXXXXXX' def push_msg( msg ): if not TELEGRAM_TOKEN == '' : url ='https://api.telegram.org/' + TELEGRAM_TOKEN + '/sendMessage?chat_id=' + TELEGRAM_CHAT_ID + '&text='+quote(msg) print 'push message : ' + msg print url urllib2.urlopen(url) # UTF-8 확인사살 reload(sys) sys.setdefaultencoding('utf-8') if __name__ == "__main__" : push_msg ( sys.argv[1] )

push_msg.py 도 같은 폴더에 생성.

TELEGRAM_TOKEN
TELEGRAM_CHAT_ID 는 자신에 맞게 넣어줘야 한다.

TELEGRAM_TOKEN 값은 텔레그램 봇을 만들어야 알수있는데
텔레그램 봇 만드는 방법을 모르는분은
구글 검색을 해보자

나도 봇 만드는 법을 적어 두긴 했는데 ... 참고 해보세요.
https://blog.naver.com/binsoore/221004102383

 

클리앙 알뜰구매 텔레그램 채널 알람, 소스포함

어제에 이어 두번째 강좌(?) 클리앙 개편으로 어떤 개발자분이 만드신 알뜰구매 게시판 알람 봇이 동작을 ...

blog.naver.com


TELEGRAM_CHAT_ID 는 텔레그램에서의 나 자신의 ID 값이다.
이것을 알려면 먼저 봇이랑 친구를 맺어서 채팅방을 만들고
채팅창에 아무 내용이나 하나 보낸 다음

아래 API 를 웹브라우저 주소줄에서 호출하면
result 값으로 알수있다.
(봇이 받은 message 를 가져오는 api 이다)

https://api.telegram.org/botXXXXXXXXXXXXX:AAE5vXHIAFscPHOxmuNDhBgB8SO5Ww3YxMc/getUpdates
( XXXXXXX 는 봇 TELEGRAM_TOKEN 값으로 바꿔야함. )


result 값

{"ok":true,"result":[{"update_id":12345, "message":{"message_id":1234,"from":{"id":123456789,"is_bot":false,"first_name":"abcd","last_name":"abcd","username":"abcd","language_code":"ko"},"chat":{"id":123456789,"first_name":"abcd","last_name":"abcd","username":"abcd","type":"private"},"date":1520396528,"text":"hello"}}]}

message 항목의 id 값이 CHAT_ID 값이다. ( 123456789 )
위 값을 복사해서 push_msg.py 에 TELEGRAM_CHAT_ID 에 적어준다.


그리고 쉘 파일에 실행권한을 주고
chmod 755 /volume1/admin/send.sh

업로드 할 폴더가 /volume1/pds/upload_folder 라고 한다면

/volume1/pds 에서 (한단계 앞에서)

/volume1/admin/send.sh &

실행한다.

업로드가 완료되면 upload_complete 이라는 메세지가 올것이다.

P.S
메세지만 test 해볼려면
# python /volume1/admin/push_msg.py Hello

 

=============

[root@serverhosting254-90 mnt]# history | grep rclone
2533 2020-05-29 [15:55:40] yum install rclone
2539 2020-05-29 [16:06:54] rclone config
2542 2020-05-29 [16:20:14] rclone lsd ourclass
2543 2020-05-29 [16:20:28] rclone lsd remote
2544 2020-05-29 [16:20:33] rclone lsd ourclass:
2545 2020-05-29 [16:22:20] rclone copy /home/www/school ourclass:ourclass