안녕하세요. 도정진입니다.
이번에는 U5PVR 리눅스에서 google 드라이브를 연동하는 방법에 대해서 알아보도록 하겠습니다.
프로그램으로 rclone 을 사용하며 드라이브 방식으로 마운트 하여 사용하는 데에는 이만한 프로그램이 없다고 생각되어 이 프로그램으로 가이드를 작성합니다.
추가적으로 rclone 은 구글 드라이브만 지원하는 것이 아니라 아마존 무제한 클라우드 등등 많이 지원을 하고 있음으로 각 설정 방법은 아래의 구글 드라이브를 추가하는 것과 비슷합니다. 공식 홈페이지에서 참고하여 설정해 주시면 되겠습니다.
1. rclone 설치하기
먼저 rclone 은 파일 시스템을 마운트 할 때, fuse 파일 시스템을 사용합니다. 따라서 fuse 패키지를 설치해야합니다.
추가적으로 zip 파일의 압축을 풀기 위해서 unzip 패키지도 설치합니다.
apt-get install fuse unzip
다음으로 rclone 바이너리를 홈페이지에서 받습니다.
wget http://downloads.rclone.org/rclone-v1.35-linux-arm.zip
받은 파일의 압축을 풀기 위해서 아래의 명령을 입력합니다.
# unzip rclone 입력하시고 TAB 키로 자동완성하시면 편리합니다.
unzip rclone-v1.35-linux-arm.zip
cd rclone-v1.35-linux-arm
압축을 풀고 해당 폴더로 이동하셨으면 바이너리 파일을 편리하게 실행할 수 있게 PATH 환경변수에 포함된 디렉터리로 이동시킵니다. 저는 /usr/bin 에 옮기도록 하겠습니다.
cp rclone /usr/bin
# 실행 권한이 필요하기 때문에 아래의 퍼미션 설정을 합니다.
chmod a+x /usr/bin/rclone
다음으로 rclone 이 정상적으로 실행이 되는지 체크합니다.
아래처럼 뜨면 정상적으로 설치가 된 상태입니다.
root@u5pvr-debian:~# rclone version
2017/03/17 22:29:22 Config file "/root/.rclone.conf" not found - using defaults
rclone v1.35
2. 구글 드라이브 연동하기
마운트 폴더를 하나 만들기 위해서 /mnt/gdrive 라는 폴더를 만듭니다.
mkdir /mnt/gdrive
아래 명령을 통해서 구글 드라이브를 연동합니다.
root@u5pvr-debian:~# rclone config
2017/03/17 22:32:17 Config file "/root/.rclone.conf" not found - using defaults
No remotes found - make a new one
n) New remote
s) Set configuration password
q) Quit config
n/s/q> n
# 새로운 리모트를 생성해야 함으로 n 을 입력합니다.
name> djj9405
# 마음에 드는 이름을 하나 입력하십시오.
Type of storage to configure.
Choose a number from below, or type in your own value
1 / Amazon Drive
\ "amazon cloud drive"
2 / Amazon S3 (also Dreamhost, Ceph, Minio)
\ "s3"
3 / Backblaze B2
\ "b2"
4 / Dropbox
\ "dropbox"
5 / Encrypt/Decrypt a remote
\ "crypt"
6 / Google Cloud Storage (this is not Google Drive)
\ "google cloud storage"
7 / Google Drive
\ "drive"
8 / Hubic
\ "hubic"
9 / Local Disk
\ "local"
10 / Microsoft OneDrive
\ "onedrive"
11 / Openstack Swift (Rackspace Cloud Files, Memset Memstore, OVH)
\ "swift"
12 / Yandex Disk
\ "yandex"
Storage> 7
Google Application Client Id - leave blank normally.
client_id>
Google Application Client Secret - leave blank normally.
client_secret>
# 정확하게 모르겠지만 보통 필요가 없습니다. 그래서 아무것도 입력하지 않고 엔터를 누릅니다.
Remote config
Use auto config?
* Say Y if not sure
* Say N if you are working on a remote or headless machine or Y didn't work
y) Yes
n) No
y/n> n
# 쉘에서 작업을 하기 때문에 자동 설정이 되지 않습니다. 따라서 n 을 입력하여 수동설정으로 넘어갑니다.
If your browser doesn't open automatically go to the following link: https://accounts.google.com/o/oauth2/auth?client_id=202264815644.apps.googleusercontent.com&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&response_type=code&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive&state=b02c34056754881ab1b1d15b4e5bf67d
Log in and authorize rclone for access
Enter verification code>
# 이부분은 구글 계정과 연동하기 위한 부분입니다. 작업하실 때 나오는 링크를 복사하시고, 미리 브라우저에서는 연결할 구글 계정으로 로그인을 해 둡니다. 그 상태에서 위 주소를 붙여넣어 코드를 받으시면 됩니다.
각기 주소가 다르기 때문에 위 주소를 복사하지 마시고 작업중인 장비에서 나온 주소를 복사하여 작업하시길 바랍니다.
저의 경우 위 주소로 이동해 보면 아래와 같이 권한 허용창이 뜹니다.
아래에 나온 코드를 복사하여 붙여 넣습니다.
If your browser doesn't open automatically go to the following link: https://accounts.google.com/o/oauth2/auth?client_id=202264815644.apps.googleusercontent.com&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&response_type=code&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive&state=b02c34056754881ab1b1d15b4e5bf67d
Log in and authorize rclone for access
Enter verification code> ----------------------------------------------
# 브라우저에서 복사한 코드를 붙여넣습니다.
--------------------
[djj9405]
client_id =
client_secret =
token = {"access_token":"---------------------------------------------------------------------------------------------------------------------------------------------------------------","token_type":"Bearer","refresh_token":"----------------------------------------------","expiry":"2017-03-17T23:39:37.623176291+09:00"}
--------------------
y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d> y
# 설정이 맞느냐고 물어보는데 맞으니 y 를 눌러줍니다.
Current remotes:
Name Type
==== ====
djj9405 drive
e) Edit existing remote
n) New remote
d) Delete remote
s) Set configuration password
q) Quit config
e/n/d/s/q> q
# 설정이 끝났음으로 q 를 눌러서 종료해 줍니다.
root@u5pvr-debian:~#
이렇게 구글드라이브 등록이 끝났습니다.
3. 구글 드라이브 마운트하기
아래 명령을 통해서 마운트 합니다.
# 마지막에 2번에서 설정한 공유이름: (뛰우기) 마운트할 폴더를 입력합니다.
# 데몬형식으로 도는게 아니기 때문에 사용자 쉘이 종료되어도 작동 유지를 위해서 nohup 과 & 을 사용합니다.
nohup rclone mount --allow-non-empty --allow-other --uid 1023 --gid 1028 --max-read-ahead 2G --acd-templink-threshold 0 --checkers 16 --quiet --stats 0 djj9405: /mnt/gdrive/ &
# 한편, 안드로이드 파일 권한과 맞아야함으로 어쩔 수 없이 uid 와 gid는 1023 1028 이 되어야 합니다.
위 명령어로 실행 시켜본 결과는 아래와 같습니다.
혹시나 무슨 문제가 있어서 프로그램이 강제 종료될 시에 현 작업폴더에서 nohup.out 을 참고하여 에러 내용을 확인하시길 바랍니다.
root@u5pvr-debian:~# nohup rclone mount --allow-non-empty --allow-other --uid 1023 --gid 1028 --max-read-ahead 2G --acd-templink-threshold 0 --checkers 16 --quiet --stats 0 djj9405: /mnt/gdrive/ &
[1] 29639
root@u5pvr-debian:~# nohup: ignoring input and appending output to 'nohup.out'
root@u5pvr-debian:~#
root@u5pvr-debian:/mnt/gdrive# ls
call_record imei ?????? torrent ????????? ?????? ??????????????? ???????????????
# 정상적으로 구글드라이브에 있는 파일이 보입니다.
4. 구글 드라이브 마운트한 것 사용해보기
기본적으로 리눅스 펌웨어에는 FTP 가 내장되어 있습니다. SAMBA 의 경우 안드로이드 자체에 내장이 되어 있습니다.
(삼바는 리눅스 패키지로 설치를 하지 않은 이유가 삼바는 내부망 전용이기 떄문에 안드로이드 자체 삼바로도 기능이 충분하다고 생각하기 때문입니다.)
이번에는 FTP 로 접근을 시도해 보도록 하겠습니다.
정상적으로 제 클라우드에 있는 파일들이 보입니다.
클라우드에서 FTP 를 통해 로컬로 파일을 다운받아보았습니다.
평소에 7MB/s 정도 나오는데 오늘은 약간 낮게 나오네요.
업로드도 마찬가지 입니다.
통상 사용하는 CPU 사용량은 아래와 같습니다.
4K VP9 60FPS 영상을 구글 드라이브를 /mnt/gdrive 에 마운트 하여 테스트를 해 보았는데 rclone 의 CPU 사용량이 올라가서 재생이 한번씩 끊기는 현상이 있었습니다. 이 부분은 최적화 할 수 있는 부분인지 체크를 해보고 있습니다.
안드로이드에서는 아래와 같이 사용이 가능합니다. 아쉬운점은 미디어 센터에서는 보이지 않는다는 점이네요.
ES 파일탐색기를 통해 /mnt/gdrive 로 접근하여 에이핑크 영상 재생해 보았습니다.
사진으로 보여드렸지만 재생이 매끄럽게 되다가 한번씩 멈춤현상이 있습니다.
rclone CPU 사용량 때문이네요..
다음은 Kodi 에서 사용기입니다.
코디의 경우 내장 디스크 를 선택하고 /mnt/gdirve 로 이동하면 됩니다.
아래처럼 정상적으로 파일이 보입니다.
똑같이 에이핑크 영상을 돌려 보았습니다. (4K VP9 60FPS)
코디의 경우 초반에 버퍼링이 쬐끔 걸리지만 재생이 잘 되었습니다.
5. 부팅시 자동 마운트 하기
이 부분은 유선랜이 꼽혀있지 않은 분들은 불안정한 방법입니다.
무선랜의 경우 연결이 될때까지 딜레이가 있기 떄문에 리눅스 부팅과정 중 네트워크가 물려 있지 않으면 에러가 발생하기 떄문입니다.
그러나 유선랜의 경우에는 리눅스 부팅이 되기 전에 네트워크가 붙기 때문에 문제가 없습니다.
(차후에 네트워크 상태를 확인하여 실행하는 스크립트를 만들어 보도록 하겠습니다.)
기본적으로 /etc/rc.local 파일을 사용하여 부팅 시 자동실행을 하게 합니다.
nano /etc/rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
# hostname
/etc/init.d/hostname.sh start
# google drive mount
mkdir /mnt/gdrive
su root -c "rclone mount --allow-non-empty --allow-other --uid 1023 --gid 1028 --max-read-ahead 2G --acd-templink-threshold 0 --checkers 16 --quiet --stats 0 djj9405: /mnt/gdrive/ &"
exit 0
테스트를 해 본 결과 정상적으로 작동하며 특이사항은 없습니다.
이 부분을 init 스크립트를 통해 rc 로 등록이 가능하도록 가이드를 찾는 중입니다.
+ 추가 재생이 잘 되네요..
http://cafe.naver.com/mk802/20390
감사합니다.
'AndroidOverLinux' 카테고리의 다른 글
U5PVR FTP 서버 설정하기 및 사용하기 (0) | 2017.04.01 |
---|---|
U5PVR Plex Media Server 3편 플러그인 추가하기 (2) | 2017.03.29 |
U5PVR Plex Media Server 2편 기기연동하기 (0) | 2017.03.28 |
U5PVR Plex Media Server 1편 초기설정하기 (0) | 2017.03.28 |
U5PVR 리눅스 펌웨어 기본 패키지 (Plex, TVheadend, FTP, Torrent, minidlna, shairport-sync) (4) | 2017.03.24 |
댓글