본문으로 바로가기

1. rclone 다운로드 및 스테이션으로 이동

https://rclone.org/downloads/



Xpenology DSM 4.x까지는 32비트이고, DSM5.x부터는 64비트인듯하다.


나는 DSM5.2 이므로

386-32 linux 용을 받아도 되고, 64비트도 된다. 타블로그 참고시 386으로 되어있었다.


압축을 풀어서 rclone 파일 하나만을 웹스테이션을 띄워서 폴더에 투척하자

나 같으면 /volume1/pvr 폴더에 넣었다고 가정하고

ssh 로 /volume1/pvr로 이동

cd /volume1/pvr

cp rclone /usr/bin 복사

chmod 755 /usr/bin/rclone 실행권한변경

chown root:root /usr/bin/rclone 소유권변경

ls -al /usr/bin/rclone 파일 확인


2. rclone으로 구글드라이브 접근환경파일 생성

아래 블로그에 설명이 아주 잘 되어 있다. 그냥 따라하면된다. 아래 주의 부분 읽고.


설치방법 https://blog.naver.com/binsoore/221214962893


rclone 1.44 버전 기준


설치과정중 참고. 대부분 그냥 엔터치면됨.

클라우드 선택시 12번 google drive선택


아래 단계서부터 중요.

..

.

.

.

Edit advanced config? (y/n) 고급설정할래?

y/n> n

아니오 한다.


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

N

아니오 한다.


그럼 사이트 주소를 띄우며 코드를 요구한다.

사이트 주소를 복사해서 웹브라우저에 띄우고 인증코드를 받는다.


Enter verification code>   여기에 코드입력엔터

Configure this as a team drive?

팀드리이버냐?

현재 마운트하고자 하는 것이 팀드라이브면 y , 그냥 개인드라이브면 n 한다.

나는 팀드라이브므로,

y

한다.



파일 백업방법 http://blog.naver.com/kdsong/221236770226


설정과정단계에서 접근할 클라우드가 엄청많이 리스트될 것인데 구글 드라이브의 경우 위 블로그에서는 11번이지만 , rclone버전이 1.42인가 그래서 12번이 구글드라이브일 것이다.


주의.

구글 드라이브선택후 다음단계는 팀드라이브인지 묻는 창에서 팀드라이브접근을 하고자 한다면 y를 반드시 해주길. 그렇지 않으면 개인드라이브로 접근설정이 되니까.


웹스테이션에서 구글드라이브 접근이 되도록 마운트해볼려고 했지만 fuse 파일마운트시스템인지,, 요것이 제대로 안되는 듯하여 실패.


--> 아래 4번부터 대로 하면됨.



나의 DSM버전은 DSM 3615sx 5.2.5967 update8 이다.


3. 백업하기 - 명령, 스크립트


기본적으로 터미널에서 한번 테스트해본다.

 rclone에서 초기 설정시 대상이름을 remote 기본값으로 하였기때문에 원격지구글드라이브 이름은 remote 이다.

rclone copy 나스의복사대상 remote:구글드라이브에 업로드할 폴더위치


rclone copy /volume1/TV remote:/TV


볼륨1하위 TV 폴더를 구글의 루트하위TV에 올리겠다는 말이다.

참고로, 팀드라이브일경우에, 팀드라이브를 웹에서 오픈하면 나의 닉네임이 먼저 존재하고 그걸 열면 실제 나의 디렉토리가 나온다. 여기가 나의 루트 위치이다.


remote:/닉네임/TV 가 아니라 remote:/TV란 말.


만약 구글드라이브에 TV폴더가 없다면 자동으로 만들어 올린다.


나는 copy명령으로 하였다. 

나스에서 복사하여 구글로 올리는 방법으로.


위 블로그에도 설명이 되어있지 싶은데 copy로 할경우, 

나스에서 구글드라이브(이하 gdrive)로 업로드시 , gdrive에 이미 파일이 존재하면 SKIP 한다. 따라서 나스에서 변경된 파일만 백업하게 된다.


폴더하위모두를 백업하므로 일일이 지정하지 않아도 되어서 편한것 같다.


파일을 아예 이동하고자 한다면 copy대신 move를 쓰면 되겠다.


rclone

rclone 스크립트

/volume1/pvr/rclone.sh 로 만들어 주었다.


rclone 는 /usr/bin 아래로 복사했기때문에 (윈도우의 windows\system32경로에 해당) 어느 위치에서든 실행이 되므로 rclone의 절대경로를 굳이 줄 필요는 없다.


쉘이 bash가 아니고 ash 나 sh 로 해야 동작이 되었다.



1
2
3
#!/bin/sh
 
rclone copy /volume2/video/Ani remote:/Ani



터미널에서는 root 환경이라서 그냥 되지만

만약 작업스케줄러에서 할경우 root권한으로 실행하도록 하는것은 맞지만 root 환경으로 되는게 아니기때문에(로그인한 계정환경)

rclone 설치하면서 생성한 구글드라이버 정보를 담고있는 환경설정파일을 지정해주어야 되었다.


http://www.2cpu.co.kr/nas/18714


따라서 아예 이렇게 하는게 좋다.


/volume1/pvr/rclone.sh



1
2
3
#!/bin/sh
 
rclone --config /root/.config/rclone/rclone.conf copy /volume2/video/Ani remote:/Ani




작업스케줄러에 등록시는 스크립트로 실행하도록

sh /volum1/pvr/rclone.sh 로 해도 되고


아니면, 명령구문으로 아예 주어도 되겠다.


rclone --config /root/.config/rclone/rclone.conf copy /volume2/video/Ani remote:/Ani


4. 구글드라이브를 마운트(읽기전용), 언마운트


rclone --config /root/.config/rclone/rclone.conf mount --umask 0 --allow-other --read-only remote:/TV /volume1/Gdrive/TV &


DSM 5.x에서는 fusermount 의 위치가 /usr/syno/bin/fuse 라서 아래 회색박스의 문제가 생기므로 PATH를 해줘야한다.

DSM6.x는 fusermount 가 /bin 아래이다. 그래서 기본 PATH아래 있기때문에  에러발생하지 않으므로 DSM6.x 사용자는 회색박스는 건너띌것.


명령을 내리자.

Fatal error: failed to mount FUSE fs: fusermount: exec: "fusermount": executable file not found in $PATH


에러를 뿜는다. 
https://blog.naver.com/binsoore/221214962893 블로그에도 댓글에 달았지만 해결과정을 남겨둔다.

여러 삽질 끝에 위 구문으로 돌아가서, 
executable file not found in $PATH 패쓰에 실행파일이 존재하지 않는다 는 내용이다.

fuse명령이 사용되는 줄 첨에 알고
station> find / -name fuse 

이것에 집착하였다가,
fuse가 사용하는 마운트 프로그램이 fusermount 라는 것을 알았다. 이것이 마운트에 관여.

그래서
station> find / -name fusermount
/usr/syno/bin/fuse/fusermount

과 같다. 저기서 fusermount는 실행파일이고 이것을 포함한 폴더는 /usr/syno/bin/fuse
이다.

나스의 경로를 보자
station> $PATH
-ash: /sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin:/opt/bin:/opt/sbin: not found
와 같이 나온다. 이 경로에 /usr/syno/bin/fuse 가 없다. 

그래서 
station> fusermount 해보면
당연 에러가 뜬다. 
/usr/syno/bin/fuse/fusermount 이렇게 절대경로로 해야지 실행이 되는것이다.

그래서 rclone이 수행되기 위해서 아무경로에서나 fusermount가 실행되도록 해야하므로
PATH에 추가를 해주자.
$PATH 는 기존 패스를 말한다. 기존 패스에 추가를 하는 것이므로 아래와 같이 작성한다.

station> PATH=$PATH:/usr/syno/bin/fuse

이제 다시 패스를 확인해보자.
station> $PATH
-ash: /sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin:/opt/bin:/opt/sbin:/usr/syno/bin/fuse: not found

이렇게 잘 추가되어 있음을 확인할 수 있다.

station> pwd 현재경로확인
/root
station> fusermount
fusermount: missing mountpoint argument

이제 에러는 없고 argu 를 넣어라, 즉 fusermount 에 대한 인수를 넣어서 실행하라고 뜬다.


이제 구글드라이브를 마운트해보자.

나는 팀드라이브에 TV 라는 폴더에 나스의 TV자료들을 모두 백업했다.
이제 나스의 /volume1/Gdrive/TV 폴더에 팀드라이브의 /TV 폴더를 마운트해보겠다.

구글드라이브내용이다.


터미널에서 마운트를 해본다. 읽기전용옵션이다.

rclone --config /root/.config/rclone/rclone.conf mount --umask 0 --allow-other --read-only remote:/TV /volume1/Gdrive/TV &

그리고 /volum1/Gdrive/TV 를 리스팅해본다.

1
2
3
4
5
6
7
8
9
10
11
12
Jinistation> rclone mount --umask 0 --allow-other --read-only remote:/TV /volume
1/Gdrive/TV &
Jinistation> ls /volume1/Gdrive/TV
@eaDir
Life01.mp4
[JTBC] 라이프.E02.180724.720p-NEXT.mp4
그것이 알고 싶다 E1130 180721 권력과 조폭 - 파타야 살인사건 그 후 1년 720p HDTV x264-RAiN.mkv
드라마
배한성의 고전열전 [101018]~[140413] 삼국지 수호지 난중일기.iso
예능
 



구글드라이브와 동일하게 마운트 잘되었다.



언마운트는


1
station> fusermount -/volume1/Gdrive/TV/



참고한 블로그에서 언마운트는 fusermount -uz 로 z 옵션을 추가로 주었는데 lazy 즉 느리게 안전히 언마운트하라는 옵션이다. -uz로 하니 언마운트가 되지 않아서(한참을 기다려야되는건지..)


그냥 -u만 주니 바로 언마운트가 되었다.


5. 부팅시 자동 마운트 스크립트


전에 사진폴더 마운트하기에 썻던 방식으로 sh 스크립트를 만들어서 부팅 폴더에 넣어주면 될것 같다.

http://3jini.tistory.com/70

를 참고해서


vi /volume1/pvr/S00mountcustom.sh

아래 내용으로 만들어보자. 


1
2
#!/bin/sh
rclone mount --umask 0 --allow-other --read-only remote:/TV /volume1/Gdrive/TV &




저장을 하고, 

이제 이 파일의 권한을 chmod로 변경해주고( 755, +x ) 

부팅시 시작될 수 있도록 /usr/syno/etc/rc.d 아래로 복사해준다.


1
2
3
4
5
6
7
8
9
10
11
station> ls -al /volume1/pvr/S00mountcustom.sh
----------    1 admin    users           90 Aug 10 14:51 /volume1/pvr/S00mountcustom.sh
station> chmod 755 /volume1/pvr/S00mountcustom.sh
station> chmod +/volume1/pvr/S00mountcustom.sh
station> ls -al /volume1/pvr/S00mountcustom.sh
-rwxr-xr-x    1 admin    users           90 Aug 10 14:51 /volume1/pvr/S00mountcustom.sh
station> cp /volume1/pvr/S00mountcustom.sh /usr/syno/etc/rc.d/
station> cat /usr/syno/etc/rc.d/S00mountcustom.sh
#!/bin/sh
rclone mount --umask 0 --allow-other --read-only remote:/TV /volume1/Gdrive/TV &
 




여러개의 폴더를 마운트 하고자 한다면 sh 파일에 각각 추가해주면 될 것이다.


구글 드라이브 마운트를 해주면 좋은점은,

kodi나 기타 앱에서 이 마운트된 폴더를 로컬폴더처럼 바로 지정할 수 있기때문에 편하다.

마운트를 하지 않는다면 kodi 에서 구글드라이브 애드온을 설치해서 접근하는 방법으로 해야하므로 폴더접근시 몇단계 들어가야하는 불편함, 애드온 설치의 필요 등의 단점이 있다. 



여기서 문제가 하나 있는데 부팅시에 저 구글 드라이브를 마운트하지못하면(네트워크 연결이 안되었거나, 구글드라이브에 문제가 생겼을경우) 저 스크립트대로 마운트할때까지 기다리지 않을까? 그럼 나스 부팅이 완료가 안되지 문제가 생길것도 같다.


그리고 , 읽기 쓰기 되도록

rclone mount --allow-other remote:/TV /volume1/Gdrive/TV &

해보았으나, 웹스테이션에서는 복사된것으로 보이나, 콘솔에서 이 순간 에러를 나타내었다.

그리고 실제 구글드라이브에는 반영이 되지 않았다.


따라서 

rclone으로 백업실시하고

구글마운트는 읽기 모드

로 하는것이 맞는것 같다.


이제 자동 백업스크립트만 구축하면 되겠다.





댓글을 달아 주세요

  1. 토마마토 2018.11.10 15:09 신고

    으아..... 머리터질꺼같아요;;;

    초보를 위한 상세하고 아주아주 쉬운 설명은 없을까요 ㅠㅠ

    • BlogIcon HappyChild 2018.11.13 14:47 신고

      어느부분이 어려우신지 말씀해주시면 상세히 알려드리겠습니다.
      rclone설치(네이버 블로그 링크) 부터 차근히 해보세요.