본문으로 바로가기


에 rclone 설치부터 구글드라이브 마운트까지 했었다.


나스 부팅후 수동으로 매번 스크립트를 실행해주는 불편함이 생기므로, 

부팅시 마운트, 그리고 종료시 마운트 해제되도록 해보자.


사실 , 터미널에서는 잘되나, 스케줄러에 등록해서 실행시 되지 않고 


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


이런 오류 발생, 당연, 부팅시 실행하도록 해도 되지 않았다.

1주이상을 고생고생.. ㅠㅠ


https://forum.rclone.org/t/rclone-mount-error-google-drive/7646


에 질문을 올렸고, 친절한 답변을 얻었다.


fusermount의 PATH도 주었으나, 부팅이나 스케줄러에서 시스템권한으로 실행시에 경로 문제가 생기는 것 같다.


어쨋든 답변대로 하니 잘된다.


DSM 6.x에서는 이 문제가 없다. fusermount 경로가 /bin 아래이며 /bin은 시스템 기본 PATH에 되어있기 때문에

위와 같은 Fatal error 발생하지 않으므로 그냥 패쓰한다.



1. Start stop 스크립트 작성


BT싱크 https://gist.github.com/avh4/7227373


참고


부팅시 마운트, 종료시 언마운트 (나스는 자동으로 언마운트를 한다. 하지만, 이게 어떤 알고리즘으로 안전히 언마운트를 시키는지 알지 못하기때문에)


S99mount.sh 스크립트는

/usr/syno/etc/rc.d/S99mount.sh 아래에 두고 755로 권한 변경해준다.

S99는 시작스크립트라는 표현이고 99는 순서상 마지막, rc.d 아래에 S01 S12 등 있는데

맨 마지막에 하라는 번호로 붙인것이다.


S99mount.sh

#!/bin/sh

# Mount/Unmount disk , cloud, etc

# put this script /usr/syno/etc/rc.d/S99mount.sh

# chmod 755 /usr/syno/etc/rc.d/S99mount.sh

#부팅시 자동 마운트, 종료시 자동 언마운트되도록 한다.

#따라서 터미널에서 이 스크립트를 실행한다고 동작하지는 않는다. start, stop 액션이 이루어질때 행하는 스크립트이다.

#그것과 상관없이 스크립트가 실행되게 하고자 한다면

#/volume1/pvr/script/rclone_gdmount.sh 이런식의 한줄, 혹은 바로 명령줄을 주면 된다.


export LANG=en_US.UTF-8


case "$1" in

    start)

        echo "Mounting Google Teamdrive"

        /volume1/pvr/script/rclone_gdmount.sh

         sleep 1

        ;;

    stop)

        echo "Unmounting Google Teamdrive"

        /volume1/pvr/script/rclone_unmount.sh

        sleep 1

        ;;

esac

exit 0



/usr/syno/etc/rc.d 디렉토리는 웹스테이션에서 접근이 어려우니,

마운트 스크립트는 웹스테이션에서 수정하기 쉽게  /volume1/pvr/script 아래에 두고 불러오도록 한다.


2. 마운트, 마운트해제 스크립트

기존 rclone 구글드라이브 마운트하기 게시글을 참고해서 작성

마찬가지로 권한은 755


rclone_gdmount.sh


#!/bin/sh

#로그 보기구문 sh /volume1/media/mount.sh >> /somewhere/you/can/easy/acces/MountScript.log 2>&1

# --log-file=/volume1/pvr/rclone.log>>/volume1/pvr/rclone.log &


# 콘솔에서는 PATH가 잡혀있어서 마운트가 문제없지만,

# 스케줄러에서 실행시 

# fusermount 에러가 발생한다. 스케줄러가 인지하는 fusermount PATH경로가 잡혀있지 않은듯하다.

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

# 스크립트안에서 먼저 PATH를 선언해준다.

# dsm5.x,  export PATH=$PATH:/usr/syno/bin/fuse


export PATH=$PATH:/usr/syno/bin/fuse


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

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

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

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



그리고 마운트 해제

rclone_unmount.sh


#!/bin/sh

#unmount GoogleDrive Folder

#-uz lazy unmount

#view fusermount help : -h

#add PATH fusermount

#in consol, PATH=$PATH:/usr/syno/bin/fuse

#copy mounting scriptfile to /usr/syno/etc/rc.d/S00mountcustom.sh

#S00mountcustom.sh chmod 755 & +x

#mount script is below

# #!/bin/sh

# rclone mount --umask 0 --allow-other --read-only remote:/TV /volume1/Gdrive/TV &


#this is unmount script


umount /volume1/Gdrive/TV

umount /volume1/Gdrive/Ani

umount /volume1/Gdrive/movie1

umount /volume1/Gdrive/movie2


원래는 fusermount -u 마운트위치

로 했었는데 기본 언마운트 명령인 umount 로 해도 문제가 없어서 짧게 요렇게씀.


이제 재부팅해보면 자동으로 마운트가 잘되어있다.


댓글을 달아 주세요