에 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 등 있는데
맨 마지막에 하라는 번호로 붙인것이다.
#!/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
#!/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 &
그리고 마운트 해제
#!/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 로 해도 문제가 없어서 짧게 요렇게씀.
이제 재부팅해보면 자동으로 마운트가 잘되어있다.