rclone mount을 autofs에 적용하는 방법을 기술한다.
rclone 으로 myremote remote 설정을 추가했다고 가정한다.
설치
$ sudo apt install autofs fuse3
rclonefs
rclone mount helper 스크립트는 한글 locale 에서 제대로 동작하지 않는다. 아래와 같이 수정해서 /usr/local/bin/rclonefs로 저장한다.
#!/bin/bash
remote=$1
mountpoint=$2
shift 2
# Process -o parameters
while getopts :o: opts; do
case $opts in
o)
params=${OPTARG//,/ }
for param in $params; do
if [ "$param" == "rw" ]; then continue; fi
if [ "$param" == "ro" ]; then continue; fi
if [ "$param" == "dev" ]; then continue; fi
if [ "$param" == "suid" ]; then continue; fi
if [ "$param" == "exec" ]; then continue; fi
if [ "$param" == "auto" ]; then continue; fi
if [ "$param" == "nodev" ]; then continue; fi
if [ "$param" == "nosuid" ]; then continue; fi
if [ "$param" == "noexec" ]; then continue; fi
if [ "$param" == "noauto" ]; then continue; fi
if [[ $param == x-systemd.* ]]; then continue; fi
trans="$trans --$param"
done
;;
\?)
echo "Invalid option: -$OPTARG"
;;
esac
done
# exec rclone
trans="$trans $remote $mountpoint"
# NOTE: do not try "mount --daemon" here, it does not play well with systemd automount, use '&'!
# NOTE: mount is suid and ignores pre-set PATHs -> specify explicitely
PATH=$PATH rclone mount $trans /dev/null 2>/dev/null &
# WARNING: this will loop forever if remote is actually empty!
until [ "`LANG=C \ls -l $mountpoint`" != 'total 0' ]; do
sleep 1
done
저장 후 실행 권한을 준다.
$ sudo chmod +x /usr/local/bin/rclonefs
autofs 설정
cloud.autofs
아래 내용으로 /etc/auto.master.d/cloud.autofs파일을 만든다.
/cloud /etc/auto.master.d/auto.rclone
auto.rclone
아래 내용을 참고로 /etc/auto.master.d/auto.rclone 파일을 만든다.
myremotedrive -fstype=fuse.rclonefs,config=/home/$USER/.config/rclone/rclone.conf,allow-other,uid=$UID :myremote:
설정 적용
autofs를 다시 시작한다.
$ sudo systemctl restart autofs.service
테스트
아래 명령으로 myremote 내용이 잘보이는지 확인해본다.
$ ls /cloud/myremotedrive