Create TOC

레이블이 autofs인 게시물을 표시합니다. 모든 게시물 표시
레이블이 autofs인 게시물을 표시합니다. 모든 게시물 표시

2020년 11월 18일

Debian/rclone + autofs

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

2019년 6월 18일

Debian/IpTime NAS 2와 autofs

IpTime NAS2의 smb 공유를 autofs 를 이용해 자동으로 mount/unmount 한다.

패키지 설치

$ apt install autofs cifs-utils smbclient

autofs 설정

mount 경로 생성

$ sudo mkdir -p /mnt/cifs

cifs.autofs

아래와 같은 내용으로 /etc/auto.master.d/cifs.autofs파일을 생성한다.

/mnt/cifs /etc/auto.smb --timeout=300

auto.smb 수정

/etc/auto.smb파일을 수정해서 opts에 vers=2.0을 추가한다.

opts="-fstype=cifs,vers=2.0"

인증 파일 생성

접속할 서버 이름으로 인증 파일을 생성한다.

$ sudo mkdir -p /etc/creds
$ sudo touch /etc/creds/192.168.0.100
$ sudo chmod 600 /etc/creds/192.168.0.100

인증 파일의 내용은 아래와 같다.

username=사용자이름
password=비밀번호

autofs 재시작

설정 적용을 하기 위해 autofs.service를 다시 시작한다.

$ sudo systemctl restart autofs.service

테스트

설정이 완료되면 /mnt/cifs/192.168.0.100에 접근하면 공유 목록이 디렉토리로 표시되고, cd 명령으로 해당 공유에 접근할 수 있다. --timeout 설정에 의해 300초가 지나도록 /mnt/cifs를 사용하지 않으면 자동으로 unmount 한다.

마운트가 잘 되지 않는 경우 아래와 같이 디버그 모드로 테스트 해볼 수 있다.

$ sudo systemctl stop autofs.service
$ sudo automount -d -v -f

2016년 6월 22일

Raspbian/autofs 설정

설치

$ sudo apt-get install autofs
$ sudo mkdir /etc/auto.master.d

설정

설정이 끝나면 autofs를 다시 시작해야 한다.

디버깅

설정을 수정하면서 테스트하고 싶을 때는 아래와 같이 디버깅 모드를 사용한다.

$ sudo systemctl stop autofs
$ sudo automount -f -d

usb storage

/media/sda1으로 mount 하도록 설정한다. 아래 설정은 미디어가 vfat으로 포맷된 것을 가정하고 작성되었다.

  1. /etc/auto.master.d/media.autofs파일을 만든다

    /media  /etc/auto.master.d/media --timeout 60
    
  2. /etc/auto.master.d/media파일을 만든다.

    sda1 -fstype=auto,async,nodev,nosuid,umask=000 :/dev/sda1
    

WebDav

/mnt/net/davfs/box으로 mount 하도록 설정한다.

  1. davfs2 패키지를 설치한다.

    $ sudo apt-get install davfs2
    
  2. /etc/davfs2/secrets에 접속할 webdav 정보를 추가한다.

  3. /etc/auto.master.d/davfs.autofs파일을 만든다.

    /mnt/net/davfs /etc/auto.master.d/davfs --timeout 60
    
  4. /etc/auto.master.d/davfs파일을 만든다.

    box -fstype=davfs,uid=${UID},gid=${GID},rw,noexec,user,async :https://dav.box.com/dav