Skip to content

Automount Google Drive with rclone

First of all we must create our mount path

mkdir -vp /mnt/gdrive

Here is an example how to build an automounter of an rclone setup with /etc/init.d/rclone-gdrive

#!/sbin/openrc-run
# /etc/init.d/rclone-gdrive

description="Mount Google Drive via rclone (FUSE) at /mnt/gdrive"

command="/usr/bin/rclone"
command_user="wuseman:wuseman"

# No --daemon (OpenRC backgrounds), and your rclone doesn't support --foreground here
command_args="mount --allow-non-empty --allow-other gdrive:/ /mnt/gdrive"

pidfile="/run/rclone-gdrive.pid"

start_stop_daemon_args="--background --make-pidfile \
  --stdout /var/log/rclone-gdrive.out \
  --stderr /var/log/rclone-gdrive.err"

depend() {
  need net
  after dbus
}

start_pre() {
  checkpath -d -m 0755 -o wuseman:wuseman /mnt/gdrive
  checkpath -f -m 0644 -o wuseman:wuseman /var/log/rclone-gdrive.out
  checkpath -f -m 0644 -o wuseman:wuseman /var/log/rclone-gdrive.err

  mountpoint -q /mnt/gdrive && return 0

  local i=0
  while ! ip route show default 2>/dev/null | grep -q .; do
    i=$((i+1))
    [ "$i" -ge 30 ] && { eerror "No default route after 30s"; return 1; }
    sleep 1
  done

  [ -e /dev/fuse ] || { eerror "/dev/fuse not present"; return 1; }
}

start_post() {
  local i=0
  while ! mountpoint -q /mnt/gdrive; do
    i=$((i+1))
    if [ "$i" -ge 20 ]; then
      eerror "Not mounted after 20s"
      eerror "stderr tail: $(tail -n 3 /var/log/rclone-gdrive.err 2>/dev/null | tr '\n' ' ')"
      return 1
    fi
    sleep 1
  done
  einfo "Mounted /mnt/gdrive"
}

stop() {
  ebegin "Unmounting /mnt/gdrive"

  if mountpoint -q /mnt/gdrive; then
    /bin/fusermount -u /mnt/gdrive 2>/dev/null || umount -l /mnt/gdrive 2>/dev/null
  fi

  if [ -f "$pidfile" ]; then
    start-stop-daemon --stop --pidfile "$pidfile" 2>/dev/null
    rm -f "$pidfile"
  fi

  eend 0

Mount rclone-gdrive server to /mnt/gdrive

/etc/init.d/rclone-gdrive start

Unmount and stop rclone-gdrive server

/etc/init.d/rclone-gdrive stop
  • or

Unmount and stop rclone-gdrive server

rc-service rclone-gdrive stop

Add rclone-gdrive to default runlevel

rc-update add rclone-gdrive default