How to auto-mount from command line?

You can use:

udisksctl mount -b device_name

where device_name is the name of a storage device and should look something like /dev/sdb1.

Using lsblk or sudo fdisk -l command you can find out all storage devices attached to your system.


gio mount

gvfs is now listed as deprecated (2018) and you are advised to use 'gio' which is Gnome In Out and part of Glib. See Wikipedia.

For example, to auto-mount a second drive partition; create a bash script with executable permission to run at start-up with the following command:

gio mount -d /dev/sda2

If you are owner of the partition (see chown) you won't need sudo.

To mount an ISO file located for example on ~/ISOs:

gio mount "archive://file%3A%2F%2F%2Fhome%2Fpablo%2FISOs%2Fubuntu-18.04-desktop-amd64.iso"

You could URL encode the path with Python 3 and realpath (to concatenate to archive://:

python -c "import urllib.parse, sys; print(urllib.parse.quote(sys.argv[1] if len(sys.argv) > 1 else sys.stdin.read()[0:-1], \"\"))" "file://$(realpath ubuntu-18.04-desktop-amd64.iso)"

This will mount on /run/user/$(id -u)/gvfs/ .

As an alternative gnome-disk-image-mounter will moount on /media/$USER/.

To unmount use gio mount -u /run/user/$(id -u)/gvfs/archive* (or /media/$USER/, depending the way you mounted).

udisksctl

Listing available devices:

udisksctl status

Mounting is done via:

udisksctl mount -b /dev/sdf

or

udisksctl mount -p block_devices/sdf

Unmounting is done via:

udisksctl unmount -b /dev/sdf

or

udisksctl unmount -p block_devices/sdf

The object-path can be found out by doing:

udisksctl dump

Object of type org.freedesktop.UDisks2.Block seem to be valid as object-patch, the /org/freedesktop/UDisks2/ prefix has to be cut from the path for udisksctl to accept them.

gvfs-mount

Listing available devices can be done with:

gvfs-mount --list

Mounting them can be done with:

gvfs-mount -d /dev/sdf

Unmounting is possible via:

gvfs-mount --unmount /media/user/01234567890

One remaining problem is that I have no idea how to use the gvfs-mount --list output in a mount command, as --list won't show block device names and trying to use the device names it prints in a mount will result in:

Error mounting location: volume doesn't implement mount

Conclusion

While both gvfs-mount and udisksctl will work for the tasks, their interface is impractical as they don't provide human readable status of the disks available, just an overly verbose info dump.


A simple solution that works as required (mounts to /media/{user}/{diskid}) except that it can not list devices but needs to be given the exact, case sensitive, volume label as argument $1

To mount:

DEVICE=$(findfs LABEL=$1) && udisksctl mount -b $DEVICE

To unmount:

DEVICE=$(findfs LABEL=$1) && udisksctl unmount -b $DEVICE