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