I only have access to the command line.
I need to backup my data (on the user folder) to a pen (USB DOK).
- How can I mount a flash drive manually?
- What should be the copy command?
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It only takes a minute to sign up.
Sign up to join this communityI only have access to the command line.
I need to backup my data (on the user folder) to a pen (USB DOK).
You'll need to know what the drive is called to mount it. To do that fire off one of the following (ranked in order of my preference):
lsblk
sudo blkid
sudo fdisk -l
You're looking for a partition that should look something like: /dev/sdb1
. The more disks you have the higher the letter this is likely to be. Anyway, find it and remember what it's called.
This needs to be mounted into the filesystem somewhere. You can usually use /mnt/ if you're being lazy and nothing else is mounted there but otherwise you'll want to create a new directory:
sudo mkdir /media/usb
sudo mount /dev/sdb1 /media/usb
When you're done, just fire off:
sudo umount /media/usb
This answer is almost 6 years old and while the core of it still works, things like fdisk -l
aren't the most user-friendly options. There are also new mechanisms in higher stacks for mounting devices in a sane and standard way which might not always be available.
So I've added some polish from the other answers. While you're reading this footnote and you're doing this on a desktop system, there definitely are arguments for using udisksctl
, per wecac's answer. This mounts in the same way the desktop does —creating your own /media/$USER/device
directory— but I think there are still arguments for a static mountpoint, especially when you don't want the path to change.
Udisks also relies on D-Bus, so might not be available everywhere.
sudo lsusb -vs 15:2 | grep id
gives idVendor 0x090c Silicon Motion, Inc. - Taiwan (formerly Feiya Technology Corp.)
idProduct 0x1000 Flash Drive
May 18, 2020 at 4:31
dmesg
or something, I found that the drive was unable to power itself up. I just ended up using a different port for the drive. As far as i know there is not a way to mount a drive, whose device driver hasnt created a device file in /dev/
Nov 10, 2022 at 6:12
pmount
/ pumount
Install pmount
. Mounts disks in /media/
pmount /dev/sdb1
pumount /dev/sdb1
No sudo
needed.
Replace "sdb1" with your specific device path. For more information see the manpage:
pmount ("policy mount") is a wrapper around the standard mount program
which permits normal users to mount removable devices without a match-
ing /etc/fstab entry.
pmount is invoked like this:
pmount device [ label ]
This will mount device to a directory below /media if policy is met
(see below). If label is given, the mount point will be /media/label,
otherwise it will be /media/device.
mount
insisted on mounting my drive read-only.
Jun 16, 2018 at 0:05
Use udisksctl
from package=udisks2
(in both Ubuntu and Debian). Procedure is:
Find the ID of the block device you want to mount, using lsblk
:
user@machine:~$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 1.8T 0 disk
├─sda1 8:1 0 19.1M 0 part /boot/efi
├─sda2 8:2 0 1.8T 0 part
└─sda3 8:3 0 16G 0 part [SWAP]
sdb 8:16 0 931.5G 0 disk
├─sdb1 8:17 0 37M 0 part
├─sdb2 8:18 0 15.9G 0 part [SWAP]
└─sdb3 8:19 0 915.7G 0 part /
sdc 8:32 1 14.4G 0 disk
└─sdc1 8:33 1 14.4G 0 part
sdd 8:48 0 1.8T 0 disk
└─sdd1 8:49 0 1.8T 0 part
From its size, /dev/sdc1
seems to be the USB drive I want to mount.
Use udisksctl
to mount the device. Note that -b
== --block-device
(to reduce typing) but I prefer long options for documentation:
user@machine:~$ udisksctl mount --block-device /dev/sdc1
==== AUTHENTICATING FOR org.freedesktop.udisks2.filesystem-mount ===
Authentication is required to mount Kingston DT microDuo 3C (/dev/sdc1)
Multiple identities can be used for authentication:
1. XXXXX,,, (user)
2. ,,, (YYYYY)
Choose identity to authenticate as (1-2): 1
Password:
==== AUTHENTICATION COMPLETE ===
Mounted /dev/sdc1 at /media/user/USBDRIVELABEL.
Addressing Hans Deragon's comment below: you can also tell udisksctl
to do --no-user-interaction
. It does not attempt to authenticate the user, which usually "just works":
user@machine:~$ udisksctl mount --block-device /dev/sdc1 --no-user-interaction
# possibly some complaining here about I/O charset or need to run `fsck`
Mounted /dev/sdc1 at /media/user/USBDRIVELABEL.
In addition to using the standard mount
command (which requires root) you can mount drives using udisks
and dbus
with your standard user.
To do this it is useful (but not required) to know a few things about the drive first:
/dev/sdb1
)Knowing these you can use a simple command to mount a drive from the command line.
gdbus call --system --dest org.freedesktop.UDisks --object-path /org/freedesktop/UDisks/devices/<device> --method org.freedesktop.UDisks.Device.FilesystemMount "<filesystem>" []
this call should echo the path it is mounted at if the mount succeeds.
To unmount drives mounted in this way you can run:
gdbus call --system --dest org.freedesktop.UDisks --object-path /org/freedesktop/UDisks/devices/<device> --method org.freedesktop.UDisks.Device.FilesystemUnmount []
N.B. the <device>
is simply the end of the path to it. So for example if what you want to mount is at /dev/sdb2
then you would put sdb2
in place of <device>
.
If you do not know which device it is or what filesystem it uses do not fear. You can easily print out all that information with this little command:
gdbus introspect --system --dest org.freedesktop.UDisks --object-path /org/freedesktop/UDisks/devices --recurse --only-properties | grep -E "(readonly .+ (IdLabel|IdType|Device(IsMounted|IsDrive|File) ).*|\}|.*\{)"
This will print out something like this:
node /org/freedesktop/UDisks/devices {
node /org/freedesktop/UDisks/devices/sda {
interface org.freedesktop.UDisks.Device {
readonly s IdLabel = '';
readonly s IdType = '';
readonly s IdUsage = '';
readonly b DeviceIsMounted = false;
readonly s DeviceFile = '/dev/sda';
};
};
node /org/freedesktop/UDisks/devices/sda1 {
interface org.freedesktop.UDisks.Device {
readonly s IdLabel = 'SYSTEM';
readonly s IdType = 'ntfs';
readonly s IdUsage = 'filesystem';
readonly b DeviceIsMounted = false;
readonly s DeviceFile = '/dev/sda1';
};
};
node /org/freedesktop/UDisks/devices/sda2 {
interface org.freedesktop.UDisks.Device {
readonly s IdLabel = 'Windows7';
readonly s IdType = 'ntfs';
readonly s IdUsage = 'filesystem';
readonly b DeviceIsMounted = true;
readonly s DeviceFile = '/dev/sda2';
};
};
node /org/freedesktop/UDisks/devices/sda3 {
interface org.freedesktop.UDisks.Device {
readonly s IdLabel = 'Recovery';
readonly s IdType = 'ntfs';
readonly s IdUsage = 'filesystem';
readonly b DeviceIsMounted = false;
readonly s DeviceFile = '/dev/sda3';
};
};
node /org/freedesktop/UDisks/devices/sda4 {
interface org.freedesktop.UDisks.Device {
readonly s IdLabel = '';
readonly s IdType = '';
readonly s IdUsage = '';
readonly b DeviceIsMounted = false;
readonly s DeviceFile = '/dev/sda4';
};
};
node /org/freedesktop/UDisks/devices/sda5 {
interface org.freedesktop.UDisks.Device {
readonly s IdLabel = '';
readonly s IdType = 'ext4';
readonly s IdUsage = 'filesystem';
readonly b DeviceIsMounted = true;
readonly s DeviceFile = '/dev/sda5';
};
};
node /org/freedesktop/UDisks/devices/sda6 {
interface org.freedesktop.UDisks.Device {
readonly s IdLabel = '';
readonly s IdType = 'swap';
readonly s IdUsage = 'other';
readonly b DeviceIsMounted = false;
readonly s DeviceFile = '/dev/sda6';
};
};
node /org/freedesktop/UDisks/devices/sda7 {
interface org.freedesktop.UDisks.Device {
readonly s IdLabel = '';
readonly s IdType = 'ext4';
readonly s IdUsage = 'filesystem';
readonly b DeviceIsMounted = true;
readonly s DeviceFile = '/dev/sda7';
};
};
node /org/freedesktop/UDisks/devices/sdb {
interface org.freedesktop.UDisks.Device {
readonly s IdLabel = '';
readonly s IdType = '';
readonly s IdUsage = '';
readonly b DeviceIsMounted = false;
readonly s DeviceFile = '/dev/sdb';
};
};
node /org/freedesktop/UDisks/devices/sdb1 {
interface org.freedesktop.UDisks.Device {
readonly s IdLabel = 'USB DRIVE';
readonly s IdType = 'vfat';
readonly s IdUsage = 'filesystem';
readonly b DeviceIsMounted = false;
readonly s DeviceFile = '/dev/sdb1';
};
};
node /org/freedesktop/UDisks/devices/sr0 {
interface org.freedesktop.UDisks.Device {
readonly s IdLabel = '';
readonly s IdType = '';
readonly s IdUsage = '';
readonly b DeviceIsMounted = false;
readonly s DeviceFile = '/dev/sr0';
};
};
};
Those that have IdUsage = 'filesystem'
may be mounted using the above command.
This means that, for example, if i wanted to mount the device 'USB DRIVE' i would run the command
gdbus call --system --dest org.freedesktop.UDisks --object-path /org/freedesktop/UDisks/devices/sdb1 --method org.freedesktop.UDisks.Device.FilesystemMount "vfat" []
These commands all work using the dbus
messaging system, the same way that Nautilus
and other file managers auto-mount things. In these commands we are sending various objects (i.e. /org/freedesktop/...
messages asking them to mount and unmount certain devices. They might or might not do this depending on the permissions one has been given in PolicyKit
.
Using similar commands one can control almost every aspect of ones experience in Ubuntu and simulate most system programs and functions (i.e. shutdown, volume change, etc.).
gdbus introspect --system --dest org.freedesktop.UDisks2 --object-path /org/freedesktop/UDisks2/drives --recurse --only-properties
You can also automatically mount USB devices on Ubuntu Server with the help of USBmount.
Make sure you run apt-get update/upgrade before starting the installation:
sudo apt-get update && sudo apt-get upgrade
Now install USBmount from the repositories:
sudo apt-get install usbmount
USBmount mounts all USB drives in /media/usb*
(usb0, usb1, usb2 ...)
Now plug a USB drive and wait for it to be detected and mounted. As long as the host OS supports the File System it should be mounted.
To verify whether the USB drive was mounted correctly you can use df -h
to view all available drives and their respective mount points
To un-mount a drive you can use umount.
sudo umount /media/usb0
That's simple. When I want to use a usb drive in terminal I do this:
Create a folder in /media
with:
mkdir /media/mountDrive
This folder will be used for the mount point. Use this command:
sudo mount /dev/sdd1 /media/mountDrive
sdd1
is the first partition of my USB. Then you can navigate to folder you already mounted with
cd /media/mountDrive
If you want to list the files in drive you can use the ls
command.
To unmount the drive you can use
sudo umount /dev/sdd1
Note that in my system the usb drive is /dev/sdd1
, but in your system it may be something different. To find out what it is use the df
command to see all disks connected at the present time.
I will not add about how to mount the drive. However since the asker also asked what the best command to use to copy the data over, I will answer that since it was not answered as far as I can tell.
I would recommend first creating a folder on the drive (even if it is empty) to back your stuff into to provide organization. Something along the lines of mkdir <mountpath>/mybackup
should do it.
Second, I would use rsync to copy everything over. Do something along the lines of rsync -r ~/* <mountpoint>/mybackup
. You can also use cp -r
if you want, however, I have found that doing so doesn't do quite everything that you would expect all of the time.