如何从终端访问USB闪存驱动器?


250

我只能访问命令行。
我需要将数据(在用户文件夹上)备份到笔(USB DOK)上。

  • 如何手动安装闪存驱动器?
  • 复制命令应该是什么?

Answers:


348

1.查找驱动器叫什么

您将需要知道调用该驱动器以进行安装。为此,请执行以下操作之一(按我的喜好排序):

lsblk
sudo blkid
sudo fdisk -l

您正在寻找的分区应该类似于:/dev/sdb1。您拥有的磁盘越多,字母可能越高。无论如何,找到它并记住它的名字。

2.创建安装点(可选)

这需要挂载到文件系统中的某个位置。如果您很懒,并且在那里没有挂载其他东西,通常可以使用/ mnt /,否则您将要创建一个新目录:

sudo  mkdir /media/usb

3.安装!

sudo mount /dev/sdb1 /media/usb

完成后,请开火:

sudo umount /media/usb

这个答案将近6年了,虽然它的核心仍然有效,fdisk -l但并不是最人性化的选择。在较高的堆栈中,还存在一些新的机制,这些机制可以以合理和标准的方式安装设备,但这种机制可能并不总是可用。

因此,我在其他答案中添加了一些修饰语。当您阅读此脚注并在台式机系统上进行此操作时,肯定会根据wecac的回答使用udisksctl论点。这种安装方式与台式机安装方式相同(创建自己的/media/$USER/device目录),但是我认为仍然有用于静态安装点的参数,尤其是当您不希望更改路径时。

Udisk也依赖于D-Bus,因此可能并非在所有地方都可用。


这种方法的主要缺点是它将设备作为root挂载。如果设备是FAT格式,则用户将无法对其进行写入。/ media / $ USER / device挂载点也将始终相同
eMBee '18

45

安装pmount。将磁盘挂载到/ media /

pmount /dev/sdb1
pumount /dev/sdb1

不需要sudo。用您的特定设备路径替换“ sdb1”。有关更多信息,请参见联机帮助页:

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坚持以只读方式安装我的驱动器时,此方法有效。
乔纳森·兰德鲁姆

12

除了使用标准mount命令(需要root用户)之外,您还可以使用标准用户udisksdbus与标准用户一起安装驱动器。

为此,首先了解有关驱动器的一些知识很有用(但不是必需的):

  1. 它是什么设备(即/dev/sdb1
  2. 它使用什么文件系统。

了解这些知识后,您可以使用简单的命令从命令行安装驱动器。

gdbus call --system --dest org.freedesktop.UDisks --object-path /org/freedesktop/UDisks/devices/<device> --method org.freedesktop.UDisks.Device.FilesystemMount "<filesystem>" []

如果安装成功,则此调用应回显其安装路径。

要卸载以这种方式安装的驱动器,可以运行:

gdbus call --system --dest org.freedesktop.UDisks --object-path /org/freedesktop/UDisks/devices/<device> --method org.freedesktop.UDisks.Device.FilesystemUnmount []

注意,这<device>仅仅是通往它的道路的尽头。因此,例如,如果您要安装的是,/dev/sdb2则可以sdb2代替<device>


如果您不知道它是哪个设备或使用哪个文件系统,请不要担心。您可以使用以下小命令轻松地打印出所有这些信息:

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) ).*|\}|.*\{)"

这将打印出如下内容:

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';
    };
  };
};

那些已经IdUsage = 'filesystem'可以使用上面的命令挂载的文件。

这意味着,例如,如果我要安装设备“ USB DRIVE”,我将运行以下命令

gdbus call --system --dest org.freedesktop.UDisks --object-path /org/freedesktop/UDisks/devices/sdb1 --method org.freedesktop.UDisks.Device.FilesystemMount "vfat" []

这些命令全部使用dbus消息传递系统工作,Nautilus与其他文件管理器自动挂载事物的方式相同。在这些命令中,我们正在发送各种对象(即,/org/freedesktop/...要求它们安装和卸载某些设备的消息。根据是否已授予权限,它们可能会或可能不会这样做PolicyKit

使用类似的命令,可以控制Ubuntu中几乎所有用户体验的各个方面,并模拟大多数系统程序和功能(例如,关机,更改音量等)。


1
2015年的方式是gdbus introspect --system --dest org.freedesktop.UDisks2 --object-path /org/freedesktop/UDisks2/drives --recurse --only-properties
Nick Alexander

12

udisksctl从package =中使用udisks2(在Ubuntu和Debian中)。程序是:

  1. 使用以下命令找到要安装的块设备的ID 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
    

    从其大小来看,/dev/sdc1似乎是我要安装的USB驱动器。

  2. 使用udisksctl安装该设备。请注意,-b== --block-device(以减少键入),但我更喜欢文档较长的选项:

    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.
    

在下面回答Hans Deragon的评论:您也可以告诉udisksctldo --no-user-interaction。它不会尝试对用户进行身份验证,这通常是“可行的”:

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.

什么是--object-path它询问?
CMCDragonkai

5

您也可以借助USBmount在Ubuntu Server上自动挂载USB设备。

在开始安装之前,请确保您运行apt-get update / upgrade:

sudo apt-get update && sudo apt-get upgrade

现在从存储库安装USBmount:

sudo apt-get install usbmount

USBmount将所有USB驱动器装入/media/usb*(usb0,usb1,usb2 ...)

现在插入USB驱动器,并等待其检测和安装。只要主机操作系统支持文件系统,就应该安装它。

要验证USB驱动器是否已正确安装,您可以df -h用来查看所有可用的驱动器及其各自的安装点

要卸载驱动器,可以使用umount。

sudo umount /media/usb0

3

很简单 当我想在终端中使用USB驱动器时,请执行以下操作:

/media其中创建一个文件夹:

mkdir /media/mountDrive 

该文件夹将用于安装点。使用以下命令:

sudo mount /dev/sdd1 /media/mountDrive 

sdd1是我的USB的第一个分区。然后,您可以导航到已经安装了的文件夹

cd /media/mountDrive

如果要列出驱动器中的文件,则可以使用ls命令。

要卸载驱动器,您可以使用

sudo umount /dev/sdd1

请注意,在我的系统中,usb驱动器为/dev/sdd1,但在您的系统中可能有所不同。要了解它是什么,请使用df命令查看当前连接的所有磁盘。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.