当前位置: 首页>>技术教程>>正文


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

, , ,

问题描述

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

  • 我如何手动安装闪存驱动器?

  • 复制命令应该是什么?

最佳解决方法

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这样的东西并不是user-friendly选项中最多的。高级堆栈中还有一些新的机制,用于以合理和标准的方式安装设备,而这些设备可能并不总是可用的。

所以我从其他答案中添加了一些波兰语。当你阅读这个脚注并且你在桌面系统上这样做时,根据wecac的回答,肯定有使用udisksctl的论据。这与桌面的安装方式相同 – 创建您自己的/media/$USER/device目录 – 但我认为仍然有静态安装点的参数,特别是当您不希望路径更改时。

Udisk也依赖于D-Bus,因此可能无处不在。

次佳解决方法

安装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命令(需要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和其他文件管理器auto-mount的东西一样。在这些命令中,我们发送了各种对象(即/org/freedesktop/...消息,要求他们装载和卸载某些设备。根据PolicyKit中给出的权限,它们可能会也可能不会这样做。

使用类似的命令,可以控制Ubuntu中几乎所有的体验,并模拟大多数系统程序和功能(即关机,音量变化等)。

第四种方法

对于Ubuntu 14.04,您可以使用udisksctl

1.找出块设备

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

2.尺寸/dev/sdc1似乎是我想要安装的USB设备。

user@machine:~$ udisksctl mount -b /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.

第五种方法

这很简单。当我想在终端中使用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命令查看当前连接的所有磁盘。

第六种方法

您也可以借助USBmount在Ubuntu服务器上自动安装USB设备。

确保在开始安装之前运行apt-get更新/升级:

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查看所有可用的驱动器及其各自的安装点

对于un-mount驱动器,您可以使用umount。

sudo umount /media/usb0

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/185.html,未经允许,请勿转载。