从终端访问设备

从终端访问设备

我有一个闪存驱动器,但我不想安装它。相反,我只想用它在计算机之间传输文件。

有没有办法通过设备目录从终端访问闪存驱动器?或者从终端访问闪存驱动器的唯一方法是先安装它,然后访问安装点?

答案1

如果不先安装驱动器,则无法访问任何形式的存储介质。但是,您可以从终端完成整个过程。

首先,您需要分区 ID ( /dev/sdXY)。您可以使用lsblk命令来查找它。获得此 ID 后,您可以运行sudo mount /dev/sdXY /mnt。您的闪存驱动器的文件系统现在将在 处可用,/mnt并且可以从终端使用。

设备/dev被称为块设备,是这些设备中包含的文件系统的原始表示(如适用)。虽然您可以直接从这些设备读取和写入,但这通常不是一个好主意,因为您忽略了一层巨大的文件系统抽象和保护。

对于大多数用例来说,唯一需要读取/写入原始块设备的情况是克隆或非常低级设备操作。文件系统提供了巨大的抽象层、错误检查和文件安全层。


笔记:此文本块下方的部分仅用于教育目的。请不要在您关心的任何系统/驱动器上尝试此操作,因为结果很容易是灾难性的。如果您按照我下面所说的任何操作,我对您的行为不承担任何责任。

你被警告了。

有了这个警告,如果你不关心闪存驱动器的内容,理论上可以使用原始块操作从闪存驱动器读取和写入数据。

最简单的方法是使用以下命令将文件(假设files.zip)写入闪存驱动器:

dd if=files.zip of=/dev/sdd bs=1024

这会将 zip 文件复制到闪存驱动器的原始块中,但也可能损坏驱动器上当前的任何分区或相关数据。它还会记录写入驱动器的“块”数量 - 请记下这一点。在这个例子中,我将说复制了 1234 个块。

当您想将文件从闪存驱动器读取到另一台计算机上时,可以使用逆命令执行此操作:

dd if=/dev/sdd of=files.zip count=1234 bs=1024

这将从驱动器(包含 ZIP 文件)中提取前 1234 个块的原始块数据,并将其写入files.zip计算机的当前目录中。另请注意,由于文件末尾的数据损坏/垃圾等原因,此 ZIP 文件可能无法实际读取。如有必要,请务必注意这一点。如果需要,您可以使用该head命令修剪 ZIP 文件。

完成后,您可能需要格式化闪存驱动器并重新分区等,这对于大型操作来说非常不可行。只需使用文件系统即可。

相关内容