带有示例的wipefs Linux命令教程 - 擦除设备签名带有示例的wipefs Linux命令教程 - 擦除设备签名带有示例的wipefs Linux命令教程 - 擦除设备签名带有示例的wipefs Linux命令教程 - 擦除设备签名
  • 业务
  • 目标
  • 支持
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容

带有示例的wipefs Linux命令教程 - 擦除设备签名

发表 admin at 2025年2月28日
类别
  • 未分类
标签

wipfs Linux 命令实用程序可用于擦除设备中的各种类型的签名(分区表、文件系统签名等)。它可以在所有最常用的 Linux 发行版的存储库中找到,并且通常作为 util-linux 软件包的一部分默认安装,该软件包还包含其他旨在系统维护的基本实用程序,因此我们永远不必显式安装它。在本教程中,我们将了解如何使用wipefs收集有关现有签名的信息以及如何删除它们。

在本教程中您将学习:

  • 如何获取现有签名的列表而不删除它们

  • 如何按偏移量或类型删除所有签名或仅删除其中部分签名

  • 如何创建和恢复已删除签名的备份

  • 如何模拟擦除操作

使用的软件要求和约定

寻找签名

Wipef 不仅可用于擦除设备上的现有签名,还可用于创建包含这些签名的报告,而无需执行任何修改。为此,我们所要做的就是启动该实用程序而不指定任何选项,而只是将我们想要分析的设备作为参数传递。让我们举个例子。要获取 /dev/sda 设备上现有的所有签名列表,我们将运行:

$ sudo wipefs /dev/sda

上述命令生成类似于以下内容的输出:

DEVICE OFFSET TYPE UUID LABEL
sda    0x1fe  dos

输出按列组织,默认情况下,报告以下信息:

  • 块设备名称

  • 签名的 OFFSET

  • 签名的类型

  • 通用唯一标识

  • 标签

在这种情况下,该实用程序显示的是设备上找到的dos分区表的签名。正如您所看到的,签名的偏移以十六进制(基数16)形式表示。 0x1fe 值对应于 510 字节。但是,可以修改程序的输出,使其仅包含我们需要的信息。要检查支持的列的列表,我们所要做的就是使用 --help 选项调用wipefs:

$ wipefs --help

在“帮助”消息的末尾,我们可以找到我们要查找的内容:

Available output columns:
     UUID  partition/filesystem UUID
    LABEL  filesystem LABEL
   LENGTH  magic string length
     TYPE  superblok type
   OFFSET  magic string offset
    USAGE  type description
   DEVICE  block device name

USAGE 列非常有用,因为它明确地告诉我们签名与什么相关。要选择要在 wipefs 的输出中包含哪些信息,我们使用 -O 选项 (--output) 调用该实用程序,并提供我们想要包含的列的逗号分隔列表。例如,要仅包含 DEVICE、OFFSET 和 USAGE 列,我们可以编写:

$ sudo wipefs --output DEVICE,OFFSET,USAGE /dev/sda

这是上面命令的输出:

DEVICE OFFSET USAGE
sda    0x1fe  partition-table

我们还可以更改输出的格式。如果我们想要获取 JSON 格式的输出,例如为了以后能够轻松解析它,也许使用我们选择的编程语言,我们应该使用 -J 选项(--json 的缩写)。这是我们将获得的:

$ sudo wipefs -J --output DEVICE,OFFSET,USAGE /dev/sda
{
   "signatures": [
      {"device":"sda", "offset":"0x1fe", "usage":"partition-table"}
   ]
}

最后,您可能已经注意到,该实用程序不会递归工作:如果像我们在上面的示例中所做的那样在整个块设备(例如 /dev/sda)上调用,它不会包括它在设备本身的每个分区上找到的签名,因此为了让它找到并删除设备上的所有签名,我们可以使用glob:

$ sudo wipefs /dev/sda*

正如您所看到的,输出现在还包括在设备第一个分区开头找到的签名,在本例中,该分区是 LUKS 容器:

DEVICE OFFSET TYPE        UUID                                 LABEL
sda    0x1fe  dos
sda1   0x0    crypto_LUKS 1e286e68-b1a9-40d5-af99-58929a480679

删除签名

我们刚刚看到,在没有特定选项的情况下调用时,wipefs 如何打印找到的签名。为了能够真正擦除它们,我们可以通过三种方式进行。如果我们想删除所有签名,我们可以使用相应的选项(-a或--all)调用该实用程序。要删除 /dev/sda 上的所有签名,我们将运行:

$ sudo wipefs -a /dev/sda*

如果我们想删除特定的签名,则必须使用 -o 选项,它是 --offset 的缩写,并将签名的偏移量传递为争论。默认情况下,用于偏移量的数字被解释为字节,但是,如果它包含0x前缀,则会被解释为十六进制值。甚至可以使用常见的后缀来指定如何解释参数,例如 KiB、MiB、GiB 等。让我们看一个例子。要仅删除在 /dev/sda 上找到的第一个签名(其偏移量值为 0x1fe),我们将运行:

$ sudo wipefs -o 0x1fe /dev/sda

该命令应返回以下输出:

/dev/sda: 2 bytes were erased at offset 0x000001fe (dos): 55 aa
/dev/sda: calling ioctl to re-read partition table: Success

删除特定签名的第三种方法是按类型选择它们,可以使用 -t 选项 (--types) 指定类型。该选项接受逗号分隔的列表作为参数。例如,要删除所有“dos”类型的签名,我们可以这样写:

$ sudo wipefs -a -t dos /dev/sda

默认情况下,wipefs Linux 命令仅适用于未安装的设备,并且将拒绝从正在使用的设备中删除签名。

进行“试运行”

如果我们想检查wipefs的行为方式,但不想实际删除签名,我们可以使用带有-n选项的实用程序来执行“模拟”(试运行)(-n选项) >--不采取行动)。正如手册中所述,使用此选项将导致所有操作完成,最终写入除外。

在删除签名之前创建备份

创建备份始终是一个好主意,尤其是在执行像本例这样的危险操作时。 wipefs 实用程序有一个专用选项,可以在使用以下模板路径创建的文件中创建每个签名的备份:

$HOME/wipefs--.bak

每个签名都存储在其自己的文件中。例如,要创建 /dev/sda 上所有签名的备份,我们可以编写:

$ sudo wipefs --all --backup /dev/sda*

将创建的文件(在本例中为 /root/wipefs-sda-0x000001fe.bak)。请注意,只有在执行实际擦除时才能调用 --backup 选项,否则实用程序将通知我们该操作在上下文中“毫无意义”。使用dd可以轻松恢复创建的备份。要恢复本例中的签名,我们将运行:

$ sudo dd if=/root/wipefs-sda-0x000001fe.bak of=/dev/sda seek=$((0x000001fe)) bs=1

在上面的命令中,我们使用 if 指定输入文件,在本例中是包含签名备份的文件,使用 of 指定输入文件,相反,我们提供 output_file (/dev/sda),并确定数据应写入的位置。通过seek,我们指定应使用的偏移量:数据应以字节为单位提供,因此要转换十六进制值,我们使用shell算术扩展< ($ (())) 。最后,通过 bs 我们指定 dd 一次应该读写的字节数。

结论

在本教程中,我们学习了如何使用wipefs linux命令实用程序来删除文件系统和原始块设备中的签名。我们看到了如何使用该实用程序来获取给定设备上存在的签名列表,如何实际删除所有签名或仅通过其偏移量或特定的签名 他们的类型。我们还了解了如何在删除签名之前创建签名备份以及如何最终使用 dd 恢复签名。

©2015-2025 Norria support@alaica.com