手册wipefs
页说:
-f, --force
强制擦除,即使文件系统已安装。 为了擦除块设备上的分区表签名,这是必需的。
所以这意味着每次我想覆盖块设备上的分区表签名时,我都需要添加-f
.
在手册页的后面,给出的用法示例之一是:
wipefs --all --backup /dev/sdb
擦除设备 /dev/sdb 中的所有签名~/wipefs-sdb-<offset>.bak
,并为每个签名创建一个签名备份文件。
因此,这个示例覆盖了块设备的所有签名,显然包括分区表签名。根据前面所说,这是行不通的,因为它不包括-f
.
现在不知道用-f
还是不用。当尝试删除磁盘上的所有--force
签名(包括分区表)时,是否需要该选项?
我同意手册页的措辞似乎不清楚或具有误导性。选项之前的最后一段文字指出:
在这里,他们谈论的是非整个磁盘设备,其措辞与
-f
您所包含的选项下的文本不同。--force 既不是必需的,也不足以擦除“所有”分区数据
鉴于尚不清楚,我使用以下方案做了一些擦除分区表数据的测试:
wipefs
使用各种参数擦除分区表数据wipefs
、设备的输出lsblk
以及在 中打开设备的结果cfdisk
。此外,cfdisk
在设备上重新创建相同的分区表和分区后,观察重新创建的分区是否具有旧标签。结论:
wipefs
使用这种简单的分区方案,并且在卸载分区的情况下,强制选项对在设备(而不是分区)上运行时擦除的数据没有影响。也就是说,无论是运行wipefs -a /dev/sdX
还是wipefs -af /dev/sdX
,分区表都会从设备中擦除。但是在 中重新创建分区表时cfdisk
,会找到旧标签并将其应用于新分区。因此分区表被擦除,但分区本身的数据没有被擦除。其运行期间的输出wipefs
与此一致。要实际删除所有分区的数据以及设备的分区表,必须在列出设备之前显式列出所有分区。手册页在第三段文本的示例中对此给出了提示(我已将其 sdc 更改为 sdX,以防止复制/粘贴到终端期间发生任何意外):
或者,让 shell 使用通配符表达式填充值:
这将成功删除设备中的所有分区数据以及分区表本身。