Linux / BSD“快速”擦除 USB 驱动器?

Rin*_*ino 11 linux dd bsd deleting

我正在清理驱动器dd。它是一个 USB 设备,容量为 120GB,并且需要很长时间:

dd if=/dev/zero of=/dev/da0 bs=1M status=progress
Run Code Online (Sandbox Code Playgroud)

我尝试过调整块大小(较小和较大的值等) bs=4Mbs=8M但似乎没有什么区别。它的写作速度7000 kB/s慢得令人痛苦。

我不关心“安全”擦除数据,我只是想擦除它,这样我就可以从头开始重新建立分区结构和文件系统。是否有另一种方法(使用标准实用程序)可以针对此类情况执行快速(一两分钟内)擦除?我正在使用的设备是 FreeBSD,但我认为 dd 命令(和 gpart 等)在它和 Linux 之间的工作方式类似。

Mir*_*ici 19

删除所有磁盘标签和文件系统签名的 Linux 命令是:

wipefs -a /dev/sd###
Run Code Online (Sandbox Code Playgroud)

大多数现代闪存盘和闪存 USB 记忆棒都支持TRIM/DISCARD/SCSI UNMAP。对于 USB,您需要启用它

# cat /sys/block/sd###/device/scsi_disk/*/provisioning_mode
full
# echo unmap > /sys/block/sd###/device/scsi_disk/*/provisioning_mode
# cat /sys/block/sd###/device/scsi_disk/*/provisioning_mode
unmap
#
Run Code Online (Sandbox Code Playgroud)

如果启用了修剪,您可以使用以下命令销毁所有数据:

blkdiscard /dev/sd###
Run Code Online (Sandbox Code Playgroud)

替换sd###为类似sdx或 的内容nvme9n9。您可以使用以下命令列出所有块设备:lsblk


Rom*_*nov 15

最快的方法是删除驱动器上的所有分区。这也将“删除”文件系统。第zero一个兆字节(引导记录等)。

dd if=/dev/zero of=/dev/da0 bs=1M count=1
Run Code Online (Sandbox Code Playgroud)

并且您有“全新”磁盘。

  • 好吧,让我挑剔一下:它不会“删除”文件系统,它会使操作系统无法找到它们。他们很可能会被找回。但 100% 同意,如果不需要“安全”擦拭,那就足够了。 (11认同)
  • 这对于 GPT 不起作用,因为磁盘末尾存储有分区表的备份副本。 (3认同)

Mar*_*ler 10

USB 存储设备有多种类型。

如果您的设备支持,

blkdiscard /dev/da0
Run Code Online (Sandbox Code Playgroud)

在 Linux 上,或者

trim /dev/da0
Run Code Online (Sandbox Code Playgroud)

在 FreeBSD 上

会告诉驱动器删除所有数据。这将非常快,因为它基本上只是告诉磨损均衡表“嘿,忘记任何曾经用于数据的块,并将它们视为已准备好清空并再次使用”。

即使速度那么快,它也会产生“清零”的良好副作用,即它使旧数据无法恢复(除非打开硬件,绕过内部存储控制器,读取原始数据,然后对哪个块进行巨大猜测)需要按照哪个顺序重新组装)。


sym*_*ean 7

我不关心“安全”擦除数据,我只是想擦除它,这样我就可以从头开始重新建立分区结构和文件系统

只需在分区上运行 mkfs 即可。