我经常需要完全擦除 SD 卡。
使用SD 存储卡格式化程序可以大大加快此过程。
不幸的是,该程序似乎在 Linux 下不可用,并且替代方案(例如:dd
或shred
)需要很长时间。
据我所知,SD/MMC 卡具有用于批量擦除的特定命令,我怀疑这就是“SD 存储卡格式化程序”所使用的命令(而不是尝试通过覆盖来擦除其内容)。
有一些工具使用相同的吗?
简而言之:
blkdiscard /dev/mmcblk0
Run Code Online (Sandbox Code Playgroud)
要快速擦除整个 SD 卡,可以使用blkdiscard
(8)命令。这会调用 Linux BLKDISCARD ioctl,后者又传递 CMD38,与SD Memory Card Formatter相同。
-s
,--secure
安全地丢弃块。正如其他地方所指出的,普通的 CMD38 将使某些块显示为空,但由于垃圾收集而使其他块清晰可见。-s
如果您希望更安全一点并强制擦除垃圾收集块,请使用。
-z
,--zero
零填充块而不是丢弃。
请注意,虽然这适用于我的笔记本电脑和 Raspberry Pi,但它不适用于 USB SD 读卡器。不同之处在于内核需要访问低级MMC子系统,USB 将其抽象为通用“大容量存储”设备。[我相信微软Windows也有同样的限制,但如果我错了,请在评论中纠正我。]
如果您没有可以直接与低级 SD 卡通信的设备,可以使用 Arduino 构建一个设备并运行SDFormatter.ino。
由于blkdiscard
必须以 root 身份运行,因此它可以轻松破坏您的所有数据。您最好确保将其指向正确的设备,然后再次仔细检查。使用lsblk
和df
.
联机帮助页声称,为了安全起见,只有在驱动器尚未安装的情况下它才会起作用。这将是一个很好的安全功能,但截至撰写本文时,情况并非如此。如果驱动器已经格式化,则当前的实现需要-f
,--force
选项,由于 SD 卡已预先格式化,因此(几乎)总是会出现这种情况。不幸的是,使用--force
意味着所有检查(包括驱动器是否正在使用)都将被禁用。
希望有一天 Linux 将允许 blkdiscard 在可移动设备上运行,而无需 root 权限,这将大大降低其危险性。
除了快速擦除数据以保护隐私之外,据说 blkdiscard(类似于 SSD 的 fstrim)将改善磨损均衡并使某些 SD 卡通常运行得更快一些。