NoE*_*ert 16 linux dd hard-disk shred
我曾经shred
擦拭过我的外部硬盘:
sudo shred -vz /dev/sdb
我还应该补充一点,磁盘有 5 个坏扇区。
我想验证磁盘是否已归零,按照https://superuser.com/questions/1510233/is-there-a-faster-way-to-verify-that-a-drive-has-been-complete-zeroed
我不太熟悉dd
,但我相信这些表明它已被归零:
sudo dd if=/dev/sdb status=progress | hexdump
0000000 0000 0000 0000 0000 0000 0000 0000 0000
*
5000916670976 bytes (5.0 TB, 4.5 TiB) copied, 45754 s, 109 MB/s
9767541167+0 records in
9767541167+0 records out
5000981077504 bytes (5.0 TB, 4.5 TiB) copied, 45756.7 s, 109 MB/s
48c61b35e00
Run Code Online (Sandbox Code Playgroud)
sudo dd if=/dev/sdb status=progress | od | head
5000952267264 bytes (5.0 TB, 4.5 TiB) copied, 45739 s, 109 MB/s
9767541167+0 records in
9767541167+0 records out
5000981077504 bytes (5.0 TB, 4.5 TiB) copied, 45741.1 s, 109 MB/s
0000000 000000 000000 000000 000000 000000 000000 000000 000000
*
110614154657000
Run Code Online (Sandbox Code Playgroud)
但使用简单的cmp
显示一个例外:
sudo cmp /dev/zero /dev/sdb
cmp: EOF on /dev/sdb after byte 5000981077504, in line 1
Run Code Online (Sandbox Code Playgroud)
磁盘已清零吗?
for*_*est 29
磁盘已清零吗?
是的。命令的输出dd
显示它已写入 5000981077504 字节。你的cmp
命令说它在 5000981077504 字节后到达 EOF(文件结尾),这是相同的。
请注意,这仅适用于硬盘。对于固态设备,磨损均衡和预留空间等功能可能会导致某些数据未被擦除。此外,您的驱动器不得有任何损坏的扇区,因为它们不会被擦除。
请注意,对于此任务来说,这cmp
不会非常有效。你会更好badblocks
:
badblocks -svt 0x00 /dev/sdb
Run Code Online (Sandbox Code Playgroud)
从 中badblocks(8)
,该-t
选项可用于验证磁盘上的模式。如果您没有指定-w
(写入)或-n
(非破坏性写入),那么它将假设该模式已经存在:
-t test_pattern
Specify a test pattern to be read (and written) to disk blocks.
The test_pattern may either be a numeric value between 0 and
ULONG_MAX-1 inclusive, or the word "random", which specifies
that the block should be filled with a random bit pattern. For
read/write (-w) and non-destructive (-n) modes, one or more test
patterns may be specified by specifying the -t option for each
test pattern desired. For read-only mode only a single pattern
may be specified and it may not be "random". Read-only testing
with a pattern assumes that the specified pattern has previously
been written to the disk - if not, large numbers of blocks will
fail verification. If multiple patterns are specified then all
blocks will be tested with one pattern before proceeding to the
next pattern.
Run Code Online (Sandbox Code Playgroud)
此外,使用dd
默认块大小(512)也不是很有效。您可以通过指定 来大大加快速度bs=256k
。这导致它以 262,144 字节而不是 512 字节的块传输数据,从而减少了需要发生的上下文切换的数量。根据系统的不同,您可以使用绕过页面缓存来进一步加快速度。iflag=direct
在某些情况下,这可以提高块设备的读取性能。
尽管您没有询问,但应该指出shred
默认情况下使用三遍覆盖目标。这是不必要的。硬盘上需要多次覆盖的神话来自 Peter Gutmann 的旧建议。在古老的 MFM 和 RLL 硬盘驱动器上,需要特定的覆盖模式以避免理论上的数据残留问题。为了确保所有类型的磁盘都可以被覆盖,他建议使用 35 种模式,以便至少其中一种适合您的磁盘。在使用 EPRML 和 NPML 等现代数据编码技术的现代硬盘驱动器上,无需使用多种模式。据古特曼本人所说:
事实上,执行完整的 35 遍覆盖对于任何驱动器来说都是毫无意义的,因为它的目标是涉及所有类型(常用)编码技术的混合场景,其中涵盖了 30 多年历史的 MFM 方法的所有内容(如果您不这样做)不明白这个说法,请重新阅读论文)。如果您使用的驱动器采用编码技术 X,则只需执行特定于 X 的遍,而无需执行全部 35 遍。
站在你的立场上,我会推荐一些类似的东西:
dd if=/dev/urandom of=/dev/sdb bs=256k oflag=direct conv=fsync
Run Code Online (Sandbox Code Playgroud)
完成后,只需确保在显示“设备上没有剩余空间”后已写入足够的字节即可。
您还可以使用 ATA 安全擦除来启动固件级数据擦除。我不会单独使用它,因为您将依赖固件作者来安全地实施该标准。相反,除上述之外还可以使用它,以确保dd
没有遗漏任何内容(例如坏扇区和 HPA)。ATA 安全擦除可以通过以下命令进行管理hdparm
:
hdparm --user-master u --security-set-pass yadayada /dev/sdb
hdparm --user-master u --security-erase yadayada /dev/sdb
Run Code Online (Sandbox Code Playgroud)
请注意,这并不适用于所有设备。您的外部驱动器可能不支持它。
Gil*_*il' 15
/dev/zero
是一个无限的空字节流。/dev/sdb
不包含无限的空字节流,因此cmp
永远不会报告它与/dev/zero
.
cmp
逐字节比较两个文件的内容,直到发现差异或到达其中一个文件的末尾。如果达到差异,它会报告类似的内容
/dev/zero /dev/sdb differ: char 1 line 1
Run Code Online (Sandbox Code Playgroud)
并以状态 1 退出。如果cmp
到达一个文件的末尾但未到达另一个文件的末尾,则报告文件大小不同并以状态 1 退出。(对于常规文件,cmp
首先检查大小,然后退出而不比较内容,如果大小不同。)仅当cmp
同时到达两个文件的末尾且没有发现不同的内容时,它才会报告文件相同并以状态 0(成功)退出。
所以来自的报告cmp
确实意味着/dev/sdb
全字节为零。
(有关擦除数据的其他建议,请参阅其他答案。但主要请记住,进行多次传递的需要很大程度上是一个传说,这在旧技术中有一定道理,但与 21 世纪媒体完全无关。简单地用零覆盖也一样好。相反,shred
不会触及保留扇区,这些扇区可以通过一些额外的努力来读取,以绕过磁盘控制器的正常工作,因此如果可以的话,请使用磁盘的安全擦除。)
nig*_*222 10
是的,按照森林的回答。
您可以通过告诉磁盘固件自行擦除(安全擦除)来执行“皮带和大括号”操作。根据固件的未知细节,这也可能导致任何坏块无法恢复。
如何在hdparm
此处完成此操作的详细信息
对于 SSD,此方法更为优越,dd
因为它告诉驱动器所有扇区都是空闲的,而不是存储dd
写入其中的任何数据。如果固件被正确写入,它也应该擦除备件。
本文介绍如何擦除 PCIe SSD。您不能使用hdparm
,因为它不是 SATA 设备。还没有尝试过这个(还?)。
归档时间: |
|
查看次数: |
7374 次 |
最近记录: |