DD 命令销毁数据

DD 命令销毁数据

我是否应该删除磁盘的重要文件,然后启动到活动磁盘并运行dd命令,或者是否可以继续运行dd/dev/sda无需删除?

我之所以问这个问题,是因为我已经开始运行了dd if=/dev/urandom of=/dev/sda bs=1M。我只是想安全起见,我知道不管怎样都是一样的,但我想知道这对dd已删除的文件还是尚未删除的文件造成的损害更大。我可以重新启动,dd command但只需要确认。

答案1

dd是一个用于读取或写入磁盘数据块的低级实用程序。它不知道(或不关心)文件系统、目录结构、权限或任何其他高级文件详细信息。它基本上是一把抹刀,用于将数据抹到磁盘上的任何区域或从磁盘上的任何区域抹去。

rmcp或其他高级文件实用程序mv会不遗余力地确保您所操作的文件的分配区域和文件系统指针在磁盘上得到完美更新,无论它们位于何处。当您删除文件时,磁盘的数据区域很可能只是被标记为“可用”,而实际上并未清除任何以前的数据。如果您有一个包含社会安全号码的文件,即使在您删除rm它之后,数据区域仍可能被诸如 之类的实用程序读取dd

因此,从某种意义上说,你的问题的答案是“是”。dd“造成更大的损害”在于它所写的内容几乎永远消失了。可能有专业法医设备这可以恢复,但我想这种服务的价格会让大多数人无法承受。

更新:如何确认dd已覆盖磁盘。请确保使用正确的设备。下面的写入示例将导致您的数据无法恢复:

从目标设备的引导扇区(512字节)读取1块数据:

# dd if=/dev/sdX of=/tmp/dd_example/chunk.bin bs=512 count=1
1+0 records in
1+0 records out
512 bytes copied, 0.00162606 s, 315 kB/s

使用od命令检查读取的数据(为简洁起见,已截断)。

# od -t x1 /tmp/dd_example/chunk.bin 
0000000 eb 63 90 10 8e d0 bc 00 b0 b8 00 00 8e d8 8e c0
0000020 fb be 00 7c bf 00 06 b9 00 02 f3 a4 ea 21 06 00
...

如果需要,可以使用该strings命令查看块中任何可读的 ascii。(注意:具有“不可打印”ascii 的值(例如 00)将不会显示,因此输出strings不一定与上面显示的十六进制输出相关)。由于这是 GRUB 引导扇区,因此很容易看到引导签名。其他操作系统可能会有类似的东西。

# strings /tmp/dd_example/chunk.bin 
ZRr=
`|f 
\|f1
GRUB 
Geom
Hard Disk
Read
 Error

现在通过向设备写入 512 个零来清除引导扇区。

# dd if=/dev/zero of=/dev/sdX bs=512 count=1
1+0 records in
1+0 records out

现在读回引导扇区的块

# dd if=/dev/sdX of=/tmp/dd_example/chunk.bin bs=512 count=1
1+0 records in
1+0 records out
512 bytes copied, 0.00144648 s, 354 kB/s

od显示块中现在的所有内容00都是

# od -t x1 /tmp/dd_example/chunk.bin 
0000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
*
0001000

Strings 确认磁盘上不再有任何可打印的 ascii

# strings /tmp/dd_example/chunk.bin 
#

相关内容