dd 和 rm -r 命令

dd 和 rm -r 命令

对我来说,以下命令执行完全相同的操作:

dd if=/dev/zero of=/dev/sd1

dd if=/dev/null of=/dev/sd1

rm -r /dev/sd1/*

也就是说,它们的应用结果是相同的。或者至少,对于第一和第三个是这样的。事实真的如此吗?

答案1

不,他们不做同样的事情。rm /dev/sda1删除设备节点,设备上的所有文件都保持不变。如果我们假设您犯了一个错误并且实际上是rm -r /mountpoint/of/dev/sda1,那么这些命令将具有类似的效果。

但它们仍然有显着的不同:rm删除索引节点,使文件数据无法通过文件系统有效访问。但数据仍保留在设备上,直到被新数据覆盖。您通常可以通过复制原始设备数据 ( dd if=/dev/sda1) 并在其上运行恢复工具来恢复大部分数据。

dd if=/dev/zero of=/dev/sda1将覆盖设备的每个字节,使其显著地从设备恢复数据变得更加困难。一些取证公司仍然可以发挥一些魔力,并且通常建议使用随机数据多次覆盖设备以防止这种情况发生。但如果您确实担心这一点,那么消除数据的最佳方法就是从物理上销毁设备。

相关内容