将
dd if=/dev/zero of=somepartition bs=512
还擦拭分区之后somepartition
或结束somepartition
?
将
dd if=/dev/zero of=somepartition bs=512
还擦拭分区之后somepartition
或结束somepartition
?
Answers:
dd
dd
是一个非常强大但又危险的工具。它会执行您告诉它的操作而不会出现任何问题。因此,如果您告诉它擦除家庭照片,...这是一个很小的键入错误。
但是,如果您检查并再次检查,则可以使用它。
dd if=/dev/zero of=somepartition bs=512
或者我建议
dd if=/dev/zero of=/dev/sdxn bs=4096
其中x
,驱动器n
号和分区号以及4096个字节的块大小使写入过程更快。
在这种情况下,写入分区很重要。如果写入整个驱动器(驱动器头端),/dev/sdx
则整个驱动器将被覆盖。但是对分区的写入将在该分区的末尾中断,并且将保留在其后面的分区。(我现在在Lubuntu 16.04 LTS的USB笔式驱动器上进行了测试,因此我知道它可以那样工作。)
扩展分区(为逻辑分区的容器,以便在MSDOS分区表中具有四个以上的分区)是一个例外。在以下链接中对此进行了描述,
但是,还有另一个问题。我在测试环境中测试了您的命令,并且当我希望它构成扩展分区的映像时,dd仅读取一个kibibyte(1024字节)。
我现在也在Lubuntu 16.04 LTS的USB笔式驱动器上对此进行了测试,这适用于写入(以及读取)。仅第一个kibibyte被覆盖。
综上所述,覆盖主分区和逻辑分区根据此答案中的主要描述进行工作。但是不要使用此方法来覆盖扩展分区,因为只有第一个kibibyte会被覆盖。扩展分区的逻辑分区将不再通过分区表找到,但是存储在扩展分区中的数据仍然存在。
dd
并且具有风险,因此在使用时要非常小心。祝您好运:-)通常,您应该始终备份所有文件,以免丢失。
我认为您的问题是基于对工作方式dd
(以及实际上实际上是类Unix操作系统)的基本误解:
dd
无法覆盖相邻分区,仅是因为dd
无法覆盖分区period。
dd
只需写入文件。而已。
现在,如果您传递dd
一个代表多个分区的文件,dd
则将覆盖该文件。但是在那种情况下,它不会dd
写到分区末尾。dd
仍然会写到文件末尾,并且只会写到文件末尾。
但是,如果传递dd
的文件仅代表一个分区,则dd
不会超出该分区的末尾。同样,这与无关dd
。dd
只需写入您要求写入的文件即可。该文件表示单个分区的事实(在这种情况下)由内核中的块设备驱动程序确保。dd
与此无关。
简而言之:dd
写文件。这些文件代表dd
的内容与无关。dd
对分区一无所知。
dd
用于写入原始分区。您只能写入文件。您当然可以写入代表分区的块设备文件(例如/dev/sda1
),但不能写入原始分区。而且,由于只能写一个代表分区的文件,所以不能写超出分区末尾的内容,因为该文件仅代表分区,而不代表分区末尾。
/dev/sda
在文本编辑器中打开并更改数据,dd
就可以访问分区而言,它与任何其他程序都没有什么不同。很好的答案!
您必须谨慎对待dd,因为如果您犯了一个错误,您可以覆盖的范围超出了讨价还价的范围,并且这取决于您使用dd的目的(OP对dd的用法以及dd的确切语法含糊不清命令)。
如果您指定一个分区,它将写入该分区,直到该分区已满。
如果您输错了整个磁盘,例如= / dev / sda,则dd将写入整个磁盘开始,以完成忽略(覆盖)分区表的操作。
您还可以在分区上使用dd来覆盖已删除的文件(已删除的文件可能会保留在该分区上,并被各种恢复工具以不同程度的成功发现,直到被覆盖为止。在这种情况下,您可以使用dd来填充可用空间写入文件。
dd if=/dev/zero of=/path/to/mount_point/zero_file bs=4096
rm -f /path/to/mount_point/zero_file
但是,根据您的操作,您可能希望使用其他工具来安全地删除文件。请参阅如何以安全方式删除文件?选择。
dd
不是那么低的水平。实际上,人们所做的大多数事情都可以使用dd
来完成cat
。实际上cat
,速度稍快,因为它使用的块比dd
默认情况下大。所有低级代码都在内核中。驱动程序并不真正在乎您是否使用dd
或cat
。
dd if=/dev/zero of=/dev/sda bs=512 count=1
还是dd if=/dev/zero of=/dev/sda bs=512
例子。使用第二个命令,它将继续写入并“忽略”分区表来填充整个磁盘。如果指定一个分区dd if=/dev/zero of=/dev/sda1
,它将不会超出该分区。取决于您要如何处理dd。
of=somepartition
,因此不适用于写入整个磁盘设备的情况。dd
无法绕过设备驱动程序的限制。
/dev/sda1
)是由内核以无法访问它们的方式创建的(假定分区表在内核最后一次读取后未更改)。如果您可以通过这种方式访问相邻的存储,那将是一个巨大的错误。