我本来打算使用dd (dd if=/dev/arch_data/root of=/dev/sdd3
)将一个分区复制到另一个分区,结果成功了。但是后来我意外地再次运行了相同的命令,这需要一段时间,所以我点击了Control + C。
dd
会不会因此而导致数据的任何变化?
发布于 2019-05-24 10:16:50
简单地说,如果/dev/arch_data/root
和/dev/sdd3
在两个dd
命令之间没有被其他任何东西更改,那么您应该是安全的。
默认情况下,dd
将以512字节的块复制数据,这是硬盘驱动器的标准扇区大小(参见注1)。这意味着,如果您提前停止了dd,那么在尝试编写整个硬盘扇区之后,它就会停止。在任何情况下,dd都不把东西写到磁盘上,然后再修改它。因此,如果您提前停止,那么什么都不会改变,因为dd在停止之前所做的最后一件事就是要求操作系统将整个扇区发送到磁盘。
附注1
近年来,已有4096字节扇区生产了许多硬盘驱动器。硬盘驱动器将向操作系统报告它们支持512字节扇区,如果操作系统试图写入512字节,则硬盘驱动器的行为将正确。但是,为了使这一工作,硬盘驱动器内部读取一个4096字节扇区,改变512字节,然后写回全部4096字节。这不会导致腐败。但这会减慢你的写作速度。如果您不知道您有什么硬盘驱动器,那么您可能希望设置bs=4096
以防万一。
发布于 2019-05-24 09:57:41
是的,dd
会随时复制数据。显然,如果您没有更改输入文件(由if=
指定),那么输出文件(由of=
指定)将是相同的。但是一些元数据将被更改,例如,最后一次读取或写入文件(atime
和mtime
)。
https://unix.stackexchange.com/questions/520824
复制相似问题