首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果‘if’和‘if’已经有相同的内容,那么dd是否更改任何数据?

如果‘if’和‘if’已经有相同的内容,那么dd是否更改任何数据?
EN

Unix & Linux用户
提问于 2019-05-24 09:34:17
回答 2查看 655关注 0票数 2

我本来打算使用dd (dd if=/dev/arch_data/root of=/dev/sdd3)将一个分区复制到另一个分区,结果成功了。但是后来我意外地再次运行了相同的命令,这需要一段时间,所以我点击了Control + C。

dd会不会因此而导致数据的任何变化?

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 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以防万一。

票数 1
EN

Unix & Linux用户

发布于 2019-05-24 09:57:41

是的,dd会随时复制数据。显然,如果您没有更改输入文件(由if=指定),那么输出文件(由of=指定)将是相同的。但是一些元数据将被更改,例如,最后一次读取或写入文件(atimemtime)。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/520824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档