为什么我们使用 cp 来复制文件而不是 dd?(在 unix 衍生产品中)

为什么我们使用 cp 来复制文件而不是 dd?(在 unix 衍生产品中)

对于 *nix 中的常规文件复制,我只见过人们使用 cp(例如cp /mnt/mydevice/myfile ~/myfile),但我最终遇到了dd,它似乎做同样的事情(dd if=/mnt/mydevice/myfile of=~/myfile)。我确实看到它们有一些不同的参数可用(dd 似乎更擅长微调复制),但它们似乎是多余的。这些工具真的做同样的事情吗?

答案1

回答你的主要问题,不,他们不会做同样的事情。

dd 可处理您指定的文件,使其能够在设备之间或从设备到文件复制数据。这通常用于在涉及特定设备时移动数据(例如,从 cd-rom 光盘创建 iso 映像:dd if=/dev/cdrom of=mycdrom.iso),或备份原始设备(有时用于 RAC 数据库:dd if=/dev/raw/raw1 of=device_raw1)

cp 用于将文件内容复制到新文件或新位置。您特别想要的是保留所有权、时间戳和模式(权利),以及能够递归操作(=能够复制目录)。

来源

答案2

dd它们的作用相同,除非您指定了限制复制哪些字节的选项之一 ,例如seekskipcount或如果您使用 dd选项来改变字节,例如conv。如果您没有使用其中一个选项 dd,而只是使用更常见的选项,如ifofbs那么这两个实用程序都会做同样的事情:打开两个文件,从输入中读取,写入输出,直到输入耗尽或输出无法接受更多字节。

关于读写“设备”文件有很多迷信的说法,说必须使用dd这些文件,但这只是迷信。 dd并没有做任何不同的事情,我们只是打开文件并读写字节。

相关内容