为什么我们使用cp复制文件而不是dd?(在Unix衍生物中)


21

对于在* nix中进行普通文件复制,我只见过人们使用cp(例如cp /mnt/mydevice/myfile ~/myfile),但最终我碰到了dd,它似乎做的完全相同(dd if=/mnt/mydevice/myfile of=~/myfile)。我确实看到它们有一些可用的不同参数(在微调复制中dd看起来更好),但是它们显得多余。这些工具真的可以做同样的事情吗?


它们仅对常规文件执行相同的操作。例如,尝试使用复制目录dd
Eddy_Em

...或带有的设备(如/dev/sdacp
jpaugh

您的问题得到回答了吗?
克鲁格

@Eddy_Em,这怎么了?
Pacerier,2015年

Answers:


13

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

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

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

资源


3
啊! 好的,所以dd复制了原始文件,而cp复制了内容(例如,它可以在不破坏文件系统的情况下复制目录)。谢谢!
user232105 2013年

5
@Kruug,我一定想念一些东西,因为我仍然看不到有什么cp可以做的dddd还能够“将文件内容复制到新文件或新位置”“保留所有权,时间戳和模式”对吗?
Pacerier,2015年

3
从我的理解中,@ Pacerier cp是一个更具针对性的实用程序,但dd更为通用。 dd可以做所有cp可以做的事,但cp只能做一些dd可以做的事。
克鲁格2015年

我认为区别并没有清楚地解释。cp和dd不能做什么?反过来呢?
gorn's

9

除非您指定dd限制复制字节的选项之一,否则它们的作用相同 ,例如seekskipcount或如果您使用 dd选项使字节突变(例如)conv。如果你不使用这些选项中的一个 dd,并只使用像更常见的选择ifofbs然后这两个实用程序做同样的事情:打开这两个文件,从输入读取,写入到输出,直到输入信息已耗尽否则输出不能接受更多字节。

关于读写“设备”文件有很多迷信,说明您必须使用dd这些文件,但这仅仅是迷信。 dd没有什么不同,我们只是打开文件并读写字节。


这或多或少...如果您根据设备的实际情况使用of = destiny,则可能会出现一些问题。USB闪存盘。我发现我必须使用>>命运并删除of = xxx参数才能运行。如果我使用of = destiny,则会发生奇怪的问题,因为我使用skip和iflags = skip_bytes标志进行了操作...因此,没有那么多迷信。在某些情况下>>>>顺利进行,因为==需要进行护理和测试,所以可能无法正常工作。我编写了一个脚本,使用步骤将大文件保存到pendrive。完整的400MB副本用于破坏sdcard磁盘分区。
塞尔吉奥·阿布雷乌
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.