49 linux dd cat disk-image pv
我正在将一些数据 CD/DVD 复制到 ISO 文件中,以便以后在驱动器中不需要它们的情况下使用它们。
我在网上寻找程序,我发现了很多:
使用的cat复制介质:http://www.yolinux.com/TUTORIALS/LinuxTutorialCDBurn.html
cat /dev/sr0 > image.iso
Run Code Online (Sandbox Code Playgroud)dd这样做的用途(显然是最广泛使用的):http : //www.linuxjournal.com/content/archiving-cds-iso-commandline
dd if=/dev/cdrom bs=blocksize count=count of=/path/to/isoimage.iso
Run Code Online (Sandbox Code Playgroud)使用 justpv来完成此操作:有关man pv更多信息,请参阅此处,但这里有一个摘录:
Taking an image of a disk, skipping errors:
pv -EE /dev/sda > disk-image.img
Writing an image back to a disk:
pv disk-image.img > /dev/sda
Zeroing a disk:
pv < /dev/zero > /dev/sda
Run Code Online (Sandbox Code Playgroud)我不知道是不是所有的人都应该是等价的,虽然我测试了其中的一些(使用md5sum工具)和,至少,dd并且pv是不等价的。以下是md5sum使用每个过程的驱动器和生成的文件:
dd程序的md5: 71b676875b0194495060b38f35237c3c
光伏程序的md5: f3524d81fdeeef962b01e1d86e6acc04
编辑:该输出来自另一张 CD,而不是给定的输出。事实上,我意识到我提供了一些有趣的事实作为答案。
事实上,每个文件的大小相互比较是不同的。
那么,是否有复制 CD/DVD 的最佳程序,还是我只是错误地使用了命令?
以下是有关我用来检查迄今为止发现的过程的测试用例的更多信息:
isoinfo -d i /dev/sr0
输出:https : //gist.github.com/JBFWP286/7f50f069dc5d1593ba62#file-isoinfo-output-19-aug-2015
dd复制媒体,输出校验和和文件信息输出:https : //gist.github.com/JBFWP286/75decda0a67605590d32#file-dd-output-with-md5-and-sha256-19-aug-2015
pv复制媒体,输出校验和和文件信息输出:https : //gist.github.com/JBFWP286/700a13fe0a2f06ce5e7a#file-pv-output-with-md5-and-sha256-19-aug-2015
任何帮助将不胜感激!
Gil*_*il' 71
以下所有命令都是等效的。他们读取 CD 的字节/dev/sr0并将它们写入一个名为image.iso.
cat /dev/sr0 >image.iso
cat </dev/sr0 >image.iso
tee </dev/sr0 >image.iso
dd </dev/sr0 >image.iso
dd if=/dev/cdrom of=image.iso
pv </dev/sr0 >image.iso
cp /dev/sr0 image.iso
tail -c +1 /dev/sr0 >image.iso
Run Code Online (Sandbox Code Playgroud)
你为什么要使用一个?
简单。例如,如果您已经知道cat或cp,则无需再学习另一个命令。
稳健性。这是一种简单的变体。改变命令会改变它的作用有多大的风险?让我们看几个例子:
set -o noclobber应该确保你没有覆盖任何东西;但是,如果您不小心写入,则可能会覆盖设备>/dev/sda(对于只读的 CD,当然没有风险)。这有利于cat /dev/sr0 >image.iso(很难以破坏性的方式出错)而不是替代方案,例如tee </dev/sr0 >image.iso(如果您反转重定向或忘记输入,tee将写入/dev/sr0)。cat:您可能会不小心连接两个文件。这使得数据很容易挽救。dd:i并且o在键盘上很接近,有点不寻常。没有相当于noclobber,of=会很高兴地覆盖任何东西。重定向语法不易出错。cp:如果您不小心交换了源和目标,设备将被覆盖(同样,假设是非只读设备)。如果cp是一些选项,比如调用-R或-a其中一些人通过添加别名,它会复制设备节点而不是设备的内容。附加功能。这里有一个有用的附加功能的工具是pv,它具有强大的报告选项。
但是在这里您可以通过查看输出文件的大小来检查复制了多少。
表现。这是一个受 I/O 限制的进程;性能的主要影响是缓冲区大小:该工具从源读取块,将块写入目标,重复。如果块太小,计算机就会花时间在任务之间切换。如果块太大,则无法并行化读写操作。PC 上的最佳块大小通常约为几兆字节,但这显然非常依赖于操作系统、硬件以及计算机正在执行的其他操作。不久前,我在 Linux 上对硬盘到硬盘的副本进行了基准测试,结果表明,对于同一磁盘内的副本,dd 大缓冲区大小具有优势,但对于跨磁盘副本,cat则胜过任何dd缓冲区大小。
有几个原因会导致您dd经常被提及。除了性能之外,它们并不是特别好的理由。
cat(这是与更多的面向行的工具,如head,sed等),但人们往往避免它,因为它与文本处理关联的二进制数据。这在 Linux、OSX、*BSD 或任何符合 POSIX 标准的现代系统上都不是问题。dd比其他工具(例如cat直接访问设备)“低级”一些。这是完全错误的:ddand catandtee和其他人都从他们的输入读取字节并将字节写入他们的输出。真正的魔法在/dev/sr0。dd有一个不寻常的命令行语法,所以解释它是如何工作的,通过解释一些只写cat /dev/sr0.dd 大缓冲区大小可以获得更好的性能,但情况并非总是如此(请参阅Linux 上的一些基准测试)。一个主要的风险dd是它可以默默地跳过一些数据。我认为dd只要skip或count没有通过都是安全的,但我不确定是否在所有平台上都是这种情况。但除了性能之外,它没有任何优势。
因此,pv如果您想要其精美的进度报告,或者cat不想要,请使用。
小智 5
在这种情况下有一些有趣的事实,特别是这些:
dd和pv)的校验和是相同的。dd程序后,打开驱动器并用同一张光盘关闭它,然后用该pv程序完成测试。这样做,我得到了两个程序相同的副本。dd带count=X参数在光盘末尾正确停止并提供与使用相同的光盘映像pv(校验和相同),因此我最好使用不dd带参数或仅使用pv.因此,就目前而言,它似乎pv并且dd可以完成具有相同结果的 CD/DVD 复制。
| 归档时间: |
|
| 查看次数: |
37040 次 |
| 最近记录: |