简短版本:在什么情况下可以dd
安全地用于复制数据,安全意味着不存在由于部分读取或写入而导致损坏的风险?
长版本 — 序言: dd
通常用于复制数据,尤其是从设备复制数据或向设备复制数据(示例)。有时将其归因于能够以比其他工具更低的级别访问设备的神秘特性(实际上是设备文件在发挥作用)——但dd if=/dev/sda
与cat /dev/sda
. dd
有时被认为更快,但cat
在实践中可以击败它。尽管如此,它dd
具有独特的特性,使其有时真正有用。
问题: dd if=foo of=bar
实际上与cat <foo >bar
. 在大多数 unices¹ 上,dd
对read()
. (我发现POSIX在什么构成“读取输入块”方面很模糊dd
。)如果read()
返回部分结果(根据 POSIX 和其他参考文档,除非实现文档另有说明,否则允许这样做),则复制部分块。存在完全相同的问题write()
。
观察:在实践中,我发现dd
可以处理块设备和常规文件,但这可能只是我没有太多练习。说到管道,不难找dd
错;例如试试这个代码:
yes | dd of=out bs=1024k count=10
Run Code Online (Sandbox Code Playgroud)
并检查out
文件的大小(它可能远低于 10MB)。
问题:在什么情况下可以dd
安全地用于复制数据?换句话说,在块大小、实现、文件类型等方面的哪些条件可以确保dd
将复制所有数据?
(GNU dd有一个 …
我正在将一些数据 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
编辑: …
有没有一种方法可以将 ISO 映像文件的内容一次性提取到文件夹中?
我一直在这样做,希望减少输入次数,并且不需要执行以下操作mount -o loop
,也不需要 root 身份来执行 mount 命令来访问 ISO 映像内容:
cp rhel-server-7.6-x86_64-dvd.iso /home/ron/
mkdir /home/ron/temp
mount -o loop /root/rhel-server-7.6-x86_64-dvd.iso /home/ron/temp
mkdir /home/ron/rhel7.6dvd
mv /home/ron/temp/* /home/ron/rhel7.6dvd
rmdir /home/ron/temp
Run Code Online (Sandbox Code Playgroud)