我最近意识到我们可以使用cat尽可能多的dd,而且它实际上比dd
我知道这dd在处理块大小实际上影响正确性而不仅仅是性能的磁带时很有用。然而,在这些日子里,是否存在dd可以做一些cat不能做的事情?(在这里,我认为不到 20% 的性能差异无关紧要。)
具体的例子会很好!
我知道在某些情况下,将 Windows 安装从一台计算机移动到另一台计算机(物理移动硬盘驱动器)可能会很困难,但这在 linux 上如何工作?大多数驱动程序模块不是在启动时加载的吗?所以理论上会这么麻烦吗?
显然,xorg 配置会改变,专有的 ATI 驱动程序必须重新编译(也许?)。还有比我想象的更多的吗?
假设两台电脑来自同一个时代,即都是 i7,但硬件略有不同。
更新:
感谢您的回答。这主要是为了我自己的好奇心。我的 linux 系统已启动并在工作中运行,但最终我想搬到一台可以安装双显卡的计算机上,这样我就可以运行 2 个以上的显示器。但不会很快
原问题:
完整的 dd 副本需要多长时间才能完成?
到目前为止,它已经运行了 5 个小时,但仍在继续……
我使用的是 Linux Ubuntu 12.04 64bit,我使用的命令是:
dd if=/dev/sdb of=/dev/sdc
Run Code Online (Sandbox Code Playgroud)
更新:1
我现在可以看到进度了,复制 430GB 已经超过 6 个小时了。硬盘是3TB...
没有更快的方法吗?
更新:2
sudo dd if=/dev/sdb bs=128K | pv -s 3000G | sudo dd of=/dev/sdc bs=128K
Run Code Online (Sandbox Code Playgroud)
3TB 的 ETA 大约需要 9 小时,而在 6 小时后达到 430GB 之前,我猜使用前面的命令大约需要 36 小时。
我在 VMware 中有一个 Fedora 来宾操作系统。我想扩展/boot分区,所以我向这个虚拟机添加了另一个虚拟磁盘,并尝试克隆该磁盘。
之后dd if=/dev/sda1 of=/dev/sdb1,blkid报告/dev/sda1和/dev/sdb1具有相同的 UUID/GUID。
奇怪的是,宇宙中有2个相同的UUID,如何将其中一个更改为另一个UUID值?
主题改变了,这里的 UUID 是指文件系统 UUID,而不是分区 UUID。
由于它是文件系统 UUID,因此需要特定于文件系统的实用程序来更改 UUID,或使用 hexeditor 修改磁盘上的原始数据(危险,除非您知道自己在做什么,否则不推荐)。
我喜欢将整个分区或整个硬盘驱动器克隆到更大的外部磁盘上,但喜欢创建一个稀疏文件。我经常dd用于克隆,但它不支持稀疏文件。作为一种解决方法,我使用了类似的东西:
cp --sparse=always <(dd if=/dev/sda1 bs=8M) /mount/external/backup/sda1.raw
Run Code Online (Sandbox Code Playgroud)
但是,这对我的口味来说有点太棘手,并且如果中止,我将无法恢复该过程。有趣的是,有一个用于此 ( ntfsclone)的 NTFS 工具,但不存在用于 Linux (EXT2-4) 的本机文件系统的此类工具。
是否有一些更好的工具,例如dd具有稀疏支持的变体?我不寻找一些用于磁盘备份的专有软件,而只是想制作一个稀疏克隆副本,如果需要,我可以将其安装为循环设备。
在在线教程中,通常建议使用以下命令将 CDROM 复制到 ISO 映像:
$ dd if=/dev/dvd of=foobar.iso bs=2048
Run Code Online (Sandbox Code Playgroud)
为什么必须指定字节大小?我注意到实际上 2048 是CDROM 映像的标准字节大小,但似乎dd没有指定bs=或也count=可以工作。
在什么情况下不指定bs=或count=从有限大小的设备复制会出现问题?
我有一个 qcow2 映像,用于使用 QEMU 启动 linux 安装;我想将该映像的内容直接放置到物理硬盘驱动器上,以便我可以直接从桌面启动到该 linux 安装。我想做类似的事情dd if=my-qcow2.img of=/dev/sdb。但是,这显然不起作用,因为 qcow2 不会在 qcow2 文件中按逻辑顺序存储虚拟磁盘的内容。有什么建议?
我曾经dd像这样克隆磁盘:
dd if=/dev/sdb of=/dev/sda bs=4096 conv=notrunc,noerror,sync
Run Code Online (Sandbox Code Playgroud)
而且它一直运行良好。'dd' 上的所有文档都煞费苦心地提醒您目标磁盘的大小必须与源磁盘相同或更大。这一定是真的吗?
现在,我很清楚,如果我克隆到一个较小的磁盘,我不能指望目标上任何部分 “越界”的分区都完好无损。
但是,完全知道我稍后需要在目标上编辑我的分区,删除“越界”的分区,我是否仍然可以使用“dd”来制作源的蛮力副本,直至达到极限目标的物理尺寸?或者,当目标达到其大小限制时,会“dd”将目标减少为一堆冒烟的残骸;-)
顺便说一句,在研究这个时,我已经看到bs=了从bs=1024到的所有内容的推荐值bs=32M,什么才是最好的?
硬件:2 个 8GB USB 闪存驱动器
发行版:Mint 9 Xfce 持久性 Live Cd
一个 U 盘有两个分区:
1) FAT32 700MB Mint 9 分区
2) ext3 7.3GBcasper-rw分区
目标:
我想复制那个 USB 闪存驱动器,因为我不想再次经历从头开始安装和配置的时间。
经验:
1) 我发现这dd不适用于这项工作,因为如果我的一个闪存驱动器的大小甚至有 1MB 不同(有时确实如此),那么副本就会损坏。
2) 我发现gparted像第一个驱动器一样使用和预格式化第二个驱动器,然后rsync单独对每个分区进行格式化是行不通的,因为出于某种原因,某些文件没有被复制并且驱动器仍然无法启动。
我想保留我的工作棒,只是复制它并为我的朋友配置棒。这样,如果我弄坏了另一根棍子,我将始终让我的基本棍子坐在那里等待。