我曾经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,什么才是最好的?
我正在使用dd将数据从旧硬盘驱动器复制到新硬盘驱动器。我想确保数据的完整性是安全的。
关于这个答案,吉尔斯说
如果 [dd] 成功终止,则备份正确,除非出现硬件故障……
这究竟是什么意思?是否dd有某种内置验证?
如果我改用 rsync,我--checksum也会运行第二遍,以进行验证。这种偏执有道理吗?
我正在使用旧的随机数据覆盖我的硬盘驱动器dd:
dd if=/dev/urandom of=/dev/disk/by-uuid/etc bs=512
Run Code Online (Sandbox Code Playgroud)
这是一个 2TB 阵列,而我的 MacBook(运行 Linux,好吗?)只能以大约 3.7MB/s 的速度写入数据,这非常可悲,因为我在家里看到我的台式机达到 20MB/s。今晚回家的时候,我想在dd这里停止跑步,把它带回家,看看用更强大的机器可以在一夜之间取得什么样的进步。
我一直在使用一个简单的循环来监控进度:
while true; do kill -USR1 $PID ; sleep 10 ; done
Run Code Online (Sandbox Code Playgroud)
输出如下所示:
464938971+7 records in
464938971+7 records out
238048755782 bytes (238 GB) copied, 64559.6 s, 3.7 MB/s
Run Code Online (Sandbox Code Playgroud)
如果我要dd在家恢复通行证,我将如何重新启动它?我知道seek参数,但我指的是什么,记录数还是字节数?
我刚刚通过以下方式备份了整个硬盘驱动器(50GB)ssh:
dd if=/dev/hda | buffer -s 64k -S 10m | ssh myuser@myhost "cat > ~/image.img"
Run Code Online (Sandbox Code Playgroud)
现在检查文件完整性的最佳方法是什么image.img,即如何验证是否正确复制了所有内容?
我将使用 dd 将大 (750GB) 磁盘备份到外部 USB 磁盘。
我应该使用重定向还是管道?哪个更有效率?或者有什么区别?
另外,最好的块大小是多少?USB 很可能是这里的瓶颈。
dd if=/dev/sda bs=1M | gzip -c > /mnt/sdb1/backups/disk.img.gz
gzip -dc /mnt/sdb1/backups/disk.img.gz | dd of=/dev/sda bs=1M
Run Code Online (Sandbox Code Playgroud)
对比
dd if=/dev/sda bs=1M | gzip -c | dd of=/mnt/sdb1/backups/disk.img.gz
dd if=/mnt/sdb1/backups/disk.img.gz | gzip -dc | dd of=/dev/sda bs=1M
Run Code Online (Sandbox Code Playgroud)
谢谢。
通过阅读本文,似乎将数据复制到不同的硬盘驱动器时, cat 会自动使用最佳块大小(或非常接近)。
我想知道它如何确定最佳块大小,以及 cat 使用的方法是否可以以某种方式应用于 dd。
除了从解释man的网页和--help信息,以何种方式做的命令dd,cp以及rsync不同的使用拷贝文件的时候?在哪种情况下,这些中的每一个都优于其他的,对于“优越”的某些定义,以便它应该优先使用?
dd在 Linux 上运行命令复制 ISO 时,我得到了一个长时间(几分钟)保持打开状态的进度打印。然后最后一个。
问题似乎是正在使用非常大的缓存,这会混淆dd的输出。
sudo dd bs=4M if=my.iso of=/dev/sdc status=progress
Run Code Online (Sandbox Code Playgroud)
输出(第一行显示很长时间)。
1535115264 bytes (1.5 GB, 1.4 GiB) copied, 1.00065 s, 1.5 GB/s
403+1 records in
403+1 records out
1692844032 bytes (1.7 GB, 1.6 GiB) copied, 561.902 s, 3.0 MB/s
Run Code Online (Sandbox Code Playgroud)
有没有办法防止这种情况发生,以便进度输出有意义?
案例场景:
$ sudo fdisk -l
Disk /dev/sda: 223,6 GiB, 240057409536 bytes, 468862128 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x13a30a5a
Device Boot Start Final Sectors Size Id Type
/dev/sda1 * 2048 1333247 1331200 650M 27 WinRE NTFS hidden
/dev/sda2 1333248 264058879 262725632 125,3G 7 HPFS/NTFS/exFAT
/dev/sda3 264060926 468860927 204800002 97,7G 5 Extended
/dev/sda5 264060928 …Run Code Online (Sandbox Code Playgroud) 做 iedd bs=4M if=archlinux.iso of=/dev/sdx status=progress oflag=sync或做之间有什么区别cp archlinux.iso /dev/sdx && sync,有理由使用一个而不是另一个吗?(除了 dd 中漂亮的进度条)