设备上的“dd”会跳过任何内容吗?

设备上的“dd”会跳过任何内容吗?

我想使用 Ubuntu Live CD 实现系统磁盘备份。我使用了以下命令:

dd if=/dev/sda conv=sync,noerror bs=64K | gzip -c > /media/external/image.gz

这似乎有效。为了验证我是否删除了 sda 的内容,然后从映像中重新加载:

dd if=/dev/zero of=/dev/sda bs=1M
gunzip -c /media/external/image.gz | dd of=/dev/sda conv=sync,noerror bs=64K

然而,结果已经无法启动了。

fdisk -l备份之前和尝试恢复之后的结果相同:

WARNING: GPT (GUID Partition Table) detected on '/dev/sda'! The util
fdisk doesn't support GPT. Use GNU Parted.

Disk /dev/sda: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1       14594   117220823+  ee  GPT
/dev/sda2   *           1           1           0    0  Empty
Partition 2 does not end on cylinder boundary.

我似乎也无法安装磁盘。我尝试的文件类型不起作用(原始磁盘是可启动的 Mac OS X)。我尝试了 hfs、hfsplus、hpfs。

Ubuntu 文件资源管理器中不再显示磁盘(甚至没有显示为卸载状态)。在清零和尝试恢复之前,它显示过。

我的主要问题是:我的备份/清除/恢复顺序有什么问题?它不应该复制并恢复磁盘的所有内容,包括启动和其他内容吗?并且独立于格式执行此操作?归零会是问题的核心吗?我错过了什么?


编辑:我见过但它对我没有帮助。

外部磁盘是 NTFS。

答案1

我认为syncnoerror选项都conv可能导致问题。如果读取时出现任何问题,noerror则将继续复制可能存在问题的的数据。 sync指出它将根据传入的块大小向每个块填充空值。

dd如果没有这些选项,则应该逐字节复制,如果出现问题,则会出现错误。

更新

同步的定义:

当指定 conv=sync 标志时,dd 命令会用空值填充任何部分输入块。因此,如果任何读取未收到完整的数据块(由 ibs 标志指定),dd 命令会将空值插入数据流中间。从管道读取时,这种情况很常见。

相关内容