我想使用 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
我认为sync
和noerror
选项都conv
可能导致问题。如果读取时出现任何问题,noerror
则将继续复制可能存在问题的的数据。 sync
指出它将根据传入的块大小向每个块填充空值。
dd
如果没有这些选项,则应该逐字节复制,如果出现问题,则会出现错误。
更新
同步的定义:
当指定 conv=sync 标志时,dd 命令会用空值填充任何部分输入块。因此,如果任何读取未收到完整的数据块(由 ibs 标志指定),dd 命令会将空值插入数据流中间。从管道读取时,这种情况很常见。