在 Windows 下无法使用 `dd` 命令制作图像文件

在 Windows 下无法使用 `dd` 命令制作图像文件

我尝试使用ddWindows cygwin 下的命令复制 SD 卡,但出现以下错误:

>>> dd if=i:\ of=k:\backup_sd_card.img bs=4M dd: error reading 'i:\': Is a directory 0+0 records in 0+0 records out 0 bytes copied, 0.00629135 s, 0.0 kB/s

或者我也尝试:

>>> dd if=\\?\Volume{ab627f51-f12b-11e7-bc1b-e277073b2b9d}\ of=k:\backup_sd_card.img bs=1M dd: failed to open '\?Volumeab627f51-f12b-11e7-bc1b-e277073b2b9d\': No such file or directory

驱动器签名取自mountvol命令。

我正在使用的 dd 版本:

>>> dd --version dd (coreutils) 8.26 Packaged by Cygwin (8.26-2)

如何使用dd这样的图像进行复制和恢复?

答案1

您不应该将 DOS 语法目录与 dd 一起使用!!目录语法与 Linux 类似。您从哪里想到要使用这种语法!至少尝试遵循某种指南!

例如,此命令对我有用。(从管理 cmd 提示符完成),您可以更改-b 1M-b 4M(您有 4M,也许后者更快,但我发现 1M 就足够了)

(好的,我正在使用 ddrescue(一个 gnu 包,实际上比 dd 更好),但是我指定分区的方式与您的方式相反,也适用于 dd)

$ ddrescue -r3 -b 1M -d /dev/sdb /cygdrive/c/crp/fsfwr_.fc

在显示什么挂载在何处时,Cygwin 比 Linux 更笨拙

您可以查看 /dev 并执行类似的操作$ cygpath -w sdb1,它可能会说例如 \\.\F:

一个 Linux 专家向我展示了一个在 cygwin 中使用的疯狂命令,它可以自动执行 cygpath -w 命令,并能为你提供安装位置的列表

for F in $(gawk '{if (FNR > 2) print "/dev/" $4;}' /proc/partitions) ; do echo "$F $(cygpath -w $F)" ; done

然后它显示像

/dev/sda \\.\PhysicalDrive0
/dev/sda1 \\.\Volume{b6ef2ec3-451e-11e2-822b-806e6f6e6963}
/dev/sda2 \\.\C:
/dev/sdb \\.\PhysicalDrive1
/dev/sdb1 \\.\F:
/dev/sdc \\.\PhysicalDrive2
/dev/sdc1 \\.\G:
/dev/sdc2 \\.\Volume{b6ef2ec3-451e-11e2-822b-806e6f6e6963}5

因此,dd 行的语法将如下所示,尽管可能不是 sdb1,但您可以运行上面的命令来查看要使用哪个 /dev。

dd if=/dev/sdb1 of=/cygdrive/k/backup_sd_card.img bs=4M

答案2

C:是驱动器,\是驱动器上的根目录。

您一直在告诉dd将图像写入驱动器的根目录,我确信这会正常工作:dd if=image.file of=C

相关内容