如何在WSL上使用dd?

时间:2018-05-21 05:25:25

标签: unix dump windows-subsystem-for-linux

如何使用dd命令在WSL中转储可移动磁盘的内容?

当我跑步时,

dd if=/mnt/d of=sdDump bs=512 count=1

我收到错误dd: error reading '/mnt/d': Is a directory

我按照steps shown here安装了磁盘:

sudo mkdir /mnt/d
sudo mount -t drvfs D: /mnt/d

这样做可以让我通过ls查看磁盘上的文件,但运行dd会产生上述错误。

3 个答案:

答案 0 :(得分:4)

这是使用中的类别错误。 dd不使用目录,它适用于文件。这些文件可以是device files(如Linux上的/dev/sda/dev/urandom),也可以是常规文件(如echo foo >> myfile.txt)。您尝试传递的内容是已挂载文件系统中的目录。

不幸的是,WSL似乎不支持访问您的块设备文件(即它没有/dev)。您可以在问题跟踪器上关注this功能请求,以了解他们何时会添加支持。

答案 1 :(得分:1)

正如@ asad-saeeduddin所说,WSL没有块级访问,但这并不意味着您不能在Windows上使用dd!

我发现dd是与Windows版Git一起安装的工具集的一部分。安装后,您可以在 C:\ Program Files \ Git \ usr \ bin \ dd.exe

中找到它

与/ dev / sda等效的Windows是\。\ PHYSICALDRIVE0,您可以使用以下命令找到本地计算机设备的正确ID(还返回扇区大小):

Get-WmiObject Win32_diskdrive | select Caption,DeviceID,BytesPerSector,InterfaceType,Size

答案 2 :(得分:0)

mount命令的典型用法是指定要挂载的内容(设备,在* nix上设备实际上只是一种特殊类型的文件)以及你想要挂载它的位置(目录)。 dd命令需要某种类型的文件。在您的示例中,D:设备,因此这是您需要传递给dd的参数:

dd if=D: of=sdDump bs=512 count=1

免责声明:我没有WSL经验,但几十年来我一直在使用mountdd