Windows等效于dd


40

我需要读写各种闪存卡图像。我一直在linux中执行此操作的方式是使用dd,并且达到了目的。什么是好的Windows等效产品?

简而言之,我需要能够将整个卡读入文件,反之亦然。我尝试使用WinDD,但这似乎可以在分区而不是整个设备上运行,但是无论其内容如何,​​我都必须能够转储整个磁盘/卡及其分区表。

使用Windows 7 64bit,并将读卡器放在USB3端口上。

Answers:


20

尝试使用Win32DiskImager,它可以将映像写入磁盘。


5
它托管在SourceForge上,SourceForge具有将恶意软件包含在发行版中的历史,违背了项目所有者的意愿。资料来源:notepad-plus-plus.org/news/notepad-plus-plus-leaves-sf.html
Scott Stevens,

3
@AnthonyLozano我从sourceforge下载了win32diskimager,它没有任何恶意软件,并且被广泛使用,甚至推荐用于Raspberry Pi等向其写入磁盘映像的事情。github上有一个fork,但您必须自己编译github.com/bizplay/win32-disk-imager
Logern

2
我已经开始将Chocolatey用于所有实用程序。使用NuGet的框架为Windows考虑apt-get。那里有一个win32diskimager软件包,可以毫无问题地进行安装。便携式的也一样。 Chocolatey.org
Mike Loux

4
这对于没有分配分区号的设备不起作用,因此对于分区无法识别或完全没有分区的设备来说是没有用的。不等同于dd
Xerz

1
它不会生成与dd兼容的映像文件,实际上,它会尝试了解磁盘布局,并生成一个zip文件,并在单独的文件中识别出每个分区。在我的情况下,它又遇到了将文件再次还原到分区的问题
user230910

20

只需对Windows使用dd ...即使它是一个很老的项目,它也能很好地工作。


似乎在Windows 10下有问题。有人对.6 beta 3有问题吗?
TravisWhidden

@TravisWhidden什么样的问题?我遇到了一些“无法编写”错误,但是不确定是否是同样的问题。
斯科特·史蒂文斯

它对我的Win7机器不起作用
Aaron

这似乎可行,但似乎很简单……
user230910

谢谢,为我做得很好。
杰西·布斯曼

14

Rufus按预期工作。为“使用创建启动磁盘”选择“ DD映像”。

源码发布在GitHub上:https : //github.com/pbatard/rufus

我的经验:Win32DiskImager没有通过USB-3读取器检测到u-SD。Windows的dd,MinGW编译的dd,Unix的utils的dd和Linux的dd VIA VirtualBox VM USB3的传递速度都是令人无法接受的。我还没有找到等效的Windows命令行,它可以超过我使用Rufus看到的50MB / s的写入速度。


我也对Rufus投票。Windows 10 Pro v1703上没有其他建议的答案对我有用。好的...说实话...我没有尝试过Python解决方案。
道格·威尔逊

3
这对于在USB记忆棒上预加载图像确实非常有用,但它做不到dd可以做的一半,因此它并不是真正的“等效”
Rolf

3
这是无效的,因为它仅允许在磁盘上写入映像,而不能读取这些磁盘。
Xerz

2
Rufus为我制作了一个具有与映像不同的校验和的磁盘。
FuzzyTew18年

1
今天很少见到有用的应用程序,它只有1mb。多么棒的工具!
Gareth Davidson

9

令人惊讶的是没有人提到用于Windows的GNU核心实用程序,我使用它们已有多年了。它们是32位二进制文​​件,但显然,除了less它们,它们仍在Windows 7 64位环境下工作

用法示例:

C:\Windows\Temp>dd if="\\.\s:" of=sdrive.dat bs=4096
25599+0 records in
25599+0 records out
104853504 bytes (105 MB) copied, 30.3147 seconds, -56145186608800624000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000 MB/s

C:\Windows\Temp>dd if="\\.\physicaldrive0" of=mbr.dat bs=512 count=1
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.0210012 seconds, -891479495977528 kB/s

报告的时间有点奇怪,但否则似乎运行良好。


1
它可以正确复制超过4吉字节的内容吗?上一次(很久以前)检查它是针对Microsoft的运行时(其中off_ta )进行编译的long,因此偏移量限制为31或32位...这在使用时是一个很大的欺骗dd
AntoineL

我从未尝试过,对不起。
jcomeau_ictx

适用于Windows的Git(在撰写本文时)随附于2018年编译的dd版本8.30。它似乎可以很好地使用/dev/sdX名称,至少从以Administrator身份运行的Git Bash中可以使用。它可能在前一段时间失去了任何32位限制。
mwfearnley

8

首先,我还尝试了Win32DiskImager,我认为它只是根据其显示内容进行分区复制(不,它可以备份整个SD卡),因此我继续搜索。

我目前最喜欢的是HDDRawCopy。它将整个磁盘映像复制到文件中或从文件复制文件,但不单独分区。它可以动态创建与dd兼容或压缩的图像-不如7zip高效(甚至无法达到ZIP性能),但您无需再次触摸图像。


2
HDD Raw Copy能够检测到“ dd for windows”无法检测到的空白SCSI驱动器。它允许我从Windows复制HFS磁盘!谢谢!
HackSlash

2
请注意,由于某种原因,HDD RAW COPY的限制为50MB / s
Gizmo '18

8

我只是想验证驱动器是否已擦除,所以我关心的只是读取,但是如果您不信任那些我不喜欢的可执行文件,则可以将该Python脚本修改为执行类似的操作。打开Windows分区管理器以获取您关心的驱动器的驱动器号,然后将其2更改为该数字。然后,您可以将其写出,或者如果您使用wb而不是rb,则可以编写。祝好运

import sys

f = open('\\\\.\\PhysicalDrive2','rb')
a = f.read(1)
i = 1

kb = 1024
mb = kb*1024

while a == b'\x00':
    i+=1
    if i % mb == 0:
        sys.stdout.write('\r{} MB scanned'.format(i/mb))
    a = f.read(1)

print('done')

3
仅作记录,我认为一次完成一个以上的字节会快很多倍。而且没有错误条件,该脚本依赖于较早出现的非空字节,并且您发现它在较早时打印为“完成”。
卢克,

2
您如何知道要定位的驱动器?
HackSlash

Python是错误的工具,像这样的紧密循环。您最好创建一个全零的256k缓冲区,并将其与一次从磁盘中拉出的256k进行比较。再加上一些异常处理。
Gareth Davidson

3

dd在Windows上实现真正的等同,不要寻找半生半熟的替代方案,只需安装真正的GNU即可dd。最好的方法可能是Cygwin,它是GNU和其他FOSS工具的相当完整的发行版。可以将其视为在Windows之上安装“ Linux”(或更确切地说是(GNU)Linux发行版),而无需任何仿真层或像Windows子系统(如Linux)那样的有限黑匣子。它是原生的。

为了使用它,您需要:

  1. 安装基本的Cygwin环境。这样做的指示,在网站上,只保留默认值,如果你只需要dd-但你也可以有一些乐趣和得到什么它提供一个提示。
  2. 以管理员身份打开Cygwin终端,然后检查要使用的设备/分区cat /proc/partitions
  3. 使用dd,你会在任何(GNU)的Linux。

您甚至可以从DOS命令提示符下使用cygwin ...(我一直使用cat / grep / tail / ...),甚至在DOS / Windows控制台中,“ ls -la / proc”也可以正常工作...我的最爱之一
ZEE


1

在尝试了这里推荐的一些工具之后,我最终在Windows 10 上使用了balena Etcher。(Rufus给我的结果是错误的校验和。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.