Windows equivalente para dd

40

Preciso ler e escrever várias imagens de cartões flash. A maneira como eu sempre fazia isso no linux era com o dd, e isso funcionou. O que é um bom equivalente do Windows?

Simplificando, eu preciso ser capaz de ler um cartão inteiro em um arquivo e vice-versa. Eu tentei o WinDD , mas isso parece operar em partições em vez de dispositivos inteiros, mas eu preciso ser capaz de despejar todo o disco / cartão e sua tabela de partições, independentemente do seu conteúdo.

Usando o Windows 7 de 64 bits, com o leitor de cartão em uma porta USB3.

Jarmund
fonte

Respostas:

20

Experimente o Win32DiskImager , ele pode gravar imagens em discos.

Logern
fonte
5
Está hospedado no SourceForge, que tem um histórico de inclusão de malware em distribuições, contra a vontade dos proprietários do projeto. Fonte: notepad-plus-plus.org/news/notepad-plus-plus-leaves-sf.html
Scott Stevens
4
@AnthonyLozano Eu baixei o win32diskimager do sourceforge, ele não possui nenhum malware e é amplamente usado e até recomendado para coisas como o Raspberry Pi para gravar imagens de disco. Existe uma bifurcação no github, mas você deve compilá-lo você mesmo github.com/bizplay/win32-disk-imager
Logern
2
Comecei a usar o Chocolatey para todos os meus utilitários. Pense no apt-get para Windows usando a estrutura do NuGet. Existe um pacote win32diskimager que é instalado sem problemas. Portátil também. chocolatey.org
Mike Loux
4
Isso não funciona para dispositivos sem letras de partição atribuídas a eles, portanto, é inútil para dispositivos com partições não reconhecidas ou nenhuma partição. Não é equivalente a dd.
Xerz
1
Ele não cria um arquivo de imagem compatível com dd, na verdade, tenta entender o layout do disco e produz um arquivo zip com cada partição que reconhece em um arquivo separado. E no meu caso, tive problemas restaurando os arquivos de volta para partições novamente
user230910
20

Basta usar o dd no Windows ... ele funciona perfeitamente, mesmo que seja um projeto antigo.

Eugen Rieck
fonte
Parece ter um problema no Windows 10. Alguém está tendo problemas com o .6 beta 3?
TravisWhidden
@TravisWhidden que tipo de problemas? Eu experimentei alguns erros "incapaz de gravar", mas não tenho certeza se esse é o mesmo problema.
Scott Stevens
Ele não funciona para mim na minha máquina Win7
Aaron
Isso parece funcionar, mas parece slooooow ...
user230910
Obrigado, funcionou muito bem para mim.
Jesse Busman
14

Rufus funciona como esperado. Escolha 'DD Image' para 'Criar disco inicializável usando'.

A fonte é publicada no GitHub: https://github.com/pbatard/rufus .

Minha experiência: o Win32DiskImager não detectou o u-SD através de um leitor USB-3; dd para Windows, dd compilado pelo MinGW, dd do Unix Utils e dd do VIA VirtualBox VM USB3 do Linux dd eram inaceitavelmente lentos; Ainda não encontrei uma linha de comando equivalente ao Windows que possa superar as velocidades de gravação de 50 MB / s que estou vendo com o Rufus.

mstrthealias
fonte
Meu voto para Rufus também. Nenhuma das outras respostas propostas funcionou para mim no Windows 10 Pro v1703. Ok ... vamos ser honestos ... Eu não tentei a solução Python.
Doug Wilson
3
É realmente bom para pré-carregar imagens em sticks USB, mas ele não faz metade do que dd pode fazer, por isso não é realmente "equivalente"
Rolf
3
Isso não é válido, pois permite gravar imagens em discos, não para ler esses discos.
Xerz 14/04/19
2
Rufus produziu um disco com soma de verificação diferente da imagem, para mim.
fuzzyTew
1
É raro ver hoje um aplicativo útil com apenas 1 MB de tamanho. Que ótima ferramenta!
Gareth Davidson
9

Primeiro, eu também tentei o Win32DiskImager, que eu pensei que estava fazendo apenas uma cópia da partição com base em sua exibição (não, ele pode fazer backup de um cartão SD inteiro), então continuei pesquisando.

Meu favorito atual é HDDRawCopy . Ele copia para / do arquivo uma imagem de disco inteira, mas não particiona separadamente. Ele cria imagens compactadas ou compatíveis com dd em tempo real - não tão eficiente quanto o 7zip (nem sequer atinge o desempenho ZIP), mas você não precisa tocar na imagem novamente.

Andris
fonte
2
O HDD Raw Copy conseguiu detectar uma unidade SCSI em branco que o "dd for windows" não conseguiu. Ele me permitiu duplicar um disco HFS do Windows! Obrigado!
HackSlash
2
Note-se que, por algum motivo HDD RAW cópia tem um limite de 50MB / s
Aparelho
9

surpreso que ninguém tenha mencionado os utilitários principais do GNU para Windows , eu os uso há anos. são binários de 32 bits, mas aparentemente, exceto less, ainda funcionam no Windows 7 de 64 bits .

exemplo de uso:

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

os tempos relatados são um pouco estranhos, mas, caso contrário, parece funcionar bem.

jcomeau_ictx
fonte
1
Copia conteúdo corretamente com mais de 4 gibibytes? A última vez que verifiquei (há muito tempo) foi compilada no tempo de execução da Microsoft, onde off_té um long, portanto, as compensações são limitadas a 31 ou 32 bits ... o que é uma grande decepção ao usar dd.
AntoineL 15/09/19
Eu nunca tentei, desculpe.
Jcomeau_ictx 18/09/19
O Git for Windows vem (no momento da redação) com o dd versão 8.30, compilado em 2018. Parece funcionar bem com /dev/sdXnomes, pelo menos do Git Bash em execução como administrador. Provavelmente perdeu algumas limitações de 32 bits há algum tempo.
mwfearnley
8

Eu estava apenas tentando verificar se uma unidade foi apagada, então tudo o que importava era ler, mas esse script python poderia ser modificado para fazer algo assim se você não confiar nesses executáveis ​​como eu não. Abra o Windows Partition Manager para obter qual é o número da unidade de sua preferência e altere apenas 2 para esse número. Você pode escrever isso ou, se fez wb em vez de rb, pode escrever. Boa sorte

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')
alguém que passou muito tempo
fonte
3
Só para constar, acho que seria muitas vezes mais rápido fazer mais de um byte de cada vez. E não há condição de erro, o script depende de bytes não nulos ocorrendo desde o início e você percebe que ele imprimiu "concluído" desde o início.
Luc
2
Como você sabe qual unidade segmentar?
HackSlash
Python é a ferramenta errada, um loop apertado como esse. É melhor criar um buffer de 256k de todos os zeros e compará-lo aos 256k extraídos do disco de uma só vez. Além de ter algum tratamento de exceção.
Gareth Davidson
3

Para um verdadeiro equivalente ddao Windows, não procure alternativas incompletas - basta instalar o GNU real dd. A melhor maneira de fazer isso é provavelmente o Cygwin , uma distribuição bastante completa do GNU e outras ferramentas FOSS. Pense nisso como instalar o "Linux" (ou melhor, uma distribuição Linux (GNU)) no Windows, sem nenhuma camada de emulação ou uma caixa preta limitada como o Windows Subsystem for Linux. É o mais nativo possível.

Para usá-lo, você precisará:

  1. Instale um ambiente básico do Cygwin. Faça isso conforme as instruções no site , deixe os padrões se precisar apenas dd- mas você também pode se divertir e obter uma dica sobre o que ele tem a oferecer.
  2. Abra o terminal Cygwin como administrador e verifique em qual dispositivo / partição você deseja trabalhar cat /proc/partitions.
  3. Use ddcomo faria em qualquer Linux (GNU).
Xerz
fonte
você pode até usar o cygwin no prompt de comando do DOS ... (eu uso o tempo todo para cat / grep / tail / ...) e até mesmo no console do DOS / Windows "ls -la / proc" funciona bem ... um dos meus favoritos ...
ZEE 17/04
3

uau, todas essas respostas e o DISM existe há quanto tempo? certeza de que foi incorporado no Windows 7 desde o início.

DISM / capture-image /image-file:d:\backup.wim / captureir: c: \ / name: simpleback

existem muitas configurações que você pode ajustar. depois da captura - implante na nova mídia de armazenamento usando as ferramentas dism também.

Jonathan Warren
fonte
Não funciona: The /image-file option is not recognized in this context.. Deveria ser/imagefile
yahol
1

Depois de experimentar algumas das ferramentas recomendadas aqui, acabei usando o balena Etcher no Windows 10. (A Rufus me deu um resultado com uma soma de verificação incorreta. O HDDRawCopy me deu um erro de gravação.)

fuzzyTew
fonte
1

rawcopyde http://www.ltr-data.se/opencode.html/ . rawcopy -hmostra manual.

Se você precisar /dev/zeroe /dev/random, há "Driver de dispositivo zero e aleatório" no mesmo site.

fau
fonte