odpowiednik systemu Windows dla dd

40

Muszę czytać i pisać różne obrazy kart flash. Sposób, w jaki zawsze to robiłem w Linuksie, był z dd i to załatwiło sprawę. Co to jest dobry odpowiednik systemu Windows?

Mówiąc najprościej, muszę być w stanie odczytać całą kartę do pliku i odwrotnie. Próbowałem WinDD , ale wydaje się, że działa ono na partycjach, a nie na całych urządzeniach, ale muszę mieć możliwość zrzucenia całego dysku / karty i tabeli partycji niezależnie od jego zawartości.

W systemie Windows 7 64bit z czytnikiem kart na porcie USB3.

Jarmund
źródło

Odpowiedzi:

20

Wypróbuj Win32DiskImager , może zapisywać obrazy na dyskach.

Logern
źródło
5
Jest hostowany na SourceForge, który ma historię dołączania złośliwego oprogramowania do dystrybucji, wbrew życzeniom właścicieli projektu. Źródło: notepad-plus-plus.org/news/notepad-plus-plus-leaves-sf.html
Scott Stevens
3
@AnthonyLozano Pobrałem program win32diskimager z sourceforge, nie ma on żadnego złośliwego oprogramowania i jest szeroko stosowany, a nawet zalecany do takich rzeczy, jak Raspberry Pi do zapisywania obrazów dysków. Na github jest widelec, ale musisz go samodzielnie skompilować github.com/bizplay/win32-disk-imager
Logern
2
Zacząłem używać Chocolatey do wszystkich moich narzędzi. Pomyśl o apt-get dla Windows za pomocą frameworka NuGet. Jest tam pakiet win32diskimager, który instaluje się bez problemów. Również przenośny. chocolatey.org
Mike Loux
4
Nie działa to na urządzeniach bez przypisanych im liter partycji, dlatego jest bezużyteczne dla urządzeń z nierozpoznanymi partycjami lub bez partycji. Nie jest to odpowiednik dd.
Xerz,
1
Nie tworzy pliku obrazu zgodnego z dd, w rzeczywistości próbuje zrozumieć układ dysku i tworzy plik zip z każdą rozpoznaną partycją w osobnym pliku. I w moim przypadku wystąpiły problemy z przywracaniem plików z powrotem do partycji
użytkownik230910,
20

Wystarczy użyć dd dla Windows ... działa idealnie, mimo że jest to dość stary projekt.

Eugen Rieck
źródło
Wygląda na to, że masz problem z Windows 10. Ktoś ma problemy z .6 beta 3?
TravisWhidden
@TravisWhidden jakie problemy? Wystąpiły błędy „niemożność napisania”, ale nie jestem pewien, czy to ten sam problem.
Scott Stevens,
To nie działa dla mnie na mojej maszynie Win7
Aaron
To wydaje się działać, ale wydaje się
powolne
Dziękuję, pracował dla mnie świetnie.
Jesse Busman
14

Rufus działa zgodnie z oczekiwaniami. Wybierz „Obraz DD” dla „Utwórz dysk startowy za pomocą”.

Źródło zostało opublikowane na GitHub: https://github.com/pbatard/rufus .

Moje doświadczenie: Win32DiskImager nie wykrył u-SD przez czytnik USB-3; dd dla Windows, skompilowane przez MinGW dd, Unix Utils dd i Linux dd VIA VirtualBox VM VM3 tranzyt przez wszystkie były niedopuszczalnie wolne; Muszę jeszcze znaleźć odpowiednik wiersza poleceń systemu Windows, który mógłby pokonać prędkość zapisu 50 MB / s, którą widzę w Rufusie.

mstrthealias
źródło
Mój głos również na Rufusa. Żadna z pozostałych proponowanych odpowiedzi nie działała dla mnie w systemie Windows 10 Pro v1703. Ok ... bądźmy szczerzy ... Nie wypróbowałem rozwiązania Python.
Doug Wilson
3
Jest naprawdę dobry do wstępnego ładowania obrazów na pamięci USB, ale nie robi połowy tego, co może zrobić dd, więc nie jest tak naprawdę „równoważny”
Rolf
3
Nie jest to poprawne, ponieważ pozwala tylko zapisywać obrazy na dyskach, a nie czytać te dyski.
Xerz,
2
Rufus stworzył dla mnie dysk z inną sumą kontrolną niż na obrazie.
fuzzyTew
1
Rzadko spotyka się dziś użyteczną aplikację o wielkości zaledwie 1 MB. Co za wspaniałe narzędzie!
Gareth Davidson
9

zaskoczony, że nikt nie wspominał o narzędziach GNU do systemu Windows , używam ich od lat. są 32-bitowe pliki binarne, ale jak widać, z wyjątkiem lessone nadal działać pod Windows 7 64-bity .

przykładowe użycie:

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

zgłaszane czasy są nieco dziwne, ale poza tym wydaje się, że działają dobrze.

jcomeau_ictx
źródło
1
Czy poprawnie kopiuje zawartość powyżej 4 gibibajtów? Ostatnim razem, gdy sprawdziłem (dawno temu), został on skompilowany z środowiskiem off_turuchomieniowym Microsoftu, gdzie jest a long, dlatego przesunięcia są ograniczone do 31 lub 32 bitów ... co jest dużym oszustwem podczas używania dd.
AntoineL
Nigdy nie próbowałem, przepraszam.
jcomeau_ictx
Git na Windows jest dostarczany (w momencie pisania) z wersją dd 8.30, skompilowaną w 2018 roku. Wydaje się, że działa dobrze z /dev/sdXnazwami, przynajmniej od Git Bash działającego jako Administrator. Prawdopodobnie jakiś czas temu stracił jakieś 32-bitowe ograniczenia.
mwfearnley
8

Najpierw wypróbowałem także program Win32DiskImager, który, jak sądzę, robi tylko kopiowanie partycji na podstawie jego wyświetlania (nie, może wykonać kopię zapasową całej karty SD), więc kontynuowałem wyszukiwanie.

Moim ulubionym jest HDDRawCopy . Kopiuje do / z pliku cały obraz dysku, ale nie oddzielnie partycji. Tworzy w locie kompatybilne lub skompresowane obrazy dd - nie tak wydajne jak 7zip (nawet nie osiąga wydajności ZIP), ale nie musisz ponownie dotykać obrazu.

Andris
źródło
2
HDD Raw Copy mógł wykryć pusty dysk SCSI, którego „dd dla Windows” nie mógł. Pozwoliło mi to zduplikować dysk HFS z systemu Windows! Dzięki!
HackSlash
2
Należy pamiętać, że z jakiegoś powodu HDD RAW COPY ma limit 50 MB / s
Gizmo
8

Próbowałem tylko zweryfikować, czy dysk został wyczyszczony, więc liczyłem się tylko z czytaniem, ale ten skrypt w języku Python można zmodyfikować, aby zrobić coś takiego, jeśli nie ufasz plikom wykonywalnym, tak jak ja. Otwórz Menedżera partycji systemu Windows, aby uzyskać numer dysku, na którym ci zależy, i po prostu zmień 2 na tę liczbę. Następnie możesz to napisać lub jeśli zrobiłeś wb zamiast rb, możesz napisać. Powodzenia

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')
ktoś, kto spędził zbyt długo
źródło
3
Dla przypomnienia, myślę, że byłoby wiele razy szybsze wykonanie więcej niż jednego bajtu na raz. I nie ma warunku błędu, skrypt opiera się na bajtach niepustych, które pojawiają się wcześnie, a ty łapiesz, że wydrukowano „zrobione” wcześnie.
Luc
2
Skąd wiesz, do którego napędu chcesz dotrzeć?
HackSlash
Python jest niewłaściwym narzędziem, takim jak wąska pętla. Lepiej byłoby stworzyć bufor 256k wszystkich zer i porównać go do 256k pobranych z dysku za jednym razem. Plus pewne obsługę wyjątków.
Gareth Davidson
3

Aby znaleźć prawdziwy odpowiednik ddsystemu Windows, nie szukaj na wpół wypalonych alternatyw - po prostu zainstaluj prawdziwy GNU dd. Najlepszym sposobem na to jest prawdopodobnie Cygwin , całkiem kompletna dystrybucja GNU i innych narzędzi FOSS. Pomyśl o tym jak o instalacji „Linuksa” (a raczej dystrybucji (GNU) Linux) na Windowsie, bez żadnych warstw emulacji lub ograniczonej czarnej skrzynki, takiej jak Podsystem Windows dla Linuksa. Jest tak rodzimy, jak to tylko możliwe.

Aby go użyć, musisz:

  1. Zainstaluj podstawowe środowisko Cygwin. Zrób to zgodnie z instrukcją na stronie , po prostu pozostaw domyślne, jeśli tylko potrzebujesz dd- ale możesz też się zabawić i uzyskać podpowiedź na temat tego, co ma do zaoferowania.
  2. Otwórz terminal Cygwin jako administrator , a następnie sprawdź, z którym urządzeniem / partycją chcesz pracować cat /proc/partitions.
  3. Używaj ddtak, jak na dowolnym systemie Linux (GNU).
Xerz
źródło
możesz nawet użyć cygwina z wiersza poleceń DOS ... (cały czas używam cat / grep / tail / ...), a nawet w konsoli DOS / Windows „ls -la / proc” działa dobrze ... jednym z moich ulubionych ...
ZEE
3

wow, wszystkie te odpowiedzi i DISM istnieje od jak dawna? całkiem pewne, że od samego początku był wbudowany w Windows 7.

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

istnieje wiele ustawień, które możesz dostosować. po przechwyceniu - wdrażaj na nowym nośniku pamięci również przy użyciu narzędzi do usuwania.

jonathan warren
źródło
Nie działa: The /image-file option is not recognized in this context.. Powinien być/imagefile
yahol
1

Po wypróbowaniu niektórych narzędzi zalecanych tutaj, ostatecznie użyłem baleny Etcher na Windows 10. (Rufus dał mi wynik z niepoprawną sumą kontrolną. HDDRawCopy dał mi błąd zapisu).

fuzzyTew
źródło
1

rawcopyz http://www.ltr-data.se/opencode.html/ . rawcopy -hpokazuje instrukcję.

Jeśli potrzebujesz /dev/zeroi /dev/random, istnieje „Zero i losowy sterownik urządzenia” z tej samej strony.

fau
źródło