windows еквівалент для dd


40

Мені потрібно читати та писати різні зображення флеш-карти. Те, як я завжди робив це в Linux, було з dd, і це зробило трюк. Що таке хороший еквівалент Windows?

Простіше кажучи, мені потрібно вміти читати всю карту у файл і навпаки. Я спробував WinDD , але це, здається, працює на розділах, а не на цілих пристроях, але мені потрібно мати можливість скинути весь диск / карту та її таблицю розділів незалежно від вмісту.

Використовуючи Windows 7 64bit, із зчитувачем карт на порту USB3.

Відповіді:


20

Спробуйте Win32DiskImager , він може записувати зображення на диски.


5
Він розміщений на SourceForge, який має історію включення зловмисного програмного забезпечення до дистрибутивів, проти бажань власників проекту. Джерело: notepad-plus-plus.org/news/notepad-plus-plus-leaves-sf.html
— Скотт Стівенс

3
@AnthonyLozano Я завантажив win32diskimager з sourceforge, у нього немає шкідливого програмного забезпечення, і він широко використовується і навіть рекомендується для таких речей, як Raspberry Pi, для запису зображень на диск. На github є вилка, але ви повинні її скласти самостійно github.com/bizplay/win32-disk-imager
— Logern

2
Я почав використовувати Chocolatey для всіх своїх комунальних послуг. Подумайте, apt-get для Windows, використовуючи рамки NuGet. Існує пакет win32diskimager, який встановлюється без проблем. Портативний, а також. chocolatey.org
— Майк Лукс

4
Це не працює для пристроїв без присвоєних їм літер розділів, тому це марно для пристроїв з нерозпізнаними розділами або взагалі без розділів. Не еквівалент dd.
— Ксерц

1
Він не створює файл сумісного зображення DD, адже він намагається зрозуміти макет диска і створює zip-файл із кожним розділом, який він розпізнає в окремому файлі. І в моєму випадку у нього виникли проблеми з відновленням файлів знову до розділів
— user230910

20

Просто використовуйте dd для WIndows ... він відмінно працює, хоча це досить старий проект.


Здається, що у Windows 10. у когось проблеми з .6 бета-3?
— TravisВідкритий

@TravisWhidden які проблеми? У мене виникли деякі помилки "не в змозі написати", але я впевнений, що це та сама проблема.
— Скотт Стівенс

Це не працює для мене на моїй машині Win7
— Аарон

Це, здається, працює, але, здається, slooooow ...
— user230910

Дякую, чудово працювали для мене.
— Джессі Бусман

14

Руфус працює як очікувалося. Виберіть "DD Image" для "Створення завантажувального диска за допомогою".

Джерело публікується на GitHub: https://github.com/pbatard/rufus .

Мій досвід: Win32DiskImager не виявив u-SD через USB-3 зчитувач; dd для Windows, MinGW, складений dd, Unix Utils dd та Linux dd VIA VirtualBox VM USB3, пропуск через всі неприпустимо повільний; Мені ще потрібно знайти еквівалент командного рядка Windows, який може перемогти швидкість запису 50 Мб / с, яку я бачу з Руфусом.


Я також голосую за Руфуса. Жоден з інших запропонованих відповідей не працював для мене в Windows 10 Pro v1703. Гаразд ... давайте бути чесними ... Я не пробував рішення Python.
— Doug Wilson

3
Це дійсно добре для попереднього завантаження зображень на USB-накопичувачі, але це не робить половину того, що може зробити ДД, тому це насправді не "еквівалент"
— Rolf

3
Це не вірно, оскільки це дозволяє лише записувати зображення на диски, а не читати ці диски.
— Xerz

2
Руфус для мене випустив диск з різною контрольною сумою від зображення.
— fuzzyTew

1
Сьогодні рідко можна побачити корисну програму розміром лише 1 Мб. Який чудовий інструмент!
— Гарет Девідсон

9

здивований, що ніхто не згадував основні утиліти GNU для Windows , я використовую їх протягом багатьох років. вони 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_tзнаходиться long, отже, компенсації обмежені 31 або 32 бітами ..., що є великим обманом при використанні dd.
— AntoineL

Я ніколи не пробував, вибачте.
— jcomeau_ictx

Git для Windows поставляється (під час написання) з dd версією 8.30, складеною у 2018 році. Здається, це добре працює з /dev/sdXіменами, принаймні від Git Bash, що працює в якості адміністратора. Можливо, він втратив будь-які 32-бітні обмеження деякий час тому.
— mwfearnley

8

Спочатку я також спробував Win32DiskImager, який, на мою думку, робив лише копію розділу на основі його відображення (ні, він може створити резервну копію всієї SD-карти), тому я продовжив пошук.

Мій поточний улюблений - HDDRawCopy . Він копіює в / з файлу ціле зображення диска, але не розділи окремо. Він створює сумісні або стислі зображення dd на льоту - не настільки ефективний, як 7zip (навіть не досягає продуктивності ZIP), але не потрібно торкатися зображення знову.


2
HDD Raw Copy вдалося виявити порожній привід SCSI, який "dd для Windows" не міг. Це дозволило мені дублювати HFS диск з Windows! Спасибі!
— HackSlash

2
Зауважте, що чомусь HDD RAW COPY має обмеження 50MB / s
— Gizmo

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, витягнутим з диска за один раз. Плюс наявність певної обробки виключень.
— Гарет Девідсон

3

Для справжнього еквівалента ddв Windows, не шукайте напівфабрикованих альтернатив - просто встановіть справжній GNU dd. Найкращий спосіб зробити це, мабуть, Cygwin , досить повний розподіл GNU та інших інструментів FOSS. Подумайте про це, як встановити "Linux" (а точніше, дистрибутив Linux (GNU) Linux) поверх Windows, без будь-яких шарів емуляції чи обмеженого чорного поля, як підсистема Windows для Linux. Це так само рідно, як це стає.

Для того, щоб ним скористатися, вам потрібно буде:

  1. Встановіть базове середовище Cygwin. Зробіть так, як вказано на веб-сайті , просто залиште параметри за замовчуванням, якщо вам це потрібно, ddале ви також можете трохи повеселитися та отримати підказку щодо того, що він може запропонувати.
  2. Відкрийте термінал Cygwin як адміністратор , а потім перевірте, над яким пристроєм / розділом ви хочете працювати cat /proc/partitions.
  3. Використовуйте так, ddяк і на будь-якому (GNU) Linux.

Ви навіть можете використовувати cygwin з командного рядка DOS ... (я використовую весь час для cat / grep / tail / ...) і навіть на консолі DOS / Windows "ls -la / proc" працює чудово ... один із моїх
— фаворитів

3

вау, всі ці відповіді та DISM існували вже давно? Досить впевнений, він був вбудований у Windows 7 з початку руху.

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

Є безліч налаштувань, які можна налаштувати. після захоплення - розгортайте на нових носіях зберігання, використовуючи також інструменти dism.



Чи не працює: The /image-file option is not recognized in this context.. Має бути/imagefile
— yahol

1

Спробувавши деякі інструменти, рекомендовані тут, я застосував балену Етчер у Windows 10. (Руфус дав мені результат із неправильною контрольною сумою. HDDRawCopy видав мені помилку в записі.)


1

rawcopyз http://www.ltr-data.se/opencode.html/ . rawcopy -hпоказує посібник.

Якщо вам потрібно /dev/zeroі /dev/randomє, з цього ж сайту є "нульовий і випадковий драйвер пристрою".

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.