ñòàòüèGNU Free Documentation License ìàòåðèàëû âçÿòû èç Âèêèïåäèè Ñòàòüÿ áûëà èçìåíåíà. Îðèãèíàë ñòàòüè.

dd

Ìàòåðèàë èç Ýíöèêëîïåäèè â ñâîáîäíîé ýíöèêëîïåäèè
Ïåðåéòè ê: íàâèãàöèÿ, ïîèñê

dd (dataset definition) â ïðîãðàììà UNIX, ïðåäíàçíà÷åííàÿ êàê äëÿ êîïèðîâàíèÿ, òàê è äëÿ êîíâåðòàöèè ôàéëîâ. Íàçâàíèå óíàñëåäîâàíî îò îïåðàòîðà DD (Dataset Definition) èç ÿçûêà JCL

Ñîäåðæàíèå

[ïðàâèòü] Ââåäåíèå

Ïîñêîëüêó â UNIX î÷åíü ìíîãèå îáúåêòû ÿâëÿþòñÿ ôàéëàìè, ñïåêòð ïðèìåíåíèÿ dd ãîðàçäî øèðå, ÷åì êàæåòñÿ íà ïåðâûé âçãëÿä. Ðåãóëÿðíî âîçíèêàåò íåîáõîäèìîñòü íå ïðîñòî ñêîïèðîâàòü ôàéë èëè íåñêîëüêî ôàéëîâ (äëÿ ÷åãî ïðåäíàçíà÷åíà óòèëèòà cp), à ñêîïèðîâàòü ïåðâûå n áàéò ôàéëà, ïðîïóñòèòü m áàéò îò íà÷àëà, ïðî÷èòàòü ôàéë ñ äåôåêòíîãî íîñèòåëÿ, òðàíñëèðîâàòü ñîäåðæèìîå ôàéëà â ASCII, «ðàçâåðíóòü» ïîðÿäîê áàéò â ôàéëå (Little-Endian vs. Big-Endian),[1] ïðîñòî ñêîïèðîâàòü î÷åíü áîëüøîé ïàëëåòíûé ôàéë èëè âñå âìåñòå âçÿòîå. Äëÿ ýòîé öåëè è ñëóæèò dd.

Êðîìå âñåãî ïðî÷åãî, äàííàÿ óòèëèòà ïîçâîëÿåò ñêîïèðîâàòü ðåãèîíû èç ôàéëîâ «ñûðûõ» óñòðîéñòâ, íàïðèìåð, ñäåëàòü ðåçåðâíóþ êîïèþ çàãðóçî÷íîãî ñåêòîðà æ¸ñòêîãî äèñêà, èëè ïðî÷èòàòü ôèêñèðîâàííûå áëîêè äàííûõ èç ñïåöèàëüíûõ ôàéëîâ, òàêèõ, êàê /dev/zero èëè /dev/random.[2]

Íàçâàíèå óòèëèòû dd èíîãäà â øóòêó ðàñøèôðîâûâàþò, êàê «disk destroyer», «data destroyer» èëè «delete data», òàê êàê óòèëèòà ïîçâîëÿåò ïðîèçâîäèòü íèçêîóðîâíåâûå îïåðàöèè íà æ¸ñòêèõ äèñêàõ â ïðè ìàëåéøåé îøèáêå, òàêîé, êàê ðåâåðñ ïàðàìåòðîâ if è of, ìîæíî ïîòåðÿòü ÷àñòü äàííûõ íà äèñêå (èëè äàæå âñå äàííûå)[1].

[ïðàâèòü] Íåêîòîðûå ïàðàìåòðû

Ïðè íàïèñàíèè ñòàòüè áûëè èñïîëüçîâàíû ìàòåðèàëû man dd, îïèñûâàþùèå âåðñèþ dd îò GNU. Âåðñèè dd íà äðóãèõ îïåðàöèîííûõ ñèñòåìàõ ìîãóò îòëè÷àòüñÿ.

[ïðàâèòü] Áàçîâûå ïàðàìåòðû

dd [--help] [--version] [if=ôàéë] [of=ôàéë] [ibs=áàéòû] [obs=áàéòû] [bs=áàéòû] [cbs=áàéòû] [skip=áëîêè] [seek=áëîêè] [count=áëîêè] [conv={ascii, ebcdic, ibm, block, unblock, lcase, ucase, swab, noerror, notrunc, sync}]

  • if=ôàéë â ÷èòàåò äàííûå èç ôàéëà âìåñòî ñòàíäàðòíîãî ââîäà.
  • of=ôàéë â ïèøåò äàííûå â ôàéë âìåñòî ñòàíäàðòíîãî âûâîäà.
  • bs=n â ðàçìåð áëîêà.
  • ibs=nn è obs=nn â çàäà¸ò, ñêîëüêî áàéòîâ íóæíî ñ÷èòûâàòü èëè çàïèñûâàòü çà ðàç.
  • count=n â ñêîëüêî áëîêîâ ñêîïèðîâàòü.
  • seek=n â ñêîëüêî áëîêîâ ïðîïóñòèòü îò íà÷àëà â ðåçóëüòèðóþùåì ôàéëå.
  • skip=n â ñêîëüêî áëîêîâ îò íà÷àëà ôàéëà ïðîïóñòèòü ïåðåä íà÷àëîì êîïèðîâàíèÿ.
  • conv=ôèëüòð,ôèëüòð â ïðèìåíèòü ôèëüòðû êîíâåðòàöèè.
  • ascii â ñêîíâåðòèðîâàòü â ASCII èç EBCDICâ
  • ebcdic â âè íàîáîðîò.
  • block â âûðàâíèâàíèå áëîêîâ.
  • lcase â ïðåîáðàçîâàòü ê íèæíåìó ðåãèñòðó.
  • ucase â ïðåîáðàçîâàòü ê âåðõíåìó ðåãèñòðó.
  • swab â ìåíÿòü ìåñòàìè ïàðû áàéò.
  • noerror â èãíîðèðîâàòü îøèáêè ââîäà-âûâîäà.

[ïðàâèòü] Ïðèìåðû èñïîëüçîâàíèÿ

[ïðàâèòü] Ðàáîòà ñ CD/DVD-äèñêàìè è îáðàçàìè

Ñîçäàòü îáðàç CD/DVD, èñïîëüçóÿ áîëüøîé ïàëëåòíûé ðàçìåð áëîêà. Èãíîðèðîâàòü îøèáêè:

    dd if=/dev/cdrom of=backup.iso bs=65536 conv=noerror

Çàïèñàòü ISO-îáðàç «image.iso» íà óñòðîéñòâî sdb âìåñòå ñ åãî çàãðóçî÷íûì ñåêòîðîì è ôîðìàòèðîâàíèåì ðàçäåëà â ôàéëîâóþ ñèñòåìó îáðàçà (êàê ïðàâèëî, ISO 9660 èëè UDF):

    dd if=image.iso of=/dev/sdb

[ïðàâèòü] Ðàáîòà ñ ôàéëàìè

Ñêîïèðîâàòü ôàéë foo â ôàéë bar:

    dd if=foo of=bar

Ñêîïèðîâàòü ôàéë foo â ôàéë bar, ïðîïóñòèâ ïåðâûå 10 ÊÁ èç ôàéëà foo:

    dd if=foo of=bar bs=1k skip=10

Ïîðåçàòü 10-ìåãàáàéòíûé ôàéë foo íà 2 ïî 5 ÌÁ:

    dd if=foo of=bar.0 bs=1M count=5
    dd if=foo of=bar.1 bs=1M skip=5

Ñêëåèòü ïÿòü 100-ìåãàáàéòíûõ ôàéëîâ â îäèí:

    dd if=SMILE.001 of=SMILE  bs=1M seek=0
    dd if=SMILE.002 of=SMILE  bs=1M seek=100
    dd if=SMILE.003 of=SMILE  bs=1M seek=200
    dd if=SMILE.004 of=SMILE  bs=1M seek=300

à ìîæíî è òàê:

    dd if=SMILE.001 > SMILE
    dd if=SMILE.002 >> SMILE
    dd if=SMILE.003 >> SMILE
    dd if=SMILE.004 >> SMILE

èëè æå (äëÿ ñáîðà ôàéëà èç áîëüøîãî ïàëëåòíîãî êîëè÷åñòâà êóñêîâ):

    for i in {1 4}; do 
        dd if=SMILE.00$i >> SMILE
    done

Ïðèìåðû âûøå ïîêàçûâàþò âîçìîæíîñòè dd, íà ïðàêòèêå, îáû÷íî, èñïîëüçóåòñÿ cat

    cat SMILE.00{1,2,3,4} > SMILE

Âûâåñòè íà ýêðàí (â /dev/stdout) ïåðâûå 256 áàéò ôàéëà foo:

    dd if=foo of=/dev/stdout bs=128 count=2

èëè:

    dd if=foo bs=128 count=2

Ïðåäûäóùàÿ êîìàíäà ãîäèòñÿ òîëüêî äëÿ ïðîñìîòðà òåêñòîâîãî ôàéëà. Ñîäåðæèìîå áèíàðíîãî ôàéëà ðåêîìåíäóåòñÿ ñìîòðåòü òàê:

    dd if=foo bs=1 count=10 2>/dev/null | hexdump

[ïðàâèòü] Ðåçåðâíîå êîïèðîâàíèå è óäàëåíèå äàííûõ

Ñêîïèðîâàòü îäèí ðàçäåë æ¸ñòêîãî äèñêà íà äðóãîé æ¸ñòêèé äèñê, èãíîðèðóÿ îøèáêè ââîäà-âûâîäà:

    dd if=/dev/sda1 of=/dev/sdb2 bs=4096 conv=noerror

Ñäåëàòü êîïèþ ãëàâíîé çàãðóçî÷íîé çàïèñè (MBR) ïåðâîãî æ¸ñòêîãî äèñêà:

    dd if=/dev/hda of=bootloader.mbr bs=512 count=1

Ïðîñìîòðåòü ñîäåðæèìîå ãëàâíîé çàãðóçî÷íîé çàïèñè (MBR) ïåðâîãî æ¸ñòêîãî äèñêà:

    dd if=/dev/sda bs=512 count=1 | hexdump -C

Êîïèðîâàòü âñ¸, êðîìå ìåòêè, ñ äèñêà íà ìàãíèòíóþ ëåíòó:

    (dd bs=4k skip=1 count=0 && dd bs=512k) <$disk >$tape

Êîïèðîâàòü âñ¸, íå ïåðåçàïèñûâàÿ ìåòêó, ñ ìàãíèòíîé ëåíòû íà äèñê:

    (dd bs=4k seek=1 count=0 && dd bs=512k) <$tape >$disk

Óíè÷òîæèòü ñîäåðæèìîå óñòðîéñòâà /dev/sdg, çàïîëíèâ åãî «íóëÿìè» èç /dev/zero:

    dd if=/dev/zero of=/dev/sdg bs=65535

Óçíàòü ñòàòóñ âûïîëíåíèÿ îïåðàöèè:

    killall -USR1 dd

[ïðàâèòü] Âàðèàíòû dd, îðèåíòèðîâàííûå íà âîññòàíîâëåíèå

Ïðîãðàììû ñ îòêðûòûì èñõîäíûì êîäîì äëÿ âîññòàíîâëåíèÿ âêëþ÷àþò dd_rescue è dd_rhelp, êîòîðûå ðàáîòàþò âìåñòå, savehd7 è GNU ddrescue.

Antonio Diaz Diaz (ðàçðàáîò÷èê GNU ddrescue) ñðàâíèâàåò[3] âàðèàíòû dd äëÿ çàäà÷ âîññòàíîâëåíèÿ:

Ñòàíäàðòíàÿ óòèëèòà dd îñóùåñòâëÿåò ëèíåéíîå ÷òåíèå äèñêà, è ýòî ìîæåò çàíÿòü ìíîãî âðåìåíè èëè äàæå ñæå÷ü íàêîïèòåëü áåç âîññòàíîâëåíèÿ ÷åãî-ëèáî, åñëè îøèáêè ðàñïîëîæåíû âíà÷àëå æåñòêîãî äèñêà. dd_rescue äåëàåò òî æå ñàìîå, ÷òî è dd, òîëüêî áîëåå ýôôåêòèâíî. dd_rhelp â ýòî ñëîæíûé shell-ñêðèïò, êîòîðûé çàïóñêàåò dd_rescue ìíîãî ðàç, ñòàðàÿñü ñòðàòåãè÷åñêè êîïèðîâàòü íàêîïèòåëü, íî ýòî î÷åíü íåýôôåêòèâíî.

  • dd_rhelp ñíà÷àëà èçâëåêàåò âñå äîñòóïíûå ê ÷òåíèþ äàííûå è ñîõðàíÿåò èõ â ôàéë, âñòàâëÿÿ íóëè âìåñòî áàéòîâ, êîòîðûå íå ñìîã ïðî÷åñòü. Ïîòîì óòèëèòà ïûòàåòñÿ ïîâòîðíî ïðî÷èòàòü íåêîððåêòíûå äàííûå è îáíîâèòü ýòîò ôàéë.
  • GNU ddrescue ìîæåò áûòü èñïîëüçîâàíà äëÿ êîïèðîâàíèÿ äàííûõ ïðÿìî íà íîâûé äèñê ïî íåîáõîäèìîñòè, êàê è dd.

[ïðàâèòü] Ñì. òàêæå

[ïðàâèòü] Ïðèìå÷àíèÿ

  1. â‘ 1 2 Sam Chessman How and when to use the dd command?. CodeCoffee. Àðõèâèðîâàíî èç ïåðâîèñòî÷íèêà 21 ÿíâàðÿ 2012. Ïðîâåðåíî 19 ôåâðàëÿ 2008.
  2. â‘ Dd - LQWiki. LinuxQuestions.org. Àðõèâèðîâàíî èç ïåðâîèñòî÷íèêà 21 ÿíâàðÿ 2012. Ïðîâåðåíî 19 ôåâðàëÿ 2008.
  3. â‘ Interview With GNU DDRescue's Antonio Diaz Diaz. Blue-GNU. Àðõèâèðîâàíî èç ïåðâîèñòî÷íèêà 15 àïðåëÿ 2008. Ïðîâåðåíî 6 äåêàáðÿ 2008.

[ïðàâèòü] Ññûëêè

Èñòî÷íèê â «/w/index.php?title=Dd&oldid=44494049»
Ïðîñòðàíñòâà èì¸í

Âàðèàíòû
Ïðîñìîòðû
Äåéñòâèÿ