dd (англ. dataset definition — визначення набору даних) — команда Unix, призначена для низькорівневого копіювання й конвертації необроблених (raw) даних. Використовується для копіювання визначеної кількості байтів чи блоків, заміни порядку байтів "на льоту", копіювання областей файлів пристроїв, резервного копіювання завантажувального сектора жорсткого диску або читання фіксованої кількості даних зі спеціальних файлів /dev/zero
чи /dev/random
.
Команду dd жартома називають «винищувач диску» (disk destroyer), «винищувач даних» (data destroyer), чи «стерти дані» (delete data), оскільки при виконанні низькорівневих операцій навіть незначна помилка (така, як переплутати між собою параметри if
та of
) може призвести до втрати деяких (або навіть усіх) даних на диску.
Синтаксис
Синтаксис команди dd
істотно відрізняється в залежності від ОС, тому узагальнити опис використання непросто. Загалом, dd
використовує формат option=value
, тоді як більшість Unix-команд мають вигляд -option value
або --option=value
. Також dd
використовує параметри if
для задання вхідного файлу (тоді як більшість команд безпосередньо приймають ім'я файлу) та of
— для файлу виводу.
Команда має таку загальну форму (квадратні дужки […]
значать, що параметр — необов'язковий):
dd [--help] [--version] [if=файл] [of=файл] [bs=байтів] [ibs=байтів] [obs=байтів] [cbs=байтів] [count=блоків] [seek=блоків] [skip=блоків] [conv={ascii, ebcdic, ibm, block, unblock, lcase, ucase, swab, noerror, notrunc, sync}]
Параметри
- if=файл — читає дані з файла замість стандартного вводу.
- of=файл — пише дані у файл-призначення замість стандартного виводу.
- bs=байтів — встановлює розмір блоку (кількість байтів читання й запису за раз). Ця опція пересилює ibs та obs.
- ibs=байтів — задає розмір блоку (в байтах) для зчитування за раз (типово — 512)…
- obs=байтів — … і для запису за раз (типово — 512).
- cbs=байтів — вказує розмір блоків (у байтах) перетворень для фільтрів block та unblock.
- count=блоків — скільки блоків ibs-байтової довжини копіювати.
- seek=блоків — вказує, скільки блоків obs-байтової довжини пропустити у файлі-призначення перед початком копіювання.
- skip=блоків — скільки блоків ibs-байтової довжини пропустити у файлі вводу перед тим, як розпочати копіювання.
- conv=фільтр1[,фільтр2,…,фільтрN] (без прогалин між комами) — застосувати фільтр(и) для конвертації:
- ascii — конвертувати в ASCII з EBCDIC…
- ebcdic — … і навпаки.
- block — вирівнювання блоків (для кожного рядка файлу вводу виведе cbs байтів, замінюючи символ нового рядка на пробіл і доповнюючи пробілами, за необхідності).
- unblock — замінить кінцеві пробіли кожного ввідного блоку з розміром cbs символом нового рядка.
- lcase — замінить літери верхнього регістру на нижній…
- ucase — … і навпаки.
- swab — поміняє місцями кожну пару байтів вводу, останній непарний (коли є) просто скопіюється.
- noerror — ігнорувати помилки вводу-виводу.
- notrunc — не вкорочуватиме файл виводу.
- sync — доповнить кожний блок вводу хвостовими нульовими байтами до ibs-розміру.
- -- — закінчує список параметрів.
Кількість блоків і байтів може бути вказана за допомогою суфіксів множення: c =1, w =2, b =512, kB =1000, K =1024, MB =1000*1000, M =1024*1024, xM =M GB =1000*1000*1000, G =1024*1024*1024, те ж саме для T, P, E, Z, Y.
Використання
Робота з CD/DVD-дисками й образами
Приклад використання команди dd
для створення образу диску з CD-ROM:
dd if=/dev/cdrom of=/home/sam/myCD.iso bs=2048 conv=sync
Створити образ CD/DVD, використовуючи розмір блоку, ігноруючи помилки:
dd if=/dev/cdrom of=backup.iso bs=65535 conv=noerror
Записати ISO-образ «image.iso» на розділ sdb1 разом із його завантажувальним сектором і форматуванням розділу в файловій системі образа (як правило, ISO 9660 або UDF):
dd if=image.iso of=/dev/sdb1
Робота з файлами
Скопіювати файл foo в файл bar:
dd if=foo of=bar
Скопіювати файл foo в файл bar, пропустивши перші 10 КБ із файлу foo:
dd if=foo of=bar bs=1k skip=10
Порізати 10-мегабайтний файл foo на два по 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
або простіше, якщо немає зайвих файлів, що підпадають під маску SMILE.*:
cat SMILE.* > SMILE
Вивести на екран (у /dev/stdout) перші 256 байт файла foo:
dd if=foo of=/dev/stdout bs=128 count=2
або, враховуючи, що типовий файл виводу якраз і є /dev/stdout:
dd if=foo bs=128 count=2
Попередня команда придатна лише для перегляду текстового файлу. Вміст бінарного файлу рекомендується дивитися, перенаправивши вивід на команду hexdump:
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=1 count=512
Копіювати все, крім мітки, з диску на магнітну стрічку:
(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 з параметром status=progress
dd if=image.iso of=/dev/sdb status=progress
Див. також
Посилання
- * dd [ 16 січня 2015 у Wayback Machine.](англ.): manual page from GNU coreutils.
- * dd: Команда, которая не похожа на другие [ 5 березня 2016 у Wayback Machine.](рос.)
- * http://docs.linux.org.ua/man/man1/dd.1/ [ 26 жовтня 2014 у Wayback Machine.]: Man українською на DLOU
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
dd angl dataset definition viznachennya naboru danih komanda Unix priznachena dlya nizkorivnevogo kopiyuvannya j konvertaciyi neobroblenih raw danih Vikoristovuyetsya dlya kopiyuvannya viznachenoyi kilkosti bajtiv chi blokiv zamini poryadku bajtiv na lotu kopiyuvannya oblastej fajliv pristroyiv rezervnogo kopiyuvannya zavantazhuvalnogo sektora zhorstkogo disku abo chitannya fiksovanoyi kilkosti danih zi specialnih fajliv dev zero chi dev random Komandu dd zhartoma nazivayut vinishuvach disku disk destroyer vinishuvach danih data destroyer chi sterti dani delete data oskilki pri vikonanni nizkorivnevih operacij navit neznachna pomilka taka yak pereplutati mizh soboyu parametri if ta of mozhe prizvesti do vtrati deyakih abo navit usih danih na disku SintaksisSintaksis komandi dd istotno vidriznyayetsya v zalezhnosti vid OS tomu uzagalniti opis vikoristannya neprosto Zagalom dd vikoristovuye format option value todi yak bilshist Unix komand mayut viglyad option value abo option value Takozh dd vikoristovuye parametri if dlya zadannya vhidnogo fajlu todi yak bilshist komand bezposeredno prijmayut im ya fajlu ta of dlya fajlu vivodu Komanda maye taku zagalnu formu kvadratni duzhki znachat sho parametr neobov yazkovij dd help version if fajl of fajl bs bajtiv ibs bajtiv obs bajtiv cbs bajtiv count blokiv seek blokiv skip blokiv conv ascii ebcdic ibm block unblock lcase ucase swab noerror notrunc sync Parametri if fajl chitaye dani z fajla zamist standartnogo vvodu of fajl pishe dani u fajl priznachennya zamist standartnogo vivodu bs bajtiv vstanovlyuye rozmir bloku kilkist bajtiv chitannya j zapisu za raz Cya opciya peresilyuye ibs ta obs ibs bajtiv zadaye rozmir bloku v bajtah dlya zchituvannya za raz tipovo 512 obs bajtiv i dlya zapisu za raz tipovo 512 cbs bajtiv vkazuye rozmir blokiv u bajtah peretvoren dlya filtriv block ta unblock count blokiv skilki blokiv ibs bajtovoyi dovzhini kopiyuvati seek blokiv vkazuye skilki blokiv obs bajtovoyi dovzhini propustiti u fajli priznachennya pered pochatkom kopiyuvannya skip blokiv skilki blokiv ibs bajtovoyi dovzhini propustiti u fajli vvodu pered tim yak rozpochati kopiyuvannya conv filtr1 filtr2 filtrN bez progalin mizh komami zastosuvati filtr i dlya konvertaciyi ascii konvertuvati v ASCII z EBCDIC ebcdic i navpaki block virivnyuvannya blokiv dlya kozhnogo ryadka fajlu vvodu vivede cbs bajtiv zaminyuyuchi simvol novogo ryadka na probil i dopovnyuyuchi probilami za neobhidnosti unblock zaminit kincevi probili kozhnogo vvidnogo bloku z rozmirom cbs simvolom novogo ryadka lcase zaminit literi verhnogo registru na nizhnij ucase i navpaki swab pominyaye miscyami kozhnu paru bajtiv vvodu ostannij neparnij koli ye prosto skopiyuyetsya noerror ignoruvati pomilki vvodu vivodu notrunc ne vkorochuvatime fajl vivodu sync dopovnit kozhnij blok vvodu hvostovimi nulovimi bajtami do ibs rozmiru zakinchuye spisok parametriv Kilkist blokiv i bajtiv mozhe buti vkazana za dopomogoyu sufiksiv mnozhennya c 1 w 2 b 512 kB 1000 K 1024 MB 1000 1000 M 1024 1024 xM M GB 1000 1000 1000 G 1024 1024 1024 te zh same dlya T P E Z Y VikoristannyaRobota z CD DVD diskami j obrazami Priklad vikoristannya komandi dd dlya stvorennya obrazu disku z CD ROM dd if dev cdrom of home sam myCD iso bs 2048 conv sync Stvoriti obraz CD DVD vikoristovuyuchi rozmir bloku ignoruyuchi pomilki dd if dev cdrom of backup iso bs 65535 conv noerror Zapisati ISO obraz image iso na rozdil sdb1 razom iz jogo zavantazhuvalnim sektorom i formatuvannyam rozdilu v fajlovij sistemi obraza yak pravilo ISO 9660 abo UDF dd if image iso of dev sdb1 Robota z fajlami Skopiyuvati fajl foo v fajl bar dd if foo of bar Skopiyuvati fajl foo v fajl bar propustivshi pershi 10 KB iz fajlu foo dd if foo of bar bs 1k skip 10 Porizati 10 megabajtnij fajl foo na dva po 5 MB dd if foo of bar 0 bs 1M count 5 dd if foo of bar 1 bs 1M skip 5 Skleyiti chotiri 100 megabajtnih fajli v odin 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 a mozhna j tak dd if SMILE 001 gt SMILE dd if SMILE 002 gt gt SMILE dd if SMILE 003 gt gt SMILE dd if SMILE 004 gt gt SMILE abo zh dlya skleyuvannya fajlu iz velikoyi kilkosti shmatkiv for i in 1 4 do dd if SMILE 00 i gt gt SMILE done Prikladi vishe pokazuyut mozhlivosti dd na praktici zazvichaj vikoristovuyetsya cat cat SMILE 00 1 2 3 4 gt gt SMILE abo prostishe yaksho nemaye zajvih fajliv sho pidpadayut pid masku SMILE cat SMILE gt SMILE Vivesti na ekran u dev stdout pershi 256 bajt fajla foo dd if foo of dev stdout bs 128 count 2 abo vrahovuyuchi sho tipovij fajl vivodu yakraz i ye dev stdout dd if foo bs 128 count 2 Poperednya komanda pridatna lishe dlya pereglyadu tekstovogo fajlu Vmist binarnogo fajlu rekomenduyetsya divitisya perenapravivshi vivid na komandu hexdump dd if foo bs 1 count 10 2 gt dev null hexdump Rezervne kopiyuvannya j vidalennya danih Skopiyuvati odin rozdil zhorstkogo disku na inshij zhorstkij disk ignoruyuchi pomilki vvodu vivodu dd if dev sda1 of dev sdb2 bs 4096 conv noerror Zrobiti kopiyu golovnogo zavantazhuvalnogo zapisu MBR pershogo zhorstkogo disku dd if dev hda of bootloader mbr bs 1 count 512 Kopiyuvati vse krim mitki z disku na magnitnu strichku dd bs 4k skip 1 count 0 amp amp dd bs 512k lt disk gt tape Kopiyuvati vse ne perezapisuyuchi mitku z magnitnoyi strichki na disk dd bs 4k seek 1 count 0 amp amp dd bs 512k lt tape gt disk Znishiti vmist pristroyu dev sdg zapovnivshi jogo nulyami z dev zero dd if dev zero of dev sdg bs 65535 Diznatisya status vikonannya operaciyi killall USR1 dd V ostannih versiyah status vikonannya operaciyi mozhna vidobraziti v konsoli vvivshi komandu dd z parametrom status progress dd if image iso of dev sdb status progressDiv takozhcp GNU UnixPosilannya dd 16 sichnya 2015 u Wayback Machine angl manual page from GNU coreutils dd Komanda kotoraya ne pohozha na drugie 5 bereznya 2016 u Wayback Machine ros http docs linux org ua man man1 dd 1 26 zhovtnya 2014 u Wayback Machine Man ukrayinskoyu na DLOU