dd
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 для задання вхідного файлу, тоді як більшість команд напряму приймають ім'я файлу.
Параметри [ред.]
- if=файл — читає дані з файлу замість стандартного вводу.
- of=файл — пише дані у файл замість стандартного виводу.
- bs=n — размір блоку.
- ibs=nn и obs=nn — задає, скільки байт потрібно зчитувати або записувати за раз.
- count=n — скільки блоків копіювати.
- seek=n — скільки блоків пропустити від початку в вихідному файлі.
- skip=n — скільки блоків від початку файлу пропустити перед початком копіювання.
- conv=фільтр,фільтр — застосувати фільтри для конвертації.
- ascii — конвертувати в ASCII з EBCDIC…
- ebcdic — …і навпаки.
- block — вирівнювання блоків.
- lcase — перетворювати в нижній регістр.
- ucase — перетворювати у верхній регістр.
- swap — міняти місцями пари байт.
- noerror — ігнорувати помилки вводу-виводу.
Використання [ред.]
Робота з 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» в папку «/home/root/exISO»:
dd if=image.iso of=/home/root/exISO/
Записати 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 на 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
Вивести на екран (в /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=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: manual page from GNU coreutils.
- * dd: Команда, которая не похожа на другие
|
||||||||||||||||||||||||||||||||
