Відмінності між версіями «Dd»

Матеріал з Вікі ЦДУ
Перейти до: навігація, пошук
Рядок 12: Рядок 12:
 
| style="width:50%; background: #efefef; font-weight:bold;" | Опис
 
| style="width:50%; background: #efefef; font-weight:bold;" | Опис
 
|-   
 
|-   
| colspan="2" align="center"|
+
| colspan="2" |
 
Файлові системи
 
Файлові системи
 
|-  
 
|-  
Рядок 33: Рядок 33:
 
| Перевіряє, чи заповнений диск нулями
 
| Перевіряє, чи заповнений диск нулями
 
|-
 
|-
| <nowiki>dd if=/dev/urandom of=/home/$user/hugefile\bs=4096</nowiki>
+
| <nowiki>dd if=/dev/urandom of=/home/$user/hugefile bs=4096</nowiki>
 
| Заповнює розділ (потрібно бути обережним з системними розділами)
 
| Заповнює розділ (потрібно бути обережним з системними розділами)
 
|-
 
|-
Рядок 39: Рядок 39:
 
| Перемішує вміст файлу (може застосовуватися перед його видаленням)
 
| Перемішує вміст файлу (може застосовуватися перед його видаленням)
 
|-
 
|-
| <nowiki>dd if=/dev/sda3 of=/dev/sdb3 bs=4096 \conv=notrunc,noerror</nowiki>
+
| <nowiki>dd if=/dev/sda3 of=/dev/sdb3 bs=4096 conv=notrunc,noerror</nowiki>
 
| Копіює розділ до іншого розділу
 
| Копіює розділ до іншого розділу
 
|-
 
|-
Рядок 48: Рядок 48:
 
| Перегляд розмірів доступних тем у кБ
 
| Перегляд розмірів доступних тем у кБ
 
|-
 
|-
| <nowiki>dd if=/dev/sdb2 ibs=4096 | gzip > partition.image.gz \conv=noerror</nowiki>
+
| <nowiki>dd if=/dev/sdb2 ibs=4096 | gzip > partition.image.gz conv=noerror</nowiki>
 
| Створює стиснений образ другого диска
 
| Створює стиснений образ другого диска
  
 +
|-
 +
| <nowiki>dd bs=10240 cbs=80 conv=ascii,unblock if=/dev/st0 of=ascii.out</nowiki>
 +
| Копіює вміст стрічкового пристрою в файл, перетворюючи кодування EBCDIC в ASCII
 +
|-
 +
| <nowiki>dd if=/dev/st0 ibs=1024 obs=2048 of=/dev/st1</nowiki>
 +
| Копіює вміст пристрою з розміром блоку 1кб на пристрій з розміром блоку 2 кБ
 +
|-
 +
| <nowiki>dd if=/dev/zero of=/dev/null bs=100M count=100
 +
100+0 records in
 +
100+0 records out
 +
10485760000 bytes (10 GB) copied,
 +
 +
5.62955 s, 1.9 GB/s</nowiki>
 +
| Копіює 10 ГБ нулів в нікуди
 +
|-
 +
| <nowiki>dd if=/dev/zero of=/dev/sda bs=512 count=2
 +
fdisk -s /dev/sda
 +
dd if=/dev/zero of=/dev/sda seek=
 +
(number_of_sectors - 20) bs=1k</nowiki>
 +
| Видаляє таблицю розділів диска. Так як таблиця розділів записує дані в початок в кінець диска, то після видалення даних з початку диска нам необхідно знайти кількість секторів (друга команда), а потім стерти останні 20 секторів.
 +
|-
 +
| <nowiki>dd if=/home/$user/bootimage.img of=/dev/sdc</nowiki>
 +
| Створення завантажувального USB-диска (він показаний як / dev / sdc)
 +
|-
 +
| <nowiki>dd if=/dev/sda of=/dev/null bs=1m</nowiki>
 +
| Хороший спосіб перевірки диска на зіпсовані блоки
 +
 +
| colspan="2" align="center"|
 +
Резервне копіювання і системні операції
 +
 +
|-
 +
| <nowiki>dd if=/dev/sda of=/dev/fd0 bs=512 count=1</nowiki>
 +
| Копіювання головною завантажувального запису на дискету
 +
|-
 +
| <nowiki>dd if=/dev/sda1 of=/dev/sdb1 bs=4096</nowiki>
 +
| Повне копіювання диска на інший диск
 +
|-
 +
| <nowiki>dd if=/dev/sr0 of=/home/$user/mycdimage.iso bs=2048 conv=nosync</nowiki>
 +
| Створення образу CD
 +
|-
 +
| <nowiki>mount -o loop /home/$user/mycdimage.iso /mnt/cdimages/</nowiki>
 +
| локальне монтування створеного образу
 +
|-
 +
| <nowiki>dd if=/dev/sda2 of=/home/$user/hddimage1.img
 +
bs=1M count=4430
 +
dd if=/dev/sda2 of=/home/$user/hddimage2.img
 +
bs=1M count=8860
 +
[...]</nowiki>
 +
| Створення DVD-образів розділу (використовується для резервного копіювання)
 +
|-
 +
| <nowiki>dd if=/$location/hddimage1.img of=/dev/sda2
 +
bs=1M
 +
dd if=/$location/hddimage2.img of=/dev/sda2
 +
seek=4430 bs=1M
 +
dd if=/$location/hddimage3.img of=/dev/sda2
 +
seek=8860 bs=1M</nowiki>
 +
| Відновлення з створеної вище резервної копії
 +
|-
 +
| <nowiki>dd if=/dev/zero count=1 bs=1024 seek=1 of=/dev/sda6</nowiki>
 +
| Знищення суперблоку
 +
|-
 +
| <nowiki>dd if=/dev/zero count=1 bs=4096 seek=0 of=/dev/sda5</nowiki>
 +
| Ще один спосіб знищення суперблоку
 +
|-
 +
| <nowiki>dd if=/home/$user/suspicious.doc | clamscan -</nowiki>
 +
| Перевірка файла на віруси (необхідний ClamAV)
 +
|-
 +
| <nowiki>dd if=/home/$user/binary file | hexdump -C | less</nowiki>
 +
| Перегляд вмісту бінарного файлу (необхідний hexdump)
 +
|-
 +
| <nowiki>dd if=/home/$user/bigfile of=/dev/null
 +
dd if=/dev/zero of=/home/$user/bigfile
 +
bs=1024 count=1000000</nowiki>
 +
| Тестування жорсткого диска на швидкість читання / запису
 +
|-
 +
| <nowiki>dd if=/dev/sda of=/dev/sda</nowiki>
 +
| Відновлює працездатність старих жорстких дисків (диск повинен бути отмонтировать)
 +
|-
 +
| <nowiki>dd if=/dev/mem | strings | grep 'string_to_search'</nowiki>
 +
| Перевіряє вміст пам'яті (читане людиною)
 +
|-
 +
| <nowiki>dd if=/dev/fd0 of=/home/$user/floppy.image bs=2x80x18b conv=notrunc</nowiki>
 +
| копіювання дискети
 +
|-
 +
| <nowiki>dd if=/proc/kcore | hexdump -C | less</nowiki>
 +
| Перегляд віртуальної пам'яті
 +
|-
 +
| <nowiki>dd if=/proc/filesystems | hexdump -C | less</nowiki>
 +
| Перегляд доступних файлових систем
 +
|-
 +
| <nowiki>dd if=/proc/kallsyms | hexdump -C | less</nowiki>
 +
| Перегляд завантажених модулів
 +
|-
 +
| <nowiki>dd if=/proc/interrupts | hexdump -C | less</nowiki>
 +
| Перегляд таблиці переривань
 +
|-
 +
| <nowiki>dd if=/proc/uptime | hexdump -C | less</nowiki>
 +
| Перегляд часу роботи системи в секундах
 +
|-
 +
| <nowiki>dd if=/proc/partitions | hexdump -C | less</nowiki>
 +
| Перегляд розмірів доступних тем у кб
 +
|-
 +
| <nowiki>dd if=/proc/meminfo | hexdump -C | less</nowiki>
 +
| Перегляд статистики використання пам'яті
 +
|-
 +
| <nowiki>dd if=/dev/urandom of=/home/$user/myrandom bs=100 count=1</nowiki>
 +
| Створення файлу розміром 1 кб, заповненого сміттям
 +
|-
 +
| <nowiki>dd if=/dev/mem of=/home/$user/mem.bin bs=1024</nowiki>
 +
| Створення образу миттєвого стану системної пам'яті
 +
|-
 +
| <nowiki>dd if=/home/$user/myfile</nowiki>
 +
| Друк файлу в stdout
 +
|-
 +
| <nowiki>dd if=/dev/sda2 bs=16065 | hexdump -C | grep 'text_to_search'</nowiki>
 +
| Пошук заданого рядка на всьому розділі. Навіть якщо він захищений, ви можете завантажитися з liveCD
 +
|-
 +
| <nowiki>dd if=/home/$user/file.bin skip=64k bs=1 of=/home/$user/convfile.bin</nowiki>
 +
| Копіювання файлу file.bin в convfile.bin за винятком перших 64 kB
 +
|-
 +
| <nowiki>dd if=/home/$user/bootimage.img of=/dev/sdc</nowiki>
 +
| Створення завантажувального USB-пристрої (показано тут як / dev / sdc)
 +
|-
 +
| <nowiki>dd if=/dev/mem bs=1k skip=768 count=256  2>/dev/null | strings -n 8 </nowiki>
 +
| Читання BIOS
 +
|-
 +
| <nowiki>dd bs=1k if=imagefile.nrg of=imagefile.iso skip=300k</nowiki>
 +
| Конвертація образу Nero в стандартний ISO. Це можливо, оскільки всі відмінність між ними полягає в заголовку розміром 300 кб, додає Nero до стандартного ISO-образу.
 +
|-
 +
| <nowiki>dd if=/dev/sda1 | gzip -c | split -b 2000m -  /mnt/hdc1/backup.img.gz</nowiki>
 +
| Створення образу диска, стисненого за допомогою gzip і розрізаного на частини за допомогою split.
 +
|-
 +
| <nowiki>cat /mnt/hdc1/backup.img.gz.* | gzip -dc | dd of=/dev/sda1</nowiki>
 +
| Відновлення розділу з створеного вище образу.
 +
|-
 +
| <nowiki>dd if=/dev/zero of=myimage bs=1024 count=10240</nowiki>
 +
| Створення порожнього образу диска
 +
|-
 +
| <nowiki>dd ibs=10 skip=1</nowiki>
 +
| Вирізання перших 10 байт з stdin
 +
|-
 +
| <nowiki>dd bs=265b conv=noerror if=/dev/st0 of=/tmp/bad.tape.image</nowiki>
 +
| Створення образу з стрічкового накопичувача з поганими ділянками
 +
|-
 +
| <nowiki>dd if=/dev/sda count=1 | hexdump -C</nowiki>
 +
| перегляд MBR
 +
|-
 +
| <nowiki>dd if=/dev/sda | nc -l 10001 nc $system_to_backup_IP 10001 | dd of=sysbackupsda.img </nowiki>
 +
| Швидке мережеве резервне копіювання за допомогою netcat
 +
|-
 +
| <nowiki>d if=/dev/zero of=/dev/sdX bs=1024000 count=1</nowiki>
 +
| Очищення перших 10 MB розділу
 +
|-
 +
| <nowiki>dd if=/dev/zero of=tmpswap bs=1k count=1000000 chmod 600 tmpswap mkswap tmpswap swapon tmpswap</nowiki>
 +
| Створення тимчасового простору підкачки
 +
|-
 +
| <nowiki>dd if=/dev/sda of=/dev/null bs=1024k count=1024 1073741824 bytes (1.1 GB) copied, 24.1684 s, 44.4 MB/s</nowiki>
 +
| Визначення швидкості системи введення/виведення вашого диска. Читання файлу розміром 1 Гб.
 +
|-
 +
| <nowiki>dd if=/dev/random count=1 2>/dev/null | od -t u1 | awk '{ print $2}' | head -1</nowiki>
 +
| Генерація випадкового числа
 +
|-
 +
| <nowiki>dd if=/dev/mem of=myRAM bs=1024</nowiki>
 +
| Копіювання вмісту оперативної пам'яті у файл.
 +
|-
 +
| <nowiki>dd if=/dev/sda bs=512 count=1 | od -xa</nowiki>
 +
| Перегляд вмісту головною завантажувального запису в шістнадцятковому форматі і в ASCII
 +
|-
 +
| <nowiki>dd if=/my/old/mbr of=/dev/sda bs=446 count=1</nowiki>
 +
| Відновлення головною завантажувального запису, не зачіпаючи таблицю розділів.
 +
|-
 +
| <nowiki>dd if=/dev/sda1 | split -b 700m - sda1-image</nowiki>
 +
| Створення копії розділу і збереження її в образах максимальним розміром 700 Мб.
 +
|-
 +
| colspan="2" |Работа с текстом
 +
|-
 +
| <nowiki>ls -l | dd conv=ucase</nowiki>
 +
| Перетворює висновок команди у верхній регістр
 +
|-
 +
| <nowiki>echo "MY UPPER CASE TEXT" | dd conv=lcase</nowiki>
 +
| Перетворює будь-який текст в нижній регістр
 +
|-
 +
| <nowiki>dd if=/etc/passwd cbs=132 conv=ebcdic of=/tmp/passwd.ebcdic</nowiki>
 +
| Перетворює файл системних паролів у файл формату EBCDIC фіксованої довжини
 +
|-
 +
| <nowiki>dd if=text.ascii of=text.ebcdic conv=ebcdic</nowiki>
 +
| Перетворення ASCII в EBCDIC
 +
|-
 +
| <nowiki>dd if=myfile of=myfile conv=ucase</nowiki>
 +
| Перетворення файлу в нижній регістр (проста заміна sed або tr)
  
 
|}
 
|}

Версія за 21:59, 12 травня 2013

dd (англ. dataset definition — визначення набору даних) — команда Unix, призначена для низькорівневого копіювання і конвертації необроблених (raw) даних. Команда використовується для копіювання визначеної кількості байтів чи блоків, заміни порядку байтів, копіювання областей файлів пристроїв, резервного копіювання завантажувального сектору жорсткого диску, або читання фіксованої кількості даних зі спеціальних файлів /dev/zero чи /dev/random.

Команду dd жартома називають "винищувач диску" ("disk destroyer"), "винищувач даних" ("data destroyer"), чи "стерти дані" ("delete data"), оскільки при виконанні низькорівневих операцій навіть незначна помилка (така, як переплутати параметри if та of) може призвести до втрати деяких або навіть усіх даних на диску.

Синтаксис команди dd:

$ dd if=$input_data of=$output_data [options]

Вхідними та вихідними даними можуть бути диски, розділи, файли, пристрої ... практично все, з чого можна зчитувати інформацію, і куди її можна записувати. За допомогою dd можна також пересилати дані, наприклад, по локальній мережі. Можна використовувати вхідну частину команди, або тільки вихідну, а в деяких випадках можуть бути відсутні обидві частини. Все це проіллюстіровано в представленій нижче таблиці:

Синтаксис команди Опис

Файлові системи

dd if=/dev/urandom of=/dev/sda bs=4k Заповнює пристрій випадковими даними
dd if=/dev/sda of=/dev/sdb bs=4096 Побайтне копіювання даних з пристрою на пристрій
dd if=/dev/zero of=/dev/sda bs=4k Очищення жорсткого диска (для повної впевненості у знищенні даних можна виконати кілька разів)
dd if=inputfile of=/dev/st0 bs=32k conv=sync Копіювання файлу на стрічковий пристрій
dd if=/dev/st0 of=outfile bs=32k conv=sync Копіювання файлу з стрічкового пристрою
dd if=/dev/sda | hexdump -C | grep [^00] Перевіряє, чи заповнений диск нулями
dd if=/dev/urandom of=/home/$user/hugefile bs=4096 Заповнює розділ (потрібно бути обережним з системними розділами)
ls -l myfile -rw-r--r-- 6703104 Oct 31 18:25 myfile dd if=/dev/urandom of=myfile bs=6703104 count=1 Перемішує вміст файлу (може застосовуватися перед його видаленням)
dd if=/dev/sda3 of=/dev/sdb3 bs=4096 conv=notrunc,noerror Копіює розділ до іншого розділу
dd if=/proc/filesystems | hexdump -C | less Перегляд доступних файлових систем
dd if=/proc/partitions | hexdump -C | less Перегляд розмірів доступних тем у кБ
dd if=/dev/sdb2 ibs=4096 | gzip > partition.image.gz conv=noerror Створює стиснений образ другого диска
dd bs=10240 cbs=80 conv=ascii,unblock if=/dev/st0 of=ascii.out Копіює вміст стрічкового пристрою в файл, перетворюючи кодування EBCDIC в ASCII
dd if=/dev/st0 ibs=1024 obs=2048 of=/dev/st1 Копіює вміст пристрою з розміром блоку 1кб на пристрій з розміром блоку 2 кБ
dd if=/dev/zero of=/dev/null bs=100M count=100 100+0 records in 100+0 records out 10485760000 bytes (10 GB) copied, 5.62955 s, 1.9 GB/s Копіює 10 ГБ нулів в нікуди
dd if=/dev/zero of=/dev/sda bs=512 count=2 fdisk -s /dev/sda dd if=/dev/zero of=/dev/sda seek= (number_of_sectors - 20) bs=1k Видаляє таблицю розділів диска. Так як таблиця розділів записує дані в початок в кінець диска, то після видалення даних з початку диска нам необхідно знайти кількість секторів (друга команда), а потім стерти останні 20 секторів.
dd if=/home/$user/bootimage.img of=/dev/sdc Створення завантажувального USB-диска (він показаний як / dev / sdc)
dd if=/dev/sda of=/dev/null bs=1m Хороший спосіб перевірки диска на зіпсовані блоки

Резервне копіювання і системні операції

dd if=/dev/sda of=/dev/fd0 bs=512 count=1 Копіювання головною завантажувального запису на дискету
dd if=/dev/sda1 of=/dev/sdb1 bs=4096 Повне копіювання диска на інший диск
dd if=/dev/sr0 of=/home/$user/mycdimage.iso bs=2048 conv=nosync Створення образу CD
mount -o loop /home/$user/mycdimage.iso /mnt/cdimages/ локальне монтування створеного образу
dd if=/dev/sda2 of=/home/$user/hddimage1.img bs=1M count=4430 dd if=/dev/sda2 of=/home/$user/hddimage2.img bs=1M count=8860 [...] Створення DVD-образів розділу (використовується для резервного копіювання)
dd if=/$location/hddimage1.img of=/dev/sda2 bs=1M dd if=/$location/hddimage2.img of=/dev/sda2 seek=4430 bs=1M dd if=/$location/hddimage3.img of=/dev/sda2 seek=8860 bs=1M Відновлення з створеної вище резервної копії
dd if=/dev/zero count=1 bs=1024 seek=1 of=/dev/sda6 Знищення суперблоку
dd if=/dev/zero count=1 bs=4096 seek=0 of=/dev/sda5 Ще один спосіб знищення суперблоку
dd if=/home/$user/suspicious.doc | clamscan - Перевірка файла на віруси (необхідний ClamAV)
dd if=/home/$user/binary file | hexdump -C | less Перегляд вмісту бінарного файлу (необхідний hexdump)
dd if=/home/$user/bigfile of=/dev/null dd if=/dev/zero of=/home/$user/bigfile bs=1024 count=1000000 Тестування жорсткого диска на швидкість читання / запису
dd if=/dev/sda of=/dev/sda Відновлює працездатність старих жорстких дисків (диск повинен бути отмонтировать)
dd if=/dev/mem | strings | grep 'string_to_search' Перевіряє вміст пам'яті (читане людиною)
dd if=/dev/fd0 of=/home/$user/floppy.image bs=2x80x18b conv=notrunc копіювання дискети
dd if=/proc/kcore | hexdump -C | less Перегляд віртуальної пам'яті
dd if=/proc/filesystems | hexdump -C | less Перегляд доступних файлових систем
dd if=/proc/kallsyms | hexdump -C | less Перегляд завантажених модулів
dd if=/proc/interrupts | hexdump -C | less Перегляд таблиці переривань
dd if=/proc/uptime | hexdump -C | less Перегляд часу роботи системи в секундах
dd if=/proc/partitions | hexdump -C | less Перегляд розмірів доступних тем у кб
dd if=/proc/meminfo | hexdump -C | less Перегляд статистики використання пам'яті
dd if=/dev/urandom of=/home/$user/myrandom bs=100 count=1 Створення файлу розміром 1 кб, заповненого сміттям
dd if=/dev/mem of=/home/$user/mem.bin bs=1024 Створення образу миттєвого стану системної пам'яті
dd if=/home/$user/myfile Друк файлу в stdout
dd if=/dev/sda2 bs=16065 | hexdump -C | grep 'text_to_search' Пошук заданого рядка на всьому розділі. Навіть якщо він захищений, ви можете завантажитися з liveCD
dd if=/home/$user/file.bin skip=64k bs=1 of=/home/$user/convfile.bin Копіювання файлу file.bin в convfile.bin за винятком перших 64 kB
dd if=/home/$user/bootimage.img of=/dev/sdc Створення завантажувального USB-пристрої (показано тут як / dev / sdc)
dd if=/dev/mem bs=1k skip=768 count=256 2>/dev/null | strings -n 8 Читання BIOS
dd bs=1k if=imagefile.nrg of=imagefile.iso skip=300k Конвертація образу Nero в стандартний ISO. Це можливо, оскільки всі відмінність між ними полягає в заголовку розміром 300 кб, додає Nero до стандартного ISO-образу.
dd if=/dev/sda1 | gzip -c | split -b 2000m - /mnt/hdc1/backup.img.gz Створення образу диска, стисненого за допомогою gzip і розрізаного на частини за допомогою split.
cat /mnt/hdc1/backup.img.gz.* | gzip -dc | dd of=/dev/sda1 Відновлення розділу з створеного вище образу.
dd if=/dev/zero of=myimage bs=1024 count=10240 Створення порожнього образу диска
dd ibs=10 skip=1 Вирізання перших 10 байт з stdin
dd bs=265b conv=noerror if=/dev/st0 of=/tmp/bad.tape.image Створення образу з стрічкового накопичувача з поганими ділянками
dd if=/dev/sda count=1 | hexdump -C перегляд MBR
dd if=/dev/sda | nc -l 10001 nc $system_to_backup_IP 10001 | dd of=sysbackupsda.img Швидке мережеве резервне копіювання за допомогою netcat
d if=/dev/zero of=/dev/sdX bs=1024000 count=1 Очищення перших 10 MB розділу
dd if=/dev/zero of=tmpswap bs=1k count=1000000 chmod 600 tmpswap mkswap tmpswap swapon tmpswap Створення тимчасового простору підкачки
dd if=/dev/sda of=/dev/null bs=1024k count=1024 1073741824 bytes (1.1 GB) copied, 24.1684 s, 44.4 MB/s Визначення швидкості системи введення/виведення вашого диска. Читання файлу розміром 1 Гб.
dd if=/dev/random count=1 2>/dev/null | od -t u1 | awk '{ print $2}' | head -1 Генерація випадкового числа
dd if=/dev/mem of=myRAM bs=1024 Копіювання вмісту оперативної пам'яті у файл.
dd if=/dev/sda bs=512 count=1 | od -xa Перегляд вмісту головною завантажувального запису в шістнадцятковому форматі і в ASCII
dd if=/my/old/mbr of=/dev/sda bs=446 count=1 Відновлення головною завантажувального запису, не зачіпаючи таблицю розділів.
dd if=/dev/sda1 | split -b 700m - sda1-image Створення копії розділу і збереження її в образах максимальним розміром 700 Мб.
Работа с текстом
ls -l | dd conv=ucase Перетворює висновок команди у верхній регістр
echo "MY UPPER CASE TEXT" | dd conv=lcase Перетворює будь-який текст в нижній регістр
dd if=/etc/passwd cbs=132 conv=ebcdic of=/tmp/passwd.ebcdic Перетворює файл системних паролів у файл формату EBCDIC фіксованої довжини
dd if=text.ascii of=text.ebcdic conv=ebcdic Перетворення ASCII в EBCDIC
dd if=myfile of=myfile conv=ucase Перетворення файлу в нижній регістр (проста заміна sed або tr)