πŸ’½ dd: ΠšΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π°, която ΠΌΠΎΠΆΠ΅ ΠΏΠΎΡ‡Ρ‚ΠΈ всичко Π² Linux

πŸ’½ dd: ΠšΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π°, която ΠΌΠΎΠΆΠ΅ ΠΏΠΎΡ‡Ρ‚ΠΈ всичко Π² Linux

ΠžΡ‚ създаванС Π½Π° bootable Ρ„Π»Π°ΡˆΠΊΠΈ Π΄ΠΎ Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ β€” истинският ΡˆΠ²Π΅ΠΉΡ†Π°Ρ€ΡΠΊΠΈ Π½ΠΎΠΆ Π½Π° Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°.


🧭 Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅

dd Π΅ Π΅Π΄Π½Π° ΠΎΡ‚ Π½Π°ΠΉ-ΠΌΠΎΡ‰Π½ΠΈΡ‚Π΅, Π½ΠΎ ΡΡŠΡ‰ΠΎ ΠΈ Π½Π°ΠΉ-опаснитС ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π² арсСнала Π½Π° всСки Linux ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π». БъздадСна с ΠΈΠ·ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½Π° Π³ΡŠΠ²ΠΊΠ°Π²ΠΎΡΡ‚, тя ΠΌΠΎΠΆΠ΅ Π΄Π° Ρ‡Π΅Ρ‚Π΅ ΠΈ записва Π±ΠΈΡ‚ ΠΏΠΎ Π±ΠΈΡ‚, Π±Π»ΠΎΠΊ ΠΏΠΎ Π±Π»ΠΎΠΊ – ΠΎΡ‚ Π΅Π΄Π½ΠΎ устройство Π½Π° Π΄Ρ€ΡƒΠ³ΠΎ, ΠΎΡ‚ Ρ„Π°ΠΉΠ» към устройство, ΠΎΡ‚ устройство към Ρ„Π°ΠΉΠ» ΠΈ Π΄ΠΎΡ€ΠΈ Π΄Π° ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π° Π΄Π°Π½Π½ΠΈ ΠΏΠΎ ΠΏΡŠΡ‚Ρ.

Π’Π°Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΌΠΎΠΆΠ΅:

  • βœ… Π”Π° създава bootable USB Ρ„Π»Π°ΡˆΠΊΠΈ
  • βœ… Π”Π° ΠΊΠ»ΠΎΠ½ΠΈΡ€Π° Ρ†Π΅Π»ΠΈ дисковС
  • βœ… Π”Π° ΠΏΡ€Π°Π²ΠΈ Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΈ копия ΠΈ Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅
  • βœ… Π”Π° тСства скоростта Π½Π° дисковСтС
  • βœ… Π”Π° Π½ΡƒΠ»ΠΈΡ€Π° чувствитСлна информация

И Ρ‚ΠΎΡ‡Π½ΠΎ Π·Π°Ρ‚ΠΎΠ²Π° dd сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠ°ΠΊΡ‚ΠΎ ΠΎΡ‚ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‰ΠΈ, Ρ‚Π°ΠΊΠ° ΠΈ ΠΎΡ‚ систСмни администратори, СкспСрти ΠΏΠΎ сигурност ΠΈ Снтусиасти.


βš™οΈ ОсновСн синтаксис

Terminal
dd if=Π²Ρ…ΠΎΠ΄Π΅Π½_Ρ„Π°ΠΉΠ» of=ΠΈΠ·Ρ…ΠΎΠ΄Π΅Π½_Ρ„Π°ΠΉΠ» [ΠΎΠΏΡ†ΠΈΠΈ]
  • if= – input file (Π²Ρ…ΠΎΠ΄Π΅Π½ Ρ„Π°ΠΉΠ» ΠΈΠ»ΠΈ устройство)
  • of= – output file (ΠΈΠ·Ρ…ΠΎΠ΄Π΅Π½ Ρ„Π°ΠΉΠ» ΠΈΠ»ΠΈ устройство)
  • bs= – block size (Ρ€Π°Π·ΠΌΠ΅Ρ€ Π½Π° Π±Π»ΠΎΠΊΠ°, Π½Π°ΠΏΡ€. 4M)
  • count= – ΠΊΠΎΠ»ΠΊΠΎ Π±Π»ΠΎΠΊΠ° Π΄Π° сС ΠΊΠΎΠΏΠΈΡ€Π°Ρ‚
  • status=progress – ΠΏΠΎΠΊΠ°Π·Π²Π° прогрСса Π½Π° опСрацията

πŸ§ͺ ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΈ Π·Π° Ρ€Π΅Π°Π»Π½Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π°

πŸ”Ή 1. БъздаванС Π½Π° bootable USB ΠΎΡ‚ ISO Ρ„Π°ΠΉΠ»

Terminal
sudo dd if=ubuntu.iso of=/dev/sdX bs=4M status=progress oflag=sync

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅! Π£Π²Π΅Ρ€ΠΈ сС, Ρ‡Π΅ /dev/sdX Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎΡ‚ΠΎ USB устройство, Π·Π° Π΄Π° Π½Π΅ ΠΈΠ·Ρ‚Ρ€ΠΈΠ΅Ρˆ Π³Ρ€Π΅ΡˆΠ½ΠΈΡ диск.


πŸ”Ή 2. ΠšΠΎΠΏΠΈΡ€Π°Π½Π΅ Π½Π° цял диск

Terminal
sudo dd if=/dev/sda of=/dev/sdb bs=64K conv=noerror,sync status=progress

ΠšΠ»ΠΎΠ½ΠΈΡ€Π° диск /dev/sda към /dev/sdb – ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΡ€ΠΈ миграция Π½Π° систСма.


πŸ”Ή 3. БъздаванС Π½Π° ISO ΠΎΡ‚ CD/DVD

Terminal
dd if=/dev/cdrom of=backup.iso bs=2M status=progress

πŸ”Ή 4. БъздаванС Π½Π° Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎ ΠΊΠΎΠΏΠΈΠ΅ Π½Π° MBR (Master Boot Record)

Terminal
dd if=/dev/sda of=mbr_backup.img bs=512 count=1

Π—Π°ΠΏΠ°Π·Π²Π° ΠΏΡŠΡ€Π²ΠΈΡ‚Π΅ 512 Π±Π°ΠΉΡ‚Π° Π½Π° диска (MBR ΠΈ partition table).


πŸ”Ή 5. Π’ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° MBR ΠΎΡ‚ Π°Ρ€Ρ…ΠΈΠ²

Terminal
dd if=mbr_backup.img of=/dev/sda bs=512 count=1

πŸ”Ή 6. Π˜Π·Ρ‚Ρ€ΠΈΠ²Π°Π½Π΅ Π½Π° диск с Π½ΡƒΠ»ΠΈ (Π·Π° сигурност)

Terminal
dd if=/dev/zero of=/dev/sdX bs=1M status=progress

ΠŸΡ€Π΅ΠΌΠ°Ρ…Π²Π° всякакви Π΄Π°Π½Π½ΠΈ, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ дяловС. Използва сС ΠΏΡ€ΠΈ Ρ€Π΅Ρ†ΠΈΠΊΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° дисковС.


πŸ”Ή 7. Π“Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ„Π°ΠΉΠ» с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ Π΄Π°Π½Π½ΠΈ

Terminal
dd if=/dev/urandom of=random.img bs=1M count=100

Бъздава 100MB Ρ„Π°ΠΉΠ» с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΎ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅ β€” ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π·Π° криптографски Ρ†Π΅Π»ΠΈ ΠΈΠ»ΠΈ тСстванС.


πŸ”Ή 8. ВСст Π½Π° скоростта Π½Π° Ρ‡Π΅Ρ‚Π΅Π½Π΅/запис Π½Π° диск

Terminal
dd if=/dev/zero of=testfile bs=1G count=1 oflag=dsync

Показва Ρ€Π΅Π°Π»Π½Π°Ρ‚Π° скорост Π½Π° запис.


πŸ› οΈ ПолСзни ΠΎΠΏΡ†ΠΈΠΈ

ΠžΠΏΡ†ΠΈΡΠžΠΏΠΈΡΠ°Π½ΠΈΠ΅
bs=4MΠ Π°Π·ΠΌΠ΅Ρ€ Π½Π° Π±Π»ΠΎΠΊ – ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ ΠΏΠΎ-голям, Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° ΠΏΠΎ-Π±ΡŠΡ€Π·ΠΎ (Π² ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ случаи)
count=100Колко Π±Π»ΠΎΠΊΠ° Π΄Π° сС обработят
status=progressПоказва Π½Π°ΠΏΡ€Π΅Π΄ΡŠΠΊΠ° Π² Ρ€Π΅Π°Π»Π½ΠΎ Π²Ρ€Π΅ΠΌΠ΅
conv=noerrorΠ˜Π³Π½ΠΎΡ€ΠΈΡ€Π° Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΏΡ€ΠΈ Ρ‡Π΅Ρ‚Π΅Π½Π΅
conv=syncΠ—Π°ΠΏΡŠΠ»Π²Π° Π±Π»ΠΎΠΊΠΎΠ²Π΅Ρ‚Π΅ Π΄ΠΎ пълСн Ρ€Π°Π·ΠΌΠ΅Ρ€
iflag=directИзползва Π΄ΠΈΡ€Π΅ΠΊΡ‚Π΅Π½ Π΄ΠΎΡΡ‚ΡŠΠΏ, избягвайки кСша

🧨 ΠžΠΏΠ°ΡΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅

dd Π½Π΅ ΠΏΠΈΡ‚Π°! Няма β€žΠ‘ΠΈΠ³ΡƒΡ€Π΅Π½ Π»ΠΈ си?β€œ – Π΅Π΄Π½Π° Π³Ρ€Π΅ΡˆΠΊΠ° Π² ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° устройството ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·Ρ‚Ρ€ΠΈΠ΅ цСлия Ρ‚ΠΈ диск.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° катастрофа:

Terminal
sudo dd if=~/ubuntu.iso of=/dev/sda bs=4M

πŸ‘‰ Ако /dev/sda Π΅ систСмният диск, Π³ΡƒΠ±ΠΈΡˆ всичко.

πŸ’‘ Π’ΠΈΠ½Π°Π³ΠΈ провСрявай с:

Terminal
lsblk

🧠 Π‘ΡŠΠ²Π΅Ρ‚ΠΈ ΠΎΡ‚ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°Ρ‚Π°

  • Използвай status=progress Π·Π° прослСдяванС
  • Π—Π°Π΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΎ ΠΏΠΎΡ‚Π²ΡŠΡ€ΠΆΠ΄Π°Π²Π°ΠΉ ΠΏΡŠΡ‚Ρ Π΄ΠΎ устройствата (lsblk, fdisk -l)
  • Използвай sync ΠΈ noerror ΠΏΡ€ΠΈ ΠΊΠ»ΠΎΠ½ΠΈΡ€Π°Π½Π΅ Π½Π° Π΄Π΅Ρ„Π΅ΠΊΡ‚Π½ΠΈ дисковС
  • Използвай gzip Π·Π° компрСсия Π½Π° Π°Ρ€Ρ…ΠΈΠ²ΠΈ Π² Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅:
bashΠšΠΎΠΏΠΈΡ€Π°Π½Π΅Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€Π°Π½Π΅dd if=/dev/sda bs=64K | gzip > backup.img.gz

πŸ” Π’ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° Π°Ρ€Ρ…ΠΈΠ²

Terminal
gunzip -c backup.img.gz | dd of=/dev/sda bs=64K

πŸ” Как Π΄Π° β€žΠΏΡ€Π΅Π³Π»Π΅Π΄Π°Ρˆβ€œ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅ ΠΎΡ‚ диск с dd

Π˜Π·Π²Π»ΠΈΡ‡Π°Π½Π΅ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π±Π»ΠΎΠΊ:

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

🏁 Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

dd Π΅ ΠΈΠ·ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΌΠΎΡ‰Π΅Π½ инструмСнт, ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Ρ‚ΠΈ спСсти часовС работа… ΠΈΠ»ΠΈ Π΄Π° Ρ‚ΠΈ струва цяла систСма, Π°ΠΊΠΎ Π½Π΅ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»Π½ΠΎ.

Но ако го владССш, моТСш да:

  • ΠΡ€Ρ…ΠΈΠ²ΠΈΡ€Π°Ρˆ
  • Π’ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΡΠ²Π°Ρˆ
  • ΠšΠ»ΠΎΠ½ΠΈΡ€Π°Ρˆ
  • ВСствaш
  • Π˜Π·Ρ‚Ρ€ΠΈΠ²Π°Ρˆ

…всичко β€” с Π΅Π΄Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°.


πŸ”§ Бонус: alias Π·Π° ΠΏΠΎ-бСзопасна Ρ€Π°Π±ΠΎΡ‚Π°

Π”ΠΎΠ±Π°Π²ΠΈ Π² .bashrc ΠΈΠ»ΠΈ .zshrc:

Terminal
alias ddcopy=’dd status=progress bs=64K’
Π‘Π»Π°Π³ΠΎΠ΄Π°Ρ€ΠΈΠΌ Π²ΠΈ Π·Π° ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½Π΅Ρ‚ΠΎ Π½Π° статията! Ако Π½Π°ΠΌΠ΅Ρ€ΠΈΡ…Ρ‚Π΅ информацията Π·Π° ΠΏΠΎΠ»Π΅Π·Π½Π°, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π΄Π°Ρ€ΠΈΡ‚Π΅ посрСдством Π±ΡƒΡ‚ΠΎΠ½ΠΈΡ‚Π΅ ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ: πŸ”°