Како да се користи командата dd во Linux [15 корисни примери]


Кратко: Во овој напреден водич, ќе разговараме за неколку практични примери на командата dd. Откако ќе го следат ова упатство, напредните корисници ќе можат удобно да работат со блок уредите од интерфејсот на командната линија.

Во Linux, бутабилен USB-диск и списокот продолжува.

Секако, можеме да користиме графички алатки за да ги извршиме сите овие операции. Сепак, повеќето администратори на Linux претпочитаат да ја користат командата dd поради неговата богата функционалност и робусност.

Во овој напреден водич, ќе научиме за командата dd за конвертирање и копирање датотеки. Сепак, за разлика од командата cp најчесто се користи со блок уреди.

Во ова упатство, прво, ќе ја разбереме употребата на командата dd со основни примери, а потоа ќе разговараме за некои напредни случаи на употреба.

Значи, да започнеме.

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

Најчестата синтакса на dd командата е како што следува:

$ dd [if=] [of=]

Во горната синтакса:

  • ако – ја претставува влезната или изворната датотека.
  • од – ја претставува излезната или одредишната датотека.

1. Како да копирате датотека во Linux

Една од основните употреби на dd командата е да копирате датотека во тековниот директориум. Ајде да разбереме со создавање едноставна текстуална датотека:

$ echo "this is a sample text file" > file-1.txt

Сега, ајде да создадеме нејзина копија користејќи ја командата dd:

$ dd if=file-1.txt of=file-2.txt

Во овој пример, параметарот if ја претставува изворната датотека додека параметарот of ја претставува одредишната датотека.

Зарем не е сосема слично на cp командата? Тогаш, што е толку посебно во врска со командата dd?

Наредбата dd е многу помоќна од редовната cp команда. Последните делови од упатството дискутираат за некои од неговите напредни случаи на употреба.

2. Како да конвертирате текст од мали во големи букви

Наредбата dd ни овозможува да извршиме конверзија на случај. За да го постигнеме ова, можеме да го користиме параметарот conv со него.

За да го разберете ова, прво, прикажете ја содржината на датотеката file-1.txt:

$ cat file-1.txt

this is a sample text file

Сега, ајде да ја конвертираме содржината на датотеката во големи букви користејќи ја следнава команда:

$ dd if=file-1.txt of=upper-case.txt conv=ucase

Во овој пример, опцијата conv=ucase се користи за претворање на малите букви во големи букви.

Конечно, проверете ја содржината на новосоздадената датотека:

$ cat upper-case.txt

THIS IS A SAMPLE TEXT FILE

3. Како да конвертирате текст од големи во мали букви

На сличен начин, можеме да ја користиме командата dd за да ги претвориме големите букви во мали букви:

Ајде да ја користиме опцијата conv=lcase за да ги конвертираме големите букви во мали букви:

$ dd if=upper-case.txt of=lower-case.txt conv=lcase

Сега, ајде да ја прикажеме содржината на новосоздадената датотека и да потврдиме дека конверзијата е правилно извршена:

$ cat lower-case.txt

this is a sample text file

4. Избегнувајте препишување на дестинација датотека во Linux

Стандардно, командата dd ја заменува дестинационата датотека, што значи дека ќе ја презапише датотеката доколку постои на дестинацијата со истото име.

Сепак, можеме да го оневозможиме ова стандардно однесување користејќи ја опцијата conv=excl како што е прикажано.

$ dd if=file-1.txt of=file-2.txt conv=excl

dd: failed to open ‘file-2.txt’ File exists

Овде, можеме да видиме дека командата dd ги прекина операциите бидејќи датотеката со истото име е присутна на дестинацијата.

5. Додадете податоци во датотека со помош на командата dd

Понекогаш, сакаме да ја ажурираме датотеката во режим на додавање, што значи дека новата содржина треба да се додаде на крајот од дестинациската датотека.

Можеме да го постигнеме ова со комбинирање на двете знаменца – oflag=append и conv=notrunc. Овде, oflag го претставува излезното знаме додека опцијата notrunc се користи за оневозможување на скратувањето на дестинацијата.

За да го разбереме ова, прво, ајде да создадеме нова текстуална датотека:

$ echo "append example demo" > dest.txt

Следно, ајде да ја додадеме содржината во датотеката dest.txt користејќи ја следнава команда:

$ dd if=file-1.txt of=dest.txt oflag=append conv=notrunc

Сега, ајде да ја провериме содржината на датотеката dest.txt:

$ cat dest.txt 

append example demo
this is a sample text file

6. Прескокнете бајти или знаци додека ја читате влезната датотека

Можеме да и наложиме на dd командата да ги прескокне првите неколку знаци додека ја чита влезната датотека користејќи ги опциите ibs и прескокни.

Прво, да ја прикажеме содржината на датотеката file-1.txt:

$ cat file-1.txt

this is a sample text file

Следно, ајде да ги прескокнеме првите 8 знаци со користење на следнава команда:

$ dd if=file-1.txt of=file-2.txt ibs=8 skip=1

Сега, ајде да ја потврдиме содржината на датотеката file-2.txt:

$ cat file-2.txt

a sample text file

На горенаведениот излез, можеме да видиме дека командата ги прескокнала првите 8 знаци.

7. Направете резервна копија на партиција на дискот на Linux со помош на командата dd

Досега разговаравме за основните примери на dd командата која не бара root пристап. Сега, ајде да видиме некои случаи за напредна употреба.

Исто како и датотеките, можеме да направиме резервна копија од партицијата на дискот користејќи ја командата dd. На пример, командата подолу прави резервна копија од партицијата /dev/sda1 на partition-bkp.img:

$ sudo dd if=/dev/sda1 of=partition-bkp.img

8. Вратете ја партицијата на дискот на Linux со помош на командата dd

Во претходниот пример, направивме резервна копија на партицијата /dev/sda1 во датотеката partition-bkp.img.

Сега, ајде да го вратиме на партицијата /dev/sdb1 користејќи ја следнава команда:

$ sudo dd if=partition-bkp.img of=/dev/sdb1

Важно е да се напомене дека големината на дестинацијата мора да биде еднаква или поголема од големината на резервната копија.

9. Направете резервна копија на цел хард диск Линукс со помош на командата dd

Уредот на дискот може да има повеќе партиции. Така, преземањето и враќањето на резервната копија по партиција може да одзема многу време како што се зголемува бројот на партиции. За да го надминеме ова ограничување, можеме да направиме резервна копија на целиот диск, исто како и партициите.

Значи, да земеме резервна копија на дискот /dev/sda користејќи ја следнава команда:

$ sudo dd if=/dev/sda of=disk-bkp.img

Горенаведената команда прави резервна копија на целиот диск вклучувајќи ги и неговите партиции.

10. Вратете го хард дискот Линукс со помош на командата dd

Исто како и партициите, можеме да ја вратиме резервната копија на целиот диск. Во претходниот пример, направивме резервна копија на целиот диск во датотеката disk-bkp.img. Сега, ајде да го користиме истото за да го вратиме на дискот /dev/sdb.

Прво, да ги избришеме сите партиции од дискот /dev/sdb и да потврдиме дека сите партиции се избришани:

$ lsblk /dev/sdb

Следно, ајде да ја вратиме резервната копија на дискот /dev/sdb користејќи ја следнава команда:

$ sudo dd if=disk-bkp.img of=/dev/sdb

Конечно, проверете дали партицијата е креирана на дискот /dev/sdb:

$ lsblk /dev/sdb

11. Направете резервна копија на главниот запис за подигање со помош на командата dd

Master Boot Record (MBR) се наоѓа во првиот сектор на дискот за подигање. Складира информации за партициите на дискот. Можеме да ја користиме командата dd како што е прикажано подолу за да ја вратиме назад:

$ sudo dd if=/dev/sda of=mbr.img bs=512 count=1

Горенаведената команда зема резервна копија од првите 512 бајти, односно еден сектор.

Важно е да се напомене дека горната команда мора да се изврши на дискот за подигање.

12. Вратете го главниот запис за подигање со помош на командата dd

Во претходниот пример, направивме резервна копија на Master Boot Record (MBR). Сега, ајде да го вратиме на дискот /dev/sdb користејќи ја следнава команда:

$ sudo dd if=mbr.img of=/dev/sdb

13. Копирајте ја содржината на дискот на ЦД/ДВД со помош на командата dd

Слично на партициите и дисковите, можеме да ја користиме командата dd за да копираме содржини од CD или DVD-уредот. Значи, да ја користиме командата подолу за да го сториме истото:

$ sudo dd if=/dev/cdrom of=alma-minimal.iso

Во Linux, дискот за ЦД/ДВД е претставен со уредот /dev/cdrom. Затоа го користиме како изворна датотека.

Сега, ајде да потврдиме дека содржината е успешно копирана со потврдување на командата за проверка на сумата:

$ sha256sum alma-minimal.is

14. Направете бутабилен USB-диск со помош на командата dd

Во претходниот пример, создадовме изо слика на Alma Linux. Сега ајде да го користиме за да создадеме бутабилен USB-диск:

$ sudo dd if=alma-minimal.iso of=/dev/sdb

Важно е да се напомене дека горната команда мора да се изврши со правилниот USB-уред.

15. Како да се прикаже лентата за напредок

Стандардно, командата dd не го прикажува напредокот додека се врши операцијата за копирање. Сепак, можеме да го отфрлиме ова стандардно однесување користејќи ја опцијата за статус.

Значи, да ја користиме опцијата status=progress со командата dd за да ја прикажеме лентата за напредок:

$ sudo dd if=alma-minimal.iso of=/dev/sdb status=progress
Заклучок

Во оваа статија, разговаравме за неколку практични примери на командата dd. Напредните корисници можат да се осврнат на овие примери во секојдневниот живот додека работат со Linux системи. Сепак, мора да бидеме многу внимателни додека ги извршуваме овие команди. Бидејќи мала грешка може да ја презапише содржината на целиот диск.

Дали знаете некој друг најдобар пример за командата dd во Linux? Кажете ни ги вашите ставови во коментарите подолу.