![Kako ustvariti aplikacije GUI pod namizjem Linux z uporabo PyGObject](/f/153cbbafd60b0359d0be0b3932aa3cd6.png?width=100&height=100)
Na kratko: V tem naprednem vodniku bomo obravnavali nekaj praktičnih primerov ukaza dd. Po upoštevanju tega vodnika bodo napredni uporabniki lahko udobno delali z blokovnimi napravami prek vmesnika ukazne vrstice.
V Linuxu vse je datoteka in blokovne naprave pri tem niso izjema. Pogosto moramo delati z blok napravami. Kot uporabniki Linuxa izvajamo različne operacije na blokovnih napravah, kot je – sprejemanje a varnostno kopiranje diska ali particije, varnostno kopiranje glavnega zagonskega zapisa (MBR), izdelava a zagonski pogon USB, in seznam se nadaljuje.
Vsekakor lahko za izvajanje vseh teh operacij uporabimo grafična orodja. Vendar pa večina skrbnikov Linuxa raje uporablja ukaz dd zaradi svoje bogate funkcionalnosti in robustnosti.
V tem naprednem vodniku bomo spoznali ukaz dd za pretvorbo in kopiranje datotek. Vendar pa za razliko od cp ukaz večino časa se uporablja z blok napravami.
V tem priročniku bomo najprej razumeli uporabo ukaz dd z osnovnimi primeri, nato pa bomo razpravljali o nekaterih naprednih primerih uporabe.
Kazalo
Pa začnimo.
Najpogostejša sintaksa ukaz dd kot sledi:
$ dd [if=] [of=]
V zgornji sintaksi:
Previdnost – Pomembno je upoštevati, da je treba ukaz dd med delom z blokovnimi napravami uporabljati zelo previdno. Majhna napaka lahko povzroči trajno izgubo podatkov. Zato je zelo priporočljivo, da te operacije najprej preizkusite na testnem stroju.
Eden od osnovnih načinov uporabe ukaz dd je kopiranje datoteke v trenutni imenik. Razumejmo z ustvarjanjem preproste besedilne datoteke:
$ echo "to je vzorčna besedilna datoteka" > datoteka-1.txt.
Zdaj pa ustvarimo njegovo kopijo z uporabo ukaz dd:
$ dd if=file-1.txt of=file-2.txt.
V tem primeru je če
parameter predstavlja izvorno datoteko, medtem ko parameter od
parameter predstavlja ciljno datoteko.
Ali ni popolnoma podoben cp ukaz? Kaj je potem tako posebnega na ukaz dd?
The ukaz dd je veliko močnejši od navadnega cp ukaz. Zadnji deli vadnice obravnavajo nekatere njegove napredne primere uporabe.
The ukaz dd omogoča pretvorbo velikih in malih črk. Da bi to dosegli, lahko uporabimo konv parameter z njim.
Če želite to razumeti, najprej prikažite vsebino datoteka-1.txt mapa:
$ mačja datoteka-1.txt to je vzorčna besedilna datoteka.
Zdaj pa pretvorimo vsebino datoteke v velike črke z naslednjim ukazom:
$ dd if=file-1.txt of=upper-case.txt conv=ucase.
V tem primeru je konv=ucase
možnost se uporablja za pretvorbo malih črk v velike črke.
Nazadnje preverite vsebino novo ustvarjene datoteke:
$ cat upper-case.txt TO JE VZORČNA BESEDILOVNA DATOTEKA.
Na podoben način lahko uporabimo ukaz dd za pretvorbo velikih črk v male črke:
Uporabimo konv=lcase
možnost pretvorbe velikih črk v male:
$ dd if=upper-case.txt of=lower-case.txt conv=lcase.
Zdaj pa prikažimo vsebino novo ustvarjene datoteke in preverimo, ali je bila pretvorba izvedena pravilno:
$ cat small-case.txt to je vzorčna besedilna datoteka
Privzeto je ukaz dd zamenja ciljno datoteko, kar pomeni, da bo prepisal datoteko, če obstaja na cilju z istim imenom.
Vendar pa lahko to privzeto vedenje onemogočimo z konv=razklj
možnost, kot je prikazano.
$ dd if=file-1.txt of=file-2.txt conv=excl dd: ni uspelo odpreti 'file-2.txt' Datoteka obstaja
Tukaj lahko vidimo, da je ukaz dd je prekinil operacije, ker je na cilju prisotna datoteka z istim imenom.
Včasih želimo posodobiti datoteko v načinu dodajanja, kar pomeni, da je treba novo vsebino dodati na konec ciljne datoteke.
To lahko dosežemo s kombinacijo dveh zastav – oflag=priloži
in konv=notrunc
. Tukaj, oflag
predstavlja izhodno zastavo, medtem ko notrunc
možnost se uporablja za onemogočanje obrezovanja na cilju.
Da bi to razumeli, najprej ustvarimo novo besedilno datoteko:
$ echo "dodaj primer demo" > dest.txt.
Nato pripnimo vsebino v dest.txt datoteko z naslednjim ukazom:
$ dd if=file-1.txt of=dest.txt oflag=append conv=notrunc.
Zdaj pa preverimo vsebino dest.txt mapa:
$ cat dest.txt dodate primer demo. to je vzorčna besedilna datoteka.
Lahko damo navodila ukaz dd da preskočite prvih nekaj znakov med branjem vhodne datoteke z uporabo ibs in preskoči opcije.
Najprej prikažimo vsebino datoteka-1.txt mapa:
$ cat file-1.txt to je vzorčna besedilna datoteka.
Nato preskočimo prvih 8 znakov z naslednjim ukazom:
$ dd if=file-1.txt of=file-2.txt ibs=8 skip=1.
Zdaj pa preverimo vsebino datoteka-2.txt mapa:
$ cat file-2.txt vzorčna besedilna datoteka.
V zgornjem izhodu lahko vidimo, da je ukaz preskočil prvih 8 znakov.
Doslej smo razpravljali o osnovnih primerih ukaz dd ki ne zahteva korenskega dostopa. Zdaj pa si oglejmo nekaj naprednih primerov uporabe.
Tako kot datoteke lahko naredimo varnostno kopijo diskovne particije z uporabo ukaz dd. Na primer, spodnji ukaz naredi varnostno kopijo /dev/sda1 pregrada na particija-bkp.img:
$ sudo dd if=/dev/sda1 of=partition-bkp.img.
V prejšnjem primeru smo varnostno kopirali /dev/sda1 particija na particija-bkp.img mapa.
Zdaj pa ga obnovimo v /dev/sdb1 razdelite z naslednjim ukazom:
$ sudo dd if=partition-bkp.img of=/dev/sdb1.
Pomembno je upoštevati, da mora biti velikost ciljne particije enaka ali večja od velikosti varnostne kopije.
Disk ima lahko več particij. Zato lahko ustvarjanje in obnavljanje varnostne kopije na particijo postane zamudno, ko se število particij poveča. Da bi odpravili to omejitev, lahko varnostno kopiramo celoten diskovni pogon tako kot particije.
Torej, vzemimo varnostno kopijo /dev/sda disk z naslednjim ukazom:
$ sudo dd if=/dev/sda of=disk-bkp.img.
Zgornji ukaz varnostno kopira celoten disk, vključno z njegovimi particijami.
Tako kot particije lahko obnovimo varnostno kopijo celotnega diska. V prejšnjem primeru smo varnostno kopirali celoten disk na disk-bkp.img mapa. Zdaj pa uporabimo isto, da ga obnovimo na /dev/sdb disk.
Najprej izbrišite vse particije iz /dev/sdb disk in preverite, ali so bile vse particije izbrisane:
$ lsblk /dev/sdb.
Nato obnovimo varnostno kopijo na /dev/sdb vozite z naslednjim ukazom:
$ sudo dd if=disk-bkp.img of=/dev/sdb.
Na koncu preverite, ali je bila particija ustvarjena na /dev/sdb disk:
$ lsblk /dev/sdb.
Glavni zagonski zapis (MBR) se nahaja v prvem sektorju zagonske diskete. Shranjuje informacije o particijah diska. Lahko uporabimo ukaz dd kot je prikazano spodaj, da si ga ogledate:
$ sudo dd if=/dev/sda of=mbr.img bs=512 count=1.
Zgornji ukaz vzame nazaj prvih 512 bajtov, tj. en sektor.
Pomembno je vedeti, da mora biti zgornji ukaz izveden na zagonski disketi.
V prejšnjem primeru smo varnostno kopirali glavni zagonski zapis (MBR). Zdaj pa ga obnovimo na /dev/sdb disk z naslednjim ukazom:
$ sudo dd if=mbr.img of=/dev/sdb.
Podobno kot pri particijah in diskih lahko tudi z ukazom dd kopiramo vsebino s pogona CD ali DVD. Torej uporabimo spodnji ukaz, da naredimo isto:
$ sudo dd if=/dev/cdrom of=alma-minimal.iso.
V Linuxu je pogon CD/DVD predstavljen z /dev/cdrom napravo. Zato ga uporabljamo kot izvorno datoteko.
Zdaj pa preverimo, ali je bila vsebina uspešno kopirana, tako da preverimo njeno ukaz za kontrolno vsoto:
$ sha256sum alma-minimal.is.
V prejšnjem primeru smo ustvarili iso sliko Alma Linuxa. Zdaj pa ga uporabimo za ustvarjanje zagonskega pogona USB:
$ sudo dd if=alma-minimal.iso of=/dev/sdb.
Pomembno je vedeti, da mora biti zgornji ukaz izveden s pravilnim pogonom USB.
Privzeto je ukaz dd ne prikazuje napredka med kopiranjem. Vendar pa lahko to privzeto vedenje preglasimo z možnostjo stanja.
Uporabimo torej status=napredek
možnost z ukaz dd za prikaz vrstice napredka:
$ sudo dd if=alma-minimal.iso of=/dev/sdb status=progress.
V tem članku smo obravnavali nekaj praktičnih primerov ukaz dd. Napredni uporabniki se lahko sklicujejo na te primere v vsakdanjem življenju pri delu s sistemi Linux. Vendar pa moramo biti pri izvajanju teh ukazov zelo previdni. Kajti majhna napaka lahko prepiše vsebino celotnega diska.
Ali poznate še kakšen najboljši primer ukaza dd v Linuxu? Sporočite nam svoje poglede v spodnjih komentarjih.