Linux-dd-kommandoen er en av de mest kraftige verktøy som kan brukes i en rekke måter. Dette verktøyet er i hovedsak brukt for å kopiere og konvertering av data, derav det står for data duplicator. Dette verktøyet kan brukes for:
- Sikkerhetskopiering og gjenoppretting av en hel harddisk eller partisjon.
- Opprette virtuelle filsystem og backup bilder av CD-er eller Dvd-er kalt ISO-filer
- Kopier områder av raw-filer for enhet som sikkerhetskopiere MBR (master boot record).
- Konvertering av data formater som ASCII til EBCDIC.,
- Konverterer små bokstaver til store og vice versa.
Bare superbruker kan kjøre denne kommandoen. Du bør være svært forsiktig når du bruker denne kommandoen som feilaktig bruk kan føre til store tap av data. Så, noen folk anser dette verktøyet som data destroyer.
Syntaksen for kommandoen dd
Den grunnleggende bruk av dd-kommandoen er ganske enkelt fordi det bare tar to argumenter: hvis= for å angi inndata-filen og av= å spesifisere output fil. Argumentene til de valg kan være enten filer eller blokkere enheter., Jeg ville imidlertid ikke anbefale å bruke dd til å kopiere filer fordi cp gjør at i en mye enklere måte. Men, du kan bruke den til å klone en harddisk. Syntaksen er
dd if=<source file name> of=<target file name>
Vi vil lære ulike alternativer mens du går gjennom dd-kommandoen eksempler.
Sikkerhetskopiering og gjenoppretting av en hel disk eller partisjon
Det er mulig å lagre alle dataene fra en hel disk/partisjon til en annen disk/partisjon. Ikke en enkel kopi som cp-kommandoen, men en blokk størrelse kopi.
en., Backup av hele disken til disken
Du kan kopiere alle dataene (hele disken) fra disk /dev/sda
til /dev/sdb
. dd vet ikke noe om filsystemet eller partisjoner, vil det bare kopiere alt fra /dev/sda
til /dev/sdb
. Du trenger for å indikere blokk-størrelse til å være kopiert i gang med bs
alternativ. Så, dette vil klone disken med de samme data på samme partisjon.
Dette fungerer bare hvis den andre enheten er like stor som eller større enn den første., Ellers, du får avkortet og verdiløs partisjoner på den andre. Her, hvis det står for input-fil , for står for output file og bs står for blokk-størrelse (antall byte som skal lese/skrive på en gang). Sørg for at du bruker blokkere størrelser i multipler av 1024 byte som er lik 1KB. Hvis du ikke angi blokk-størrelse, dd bruke en standard blokk-størrelse på 512 byte. conv
verdi parameteren noerror gir det verktøy for å fortsette å kopiere data selv om det oppdager noen feil. Sync alternativet gjør det mulig å bruke synkronisert I/O.
b., Opprette dd disk image (fil bildet)
Du kan lage et bilde av en harddisk, eller en fil som bilde. Sikkerhetskopiere en disk til et bilde vil være raskere enn å kopiere den eksakte data. Også, disk image gjør restaurering mye lettere.
# dd if=/dev/sda of=/tmp/sdadisk.img
Du kan lagre filen der du vil, men du må gi et filnavn som slutter med .img
extension som ovenfor. I stedet for /tmp/sdadisk.img
du kan lagre den for eksempel på /sdadisk.img
hvis du vil.
c., Opprette en komprimert disk image
Fordi dd skaper det nøyaktige innholdet av en hel disk, betyr det at det tar for mye størrelse. Du kan bestemme deg for å komprimere platebildet med kommandoen nedenfor
# dd if=/dev/vda | gzip -c >/tmp/vdadisk.img.gz
røret | operatør gjør utgang på venstre kommandoen bli inngang på høyre kommando. -c
alternativet skriver utgang på standard output og beholder den opprinnelige filer uendret.
d. Backup en partisjon eller klone en partisjon til en annen
i Stedet for en hel disk, du kan bare sikkerhetskopiere en enkelt partisjon., Du trenger bare å angi partisjon navn i input-filen som under
# dd if=/dev/sda1 of=/dev/sdb1 bs=4096 conv=noerror,sync
Dette vil synkronisere partisjon /dev/sda1
til /dev/sdb1
. Må du kontrollere at størrelsen av /dev/sdb1
bør være større enn /dev/sda1
. Eller du kan opprette en partisjon bilde som nedenfor
# dd if=/dev/sda1 of=/tmp/sda1.img
– e. Gjenopprette en disk eller partisjon bilde
Lagre en disk eller partisjon bidrar til å gjenopprette alle dataene, hvis det er noe problem med vår opprinnelige stasjonen., Hvis du vil gjenopprette, må du inverse input-fil med utfilen som er angitt under backup drift as nedenfor.
# dd if=/tmp/sdadisk.img of=/dev/sda
vil Du hente data som var til stede før den sikkerhetskopiering og ikke etter operasjonen
– e. Gjenopprette komprimert bilde
Du må først angi den komprimerte filen og utdatafilen som er harddisken komprimert før.
# gzip -dc /tmp/vdadisk.img.gz | dd of=/dev/vda
– d alternativ her er å dekomprimere. Merk filen. Du kan montere gjenopprettet harddisken til å se innholdet., Vær oppmerksom på at du vil data som legges til etter den siste komprimering backup drift.
Opprette virtuelle filsystem/Backup bilder av CD-er eller Dvd som iso-filene
Du kan trenger for å skape et virtuelt filsystem på Linux for noen grunner som å opprette en virtuell maskin på Linux-verten. Du kan også behov for å lage en backup iso-avbildningen til en CD eller DVD
en. Å skape et virtuelt filsystem
Et virtuelt filsystem er et filsystem som finnes i en fil, som i sin tur eksisterer på en fysisk disk. Du kan trenge det til å lage for eksempel en ekstra bytte eller loop-enhet eller en virtuell maskin., Vi trenger /dev/zero
som er en fil som brukes til å opprette en fil med ingen data, men med nødvendig størrelse (en fil med alle nuller). Med andre ord, dette vil skape en data-fil med alle nuller i filen som vil gi størrelse på en fil.
# dd if=/dev/zero of=/file bs=1024K count=500500+0 records in500+0 records out524288000 bytes (524 MB) copied, 1.21755 s, 431 MB/s
alternativet count
refererer til antall input blokker for å bli kopiert. Kombinert med blokk-størrelse verdi, det viser den samlede størrelsen til å kopiere., For eksempel bs=1024k
og count=500
gi en størrelse=1024K*500 =524288000 bytes =524MB
la oss Nå sjekke størrelsen på vår fil
# ls -lh /file-rw-r--r-- 1 root root 500M May 17 18:57 /file
Du kan se at vi har vår virtuelle filsystem som er opprettet med den størrelse som er angitt. Du kan nå bruke den til å lage sløyfe-enhet eller en virtuell disk eller noe annet.
b. Endre den første 512 byte av en fil med null data
Hvis under operasjonen du angi en eksisterende utgang fil, vil du miste sine data. For noen grunner, kan du trenge å skifte ut en blokk størrelsen på utdatafilen.,
dd if=/dev/zero of=file1 bs=512 count=1 conv=notrunc
notrunc
alternativ refererer til ikke å avkorte filen, bare erstatte den første 512 byte, hvis det finnes. Ellers, du vil få en 512 byte-fil
c. Opprette en sikkerhetskopi iso-bilde av CD-eller DVD –
lurer Du kanskje på hvorfor ikke bare kopiere innholdet på CDEN til en mappe. Hvordan ville du takle boot sektor på en CD? Kan du ikke finne det som en fil på enheten, fordi det er bare den første sektor. Fordi dd kopier sektor etter sektor, på den annen side, det vil kopiere informasjonen som godt.,
# dd if=/dev/cdrom of=/mycd.iso
Du trenger å vite at du har til å bruke -o loop
alternativ, som lar deg montere en fil som en vanlig enhet. Så, for å montere /mycd.iso
på /mnt/cd
– katalogen, gjør du under
# mount -o loop /mycd.iso /mnt/cd
d) Opprette en oppstartbar USB-Stasjon
la oss anta at vi har lastet ned centos iso-bildet her til denne katalogen «~/Downloads/».
om=~/Downloads/CentOS-8-x86_64-1905-dvd1.iso – input filen er på enheten og banen ‘~/Downloads/CentOS-8-x86_64-1905-dvd1.,iso’
av=/dev/sdb – utgang filen er på enheten og banen ‘/dev/sdb’
bs=1 M – Les fra ‘~/Downloads/CentOS-8-x86_64-1905-dvd1.iso’ å skrive ‘/dev/sdb’ 1 Megabyte med data på en gang.
# dd if=~/Downloads/CentOS-8-x86_64-1905-dvd1.iso of=/dev/sdb bs=1M
Sikkerhetskopiere og gjenopprette MBR
GRUB bootloader er vanligvis lagret i MBR av oppstartbar stasjonen. MBR utgjør de første 512 byte av disken, slik at opp til 466 bytes lagringsplass for bootloader. Den ekstra plassen vil bli brukt til å lagre partisjonstabellen for at stasjonen., Hvis MBR blir ødelagt, vil vi ikke være i stand til å starte opp i Linux.
en. Sikkerhetskopiere MBR
Fordi MBR utgjør de første 512 byte av disken, vi trenger bare å kopiere blokk-størrelse
# dd if=/dev/sda of=/tmp/sdambr.img bs=512 count=1
Med count=1
og bs=512
, bare 512 byte vil bli kopiert som tilsvarer størrelsen av våre MBR.,
Du kan vise det lagrede MBR med od-kommandoen som dump filer i oktale og andre formater som under
# od -xa /tmp/sdambr.img0000000 bf52 81f4 8b66 832d 087d 0f00 e284 8000 R ? t soh f vt - etx } bs nul si eot b nul nul0000020 ff7c 7400 6646 1d8b 8b66 044d 3166 b0c0 | del nul t F f vt gs f vt M eot f 1 @ 0
-a
alternativet velger heter tegn og -x
velger heksadesimale 2-byte-enheter
b. Sikkerhetskopiere boot data for MBR unntatt partition table
MBR 512 byte data er plassert på den første sektoren på harddisken. Det består av 446 bytes bootstrap, 64 bytes partisjonstabellen og 2 byte signatur., Det betyr at vi kan utelukke partisjonstabellen og byte signatur mens sikkerhetskopiering MBR med å bevare kun en blokk størrelse lik bootstrap-størrelse.
# dd if=/dev/sda of=/tmp/sdambr2.img bs=446 count=1
c. Gjenopprette MBR fra MBR bilde
Du kan gjenopprette MBR som vist på forrige kommandoer med
# dd if=/tmp/sdambr.img of=/dev/sda
Konvertering av data formater
Hvis en input-filen bruker et tegnsett som ikke er innfødt tegnsett for vertsmaskinen, import brukeren må utføre en konvertering., For eksempel, hvis ASCII er den opprinnelige formatet for strenger (string) på vertsdatamaskinen, men input data fil representerer strenger å bruke EBCDIC, må du konvertere EBCDIC til ASCII og vice versa.
en. Konvertere data formatet til en fil fra EBCDIC til ASCII
Hvis det er en ebcdic-fil med deg, for det meste hentet fra stormaskin systemer, så, du ønsker å konvertere dem til ASCII-for å gjøre endringer ved hjelp av tekst redaktører på UNIX-servere
# dd if=textfile.ebcdic of=textfile.ascii conv=ascii
conv
verdi parameteren nå er ascii-fordi vi konverterer fra EBCDIC til ASCII
b., Konvertere data formatet til en fil fra ASCII til EBCDIC
Etter at du har endret ASCII-versjon, og når dette er gjort, kan du konvertere det tilbake til EBCDIC til å bli brukt av programmet.
# dd if=textfile.ascii of=textfile.ebcdic conv=ebcdic
conv
verdi parameteren nå er ebcdic fordi vi konverterer fra ASCII til EBCDIC. Hvis du bare bytter bestemt antall byte med et tilsvarende antall byte som har forskjellige tegn, konvertering ville være glatt og program for å lese filen bør ikke ha noen problemer.,
Konvertering tilfelle av en fil
DD-kommandoen kan også brukes for en fantastisk ting. Det kan konvertere alle tekst (bokstaver) i en fil til store eller små bokstaver, og vice versa. For eksempel nedenfor, og vi vil finne en fil for tester.
# cat file10test dd convert
en. Konvertere en fil til store bokstaver
Fordi vår tekst fil eksempel er på små, vi vil gjøre det om til store bokstaver
# dd if=~/file10 of=~/file20 conv=ucase
– kommandoen vil opprette den nye filen er angitt. Ser at nå conv
alternativet tar ucase verdi., La oss sjekke resultatet
# cat file20 TEST DD CONVERT
b. Konvertere en fil til små bokstaver
Nå vil vi gjøre det motsatte, noe som vil konvertere til små bokstaver
# dd if=~/file20 of=~/file30 conv=lcase
Se at vi bruker lcase av conv
muligheten til å konvertere fra store bokstaver til små bokstaver.
# cat file30 test dd convert
dd-kommandoen ikke konvertere filen navn, bare dens innhold.
Konklusjon
dd kommando, selv om det ikke er teknisk sett en arkivering kommando, ligner på noen måter, fordi det kan kopiere en hel partisjon eller disk i en fil, og vice versa.