Linu. dd-kommandoen er et af de mest kraftfulde værktøjer, der kan bruges på forskellige måder. Dette værktøj bruges hovedsageligt til kopiering og konvertering af data, og det står derfor for data duplicator. Dette værktøj kan bruges til:
- Sikkerhedskopiering og gendannelse af en hel harddisk eller en partition.oprettelse af virtuelt filsystem og sikkerhedskopieringsbilleder af CD eller dvd ‘ er kaldet ISO-filer
- Kopier regioner af RA. – enhedsfiler som sikkerhedskopiering af MBR (master boot record).konvertering af dataformater som ASCII til EBCDIC.,
- konvertering af små bogstaver til store og vice versa.
kun superbrugeren kan udføre denne kommando. Du bør være meget forsigtig, mens du bruger denne kommando som forkert brug kan forårsage enorme tab af data. Så nogle mennesker betragter dette værktøj som data destroyer.
syntaks for dd-kommando
den grundlæggende brug af DD-kommandoen er temmelig let, fordi det kun kræver to argumenter: if= at specificere inputfilen og af= at specificere outputfilen. Argumenterne til disse muligheder kan enten være filer eller blokere enheder., Jeg vil dog ikke anbefale at bruge dd til at kopiere filer, fordi cp gør det på en meget enklere måde. Du kan dog bruge den til at klone en harddisk. Syntaksen er
dd if=<source file name> of=<target file name>
Vi lærer forskellige muligheder, mens vi gennemgår dd-kommandoeksempler.
Sikkerhedskopiering og gendannelse af en hel disk eller en partition
Det er muligt at gemme alle data fra en hel disk/partition til en anden disk/partition. Ikke en simpel kopi som CP-kommando, men en blokstørrelseskopi.
A., Backup hele disk til disk
Du kan kopiere alle data (hele disken) fra disken /dev/sda
til /dev/sdb
. dd ved ikke noget om filsystemet eller partitionerne; det vil bare kopiere alt fra /dev/sda
til /dev/sdb
. Du skal angive den blokstørrelse, der skal kopieres til tiden med bs
mulighed. Så dette vil klone disken med de samme data på den samme partition.
dette virker kun, hvis den anden enhed er så stor som eller større end den første., Ellers får du afkortet og værdiløse partitioner på den anden. Her, hvis står for input file, står for output file og bs står for blokstørrelsen (antal byte, der skal læses/skrives ad gangen). Sørg for at bruge blokstørrelser i multipla af 1024 bytes, som er lig med 1KB. Hvis du ikke angiver blokstørrelse, bruger dd en standardblokstørrelse på 512 byte. conv
værdiparameter noerror tillader værktøjet at fortsætte med at kopiere dataene, selvom det støder på fejl. Synkroniseringsindstillingen gør det muligt at bruge synkroniseret i/O.
B., Oprettelse af dd disk image (file image)
Du kan oprette et billede af en disk eller et filbillede. Sikkerhedskopiering af en disk til et billede vil være hurtigere end at kopiere de nøjagtige data. Diskbillede gør også restaureringen meget lettere.
# dd if=/dev/sda of=/tmp/sdadisk.img
Du kan gemme outputfilen, hvor du vil, men du skal give et filnavn, der slutter med .img
udvidelse som ovenfor. I stedet for /tmp/sdadisk.img
, kan du gemme det for eksempel på /sdadisk.img
hvis du vil.
c., Oprettelse af et komprimeret diskbillede
fordi dd opretter det nøjagtige indhold på en hel disk, betyder det, at det tager for meget Størrelse. Du kan beslutte at komprimere diskbilledet med kommandoen nedenfor
# dd if=/dev/vda | gzip -c >/tmp/vdadisk.img.gz
røret / operatøren får output til venstre kommando til at blive input til højre kommando. Indstillingen-c
skriver output på standard output og holder originale filer uændrede.
d. sikkerhedskopier en partition eller klon en partition til en anden
i stedet for en hel disk kan du kun sikkerhedskopiere en simpel partition., Du skal blot angive partitionsnavnet i inputfilen som nedenfor
# dd if=/dev/sda1 of=/dev/sdb1 bs=4096 conv=noerror,sync
Dette vil synkronisere partitionen /dev/sda1
til /dev/sdb1
. Du skal kontrollere, at størrelsen af /dev/sdb1
skal være større end /dev/sda1
. Eller du kan oprette en partition billede som nedenfor
# dd if=/dev/sda1 of=/tmp/sda1.img
e. At genoprette en disk eller en partition image
Gem en disk eller en partition, der hjælper med at gendanne alle data, hvis der er noget problem med vores originale drev., For at gendanne skal du vende inputfilen med outputfilen angivet under backup-drift som nedenfor.
# dd if=/tmp/sdadisk.img of=/dev/sda
vil Du hente data, der var til stede før backup drift og ikke efter operationen
e. Genskaber komprimerede billede
Du er nødt til først at angive den komprimerede fil og output-fil, som er den disk komprimeret før.
# gzip -dc /tmp/vdadisk.img.gz | dd of=/dev/vda
– d-indstillingen her er at komprimere. Bemærk uddatafilen. Du kan montere den gendannede disk for at se indholdet., Bemærk, at du vil data tilføjet efter den sidste komprimering backup operation.
Oprettelse af virtuelle filsystem/Backup af billeder på CD eller Dvd som iso-filer
Du kan bruge til at skabe et virtuelt filsystem på Linux for nogle grunde skabe en virtuel maskine på din Linux-vært. Du kan også få brug for at oprette et backup iso-billede af en CD eller DVD
A. oprettelse af et virtuelt filsystem
et virtuelt filsystem er et filsystem, der findes i en fil, som igen findes på en fysisk disk. Du kan bruge det til at oprette for eksempel en ekstra s .ap-eller loop-enhed eller en virtuel maskine., Vi har brug for /dev/zero
, som er en fil, der bruges til at oprette en fil uden data, men med den krævede størrelse (en fil med alle nul). Med andre ord vil dette oprette en datafil med alle nuller i filen, som vil give størrelsen til 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
indstillingen count
henviser til antallet af inputblokke, der skal kopieres. Kombineret med blokstørrelsesværdi angiver den samlede størrelse, der skal kopieres., For eksempel bs=1024k
og count=500
give en størrelse=1024K*500 =524288000 bytes =524MB
lad os Nu se størrelsen af vores fil
# ls -lh /file-rw-r--r-- 1 root root 500M May 17 18:57 /file
Du kan se, at vi har vores virtuelle filsystem, der er oprettet med den angivne størrelse. Du kan nu bruge den til at oprette loop enhed eller en virtuel disk eller noget andet.
b. Rediger de første 512 byte af en fil med null-data
Hvis du under operationen angiver en eksisterende outputfil, mister du dens data. Af nogle grunde, kan du nødt til at erstatte en blok størrelse af outputfilen.,
dd if=/dev/zero of=file1 bs=512 count=1 conv=notrunc
notrunc
valgmulighed refererer til Afkort ikke filen, Udskift kun de første 512 bytes, hvis den findes. Ellers får du en 512 byte fil
c. oprettelse af et backup iso-billede af CD eller DVD
Du kan undre dig over, hvorfor ikke bare kopiere indholdet af din CD til en mappe. Hvordan ville du håndtere boot sektor af en CD? Du kan ikke finde det som en fil på enheden, fordi det bare er den første sektor. Fordi dd kopierer sektor for sektor, vil den på den anden side også kopiere disse oplysninger.,
# dd if=/dev/cdrom of=/mycd.iso
Du skal vide, at du skal bruge -o loop
, som giver dig mulighed for at montere en fil som enhver normal enhed. Så, for at montere /mycd.iso
om /mnt/cd
mappe, skal du gøre som nedenfor
# mount -o loop /mycd.iso /mnt/cd
d) Oprette en bootbar USB-Drev
lad os antage, at vi har hentet centos iso-billedet her til mappen “~/Downloads/”.
if=~/do .nloads / CentOS-8-886_64-1905-dvd1.iso-input-filen er i stien ‘ ~/do .nloads/CentOS-8-~86_64-1905-dvd1.,iso’
af=/dev/sdb – output filen er på vej “/dev/sdb ”
bs=1M – Læs fra ‘~/Downloads/CentOS-8-x86_64-1905-dvd1.iso ‘og skriv til’/dev / sdb ‘ 1 megabyte data ad gangen.
# dd if=~/do .nloads / CentOS-8-886_64-1905-dvd1.iso of=/dev/sdb BS=1M
Sikkerhedskopiering og gendannelse af MBR
GRUB bootloader gemmes oftest i MBR på det bootbare drev. MBR udgør de første 512 byte på disken, hvilket giver mulighed for op til 466 byte lagerplads til bootloaderen. Den ekstra plads vil blive brugt til at gemme partitionstabellen for det pågældende drev., Hvis MBR bliver ødelagt, vil vi ikke kunne starte op i Linu..
et. Sikkerhedskopiering af MBR
på Grund af MBR gør op den første 512 bytes af disken, er vi bare nødt til at kopiere, at blok størrelse
# dd if=/dev/sda of=/tmp/sdambr.img bs=512 count=1
Med count=1
og bs=512
, kun 512 bytes vil blive kopieret, der svarer til størrelsen af vores MBR.,
Du kan få vist de gemte MBR med od-kommando, som dump-filer i oktal 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
indstilling vælger navngivne tegn og -x
vælger hexadecimal 2-byte-enheder
b. Sikkerhedskopiering af boot data af MBR-bortset fra partitionstabellen
MBR 512 bytes af data er placeret på den første sektor på harddisken. Den består af 446 bytes bootstrap, 64 bytes partitionstabel og 2 bytes signatur., Det betyder, at vi kan ekskludere partitionstabellen og bytes-signaturen, mens vi sikkerhedskopierer MBR med kun at bevare en blokstørrelse svarende til bootstrap-størrelsen.
# dd if=/dev/sda of=/tmp/sdambr2.img bs=446 count=1
c. Gendannelse af MBR fra MBR billede
Du kan gendanne din MBR, som vist på de forrige kommandoer med
# dd if=/tmp/sdambr.img of=/dev/sda
Konvertering af dataformater
Hvis en input-fil bruger et tegnsæt, der er ikke de indfødte tegnsæt af værtscomputeren, import operatøren skal udføre en konvertering., For eksempel, hvis ASCII er det oprindelige format for strenge på din værtscomputer, men inputdatafilen repræsenterer strenge ved hjælp af EBCDIC, skal du konvertere EBCDIC til ASCII og vice versa.
et. Konvertere dataformatet af en fil fra EBCDIC til ASCII
Hvis der er en ebcdic-fil med dig, for det meste hentet fra mainframe-systemer, så, du vil gerne konvertere dem til ASCII-for at foretage ændringer ved hjælp af tekst-editorer på UNIX-servere
# dd if=textfile.ebcdic of=textfile.ascii conv=ascii
conv
værdi parameter nu er ascii-fordi vi konvertere fra EBCDIC til ASCII
b., Konverter dataformatet for en fil fra ASCII til EBCDIC
efter ændring af ASCII-versionen og når det er gjort, kan du konvertere det tilbage til EBCDIC, der skal bruges af din ansøgning.
# dd if=textfile.ascii of=textfile.ebcdic conv=ebcdic
conv
værdiparameter er nu ebcdic, fordi vi konverterer fra ASCII til EBCDIC. Hvis du bare erstatter bestemt antal bytes med et tilsvarende antal bytes med forskellige tegn, ville konverteringen være glat, og applikationslæsning af filen skulle ikke have nogen problemer.,
konvertering tilfælde af en fil
DD kommando kan også bruges til en fantastisk ting. Det kan konvertere al tekst (alfabeter) i en fil til store eller små bogstaver og omvendt. For eksemplet nedenfor har vi en fil til testene.
# cat file10test dd convert
a. konvertering af en fil til store bogstaver
da vores tekstfileksempel er på små bogstaver, konverterer vi den til store bogstaver
# dd if=~/file10 of=~/file20 conv=ucase
kommandoen opretter den nye angivne fil. Se, at nu conv
mulighed tager ucase værdi., Lad os se resultatet
# cat file20 TEST DD CONVERT
b. Konvertere en fil til små bogstaver
Nu vil vi gøre det omvendte operation, som vil konvertere til små bogstaver
# dd if=~/file20 of=~/file30 conv=lcase
Se, at vi bruger lcase af conv
mulighed for at konvertere fra store bogstaver til små bogstaver.
# cat file30 test dd convert
dd-kommandoen konverterer ikke filnavne, kun dens indhold.
konklusion
dd-kommandoen, selvom den ikke teknisk set er en arkiveringskommando, ligner på nogle måder, fordi den kan kopiere en hel partition eller disk til en fil og vice versa.