Vad är en dd-diskavbildning. Skapa ett startbart USB-minne för att installera Windows med hjälp av programmet Rufus. Migrera systemet till en annan hårddisk

Så anta att du har laddat ner en ISO-fil med en distributionsbild och förberett en flashenhet.

Terminalkommandot för att skriva iso-bilden för distributionen är som följer:

sudo dd if=sökväg till .iso of=/dev/sdb

Var istället väg till .iso du måste ange sökvägen till iso-filen från din mapp Nedladdningar.
sdb i slutet av kommandot är detta flashenheten som bilden kommer att skrivas på. För att identifiera din flashenhet, kör i en terminal:



Och om din flash-enhet är definierad annorlunda, ändra den i kommandot.

För att ange sökvägen till filen korrekt i kommandot, öppna mappen med filen, öppna den närliggande terminalen och dra filen till den:


Terminalen visar sökvägen till filen och själva .iso-filen. Kopiera det utan citattecken och klistra in det i kommandot och tryck på kortkommandot i terminalen ctrl+c för att återställa och visa ny linje inbjudningar.

Det enklaste sättet att skapa ett kommando är i en textredigerare.
Jag fick följande kommando:


Sätt nu in USB-minnet i porten på datorn, kopiera det mottagna kommandot från textredigerare, skriv in terminalen och kör (tryck på Enter):


Terminalmarkören kommer att blinka och det verkar som att ingenting händer, men det finns faktiskt en inspelning. Vänta tills bildinspelningen är klar och i slutet bör du se något i stil med följande i terminalen:


Det är allt. Din flashenhet har blivit startbar och du kan nu installera distributionen på vilken dator som helst.

Var försiktig, för om du gör ett misstag i namnet på flashenheten i kommandot dd kan du skada värdens hårddisk.

Låt oss visa beteckningen på sektioner av alla enheter

och hitta bland dem en flash-enhet:

sudo fdisk -u -l /dev/sd?

För att definiera partitioner på alla enheter kan du också använda kommandot:

sudo cat /proc/partitioner

dd kommandosyntax

dd if=/AAAA of=/BBBB bs=CCCC count=DDDD conv=noerror
  • om: (indatafil) pekar på källan, dvs. varifrån vi kopierar. Anger en fil, som antingen kan vara en vanlig fil eller en enhetsfil.
  • av: (utdatafil) pekar på målfilen. Detsamma kan vi skriva som i vanlig fil, eller direkt till enheten.
  • bs: antal byte som ska skrivas åt gången. Det vill säga storleken på en bit data som kommer att läsas och skrivas åt gången. det rekommenderas att ställa in bs= till storleken på hårddiskens cache, dvs. 8M 16M 32M
  • räkna: hur många bitar bs kommer att kopieras.
  • konv: låter dig ansluta filter som är tillämpliga på dataströmmen. Filtrera "inget fel" inaktiverar bara att stoppa programmet när det stöter på ett läsfel.

Exempel

Full diskradering

Så att ingenting kan återställas på media - du kan fylla det med nollor, det här kommandot kommer alltid att sluta med felet "media fick slut på utrymme"

Dd om=/dev/noll av=/dev/sdX

Skapa en diskavbildning

dd if=/dev/cdrom of=image.iso conv=noerror

det är också möjligt i systemet

Montera -o loop /PathToImageFile/image.iso /mnt/FolderMount

Om något inte fungerar är processen uppdelad i två nivåer:

Losetup -e /dev/loop0 /PathToImageFile/image.iso mount /dev/loop0 /mnt/FolderMount

Operationer med MBR

MBR finns i de första 512 byten hårddisk, och består av en partitionstabell, bootloader och ett par tillägg. byte. Ibland måste den säkerhetskopieras, återställas osv. Säkerhetskopiering görs så här:

Dd if=/dev/sda of=mbr.img bs=512 count=1

Det är lättare att återställa:

Dd if=mbr.img of=/dev/sda

Kopiering med arkivering

(med gzip) data från en flashenhet till en hårddisk.

Dd if=/dev/sdX conv=sync,noerror bs=8M | gzip -c >/PathToSave/sdX.img.gz

och tillbaka

Gunzip -c /PathToFile/sdX.img.gz | dd of=/dev/sdX conv=sync,noerror bs=8M

Kopiering över nätverket

dd if=/dev/sdX conv=sync,noerror bs=8M | ssh -c blåsfisk [e-postskyddad]"dd of=sdX.img.gz bs=8M"

och tillbaka

Dd om=sdX.img.gz | ssh -c blåsfisk [e-postskyddad]"dd av=/dev/sdX bs=8M"

Ganska ofta måste systemadministratörer kopiera olika binära data. Till exempel, ibland kanske du vill säkerhetskopiera din hårddisk, skapa en tom fil fylld med nollor för att organisera swap-utrymme eller något annat virtuellt filsystem.

För att lösa alla dessa uppgifter används linux dd-verktyget, som helt enkelt kopierar data från en plats till en annan på binär nivå. Den kan kopiera en CD/DVD-skiva, en del av en skiva eller till och med en hel HDD. I den här artikeln kommer vi att titta på vad kommandot dd linux är, dess huvudalternativ och parametrar, och hur man använder det.

Först måste du förstå hur dd-kommandot fungerar och vad det gör. I själva verket är detta en analog av verktyget endast för blockdata. Verktyget överför helt enkelt ett datablock av den angivna storleken från en plats till en annan. Eftersom Linux behandlar allt, inklusive enheter, som filer kan du flytta enheter till filer och vice versa.

Med hjälp av olika verktygsalternativ kan du påverka blockstorleken, och detta påverkar i sin tur redan programmets hastighet. Därefter kommer vi att överväga de viktigaste alternativen för verktyget och dess kapacitet.

dd kommando

Syntaxen för verktyget är ganska ovanlig, men samtidigt väldigt enkel, när du kommer ihåg det och vänjer dig vid det:

$ dd om= copy_source av= destination alternativ

Med if-parametern måste du ange källan från vilken blocken ska kopieras, det kan vara en enhet, till exempel / dev / sda eller en fil - disk.img. Därefter, med hjälp av parametern of, måste du ange destinationsenheten eller filen. Andra parametrar har samma syntax som om och om.

Låt oss nu titta på de ytterligare alternativen:

  • bs- indikerar hur många byte som ska läsas och skrivas åt gången;
  • cbs- hur många byte ska skrivas åt gången;
  • räkna- kopiera det angivna antalet block, storleken på ett block anges i parametern bs;
  • konv- tillämpa filter på dataströmmen;
  • ibs- läs det angivna antalet byte åt gången;
  • obs- skriv det angivna antalet byte åt gången;
  • söka- hoppa över det angivna antalet byte i början av enheten för läsning;
  • hoppa- hoppa över det angivna antalet byte i början av utgångsenheten;
  • status- anger hur detaljerat du behöver för att dra en slutsats;
  • iflag, oflag- låter dig ställa in ytterligare operationsflaggor för in- och utgångsenheten, de viktigaste är: nocache, nofollow.

Dessa var alla de grundläggande alternativen du kan behöva. Låt oss nu gå närmare övningen och titta på några exempel på hur man använder dd linux-verktyget.

Hur man använder dd

Vanliga användare använder oftast kommandot dd för att skapa bilder DVD-skivor eller CD. Till exempel, för att spara en diskavbildning till en fil, kan du använda följande kommando:

sudo dd if=/dev/sr0 of=~/CD.iso bs=2048 conv=noerror

Noerror-filtret låter dig inaktivera felsvar. Därefter kan du skapa en bild av en hårddisk eller en partition på den och spara den här bilden på disken. Var bara försiktig så att du inte sparar på samma hårddisk eller partition för att inte orsaka rekursioner:

dd if=/dev/sda av=~/disk.img

I din hemmapp en fil som heter disk1.img kommer att skapas, som i framtiden kan distribueras och återställas till ett skadat system. För att skriva en bild till en hårddisk eller partition byter du bara enhetsadresserna:

dd if=~/disk.img av=/dev/sda

mycket viktigt och användbart alternativär bs. Det låter dig påverka hastigheten på verktyget i hög grad. Detta alternativ låter dig ställa in storleken på ett block när du överför data. Här måste du ange ett numeriskt värde med en av dessa formatmodifierare:

  • Med- ett tecken;
  • b- 512 byte;
  • kB- 1000 byte;
  • K- 1024 byte;
  • MB- 1000 kilobyte;
  • M- 1024 kilobyte;
  • GB- 1000 megabyte;
  • G- 1024 megabyte.

Kommandot dd linux använder just ett sådant system, det är komplext, men det finns ingen flykt från det. Det måste förstås och kommas ihåg. Till exempel är 2b 1 kilobyte, och 1k är också 1 kilobyte, 1M är 1 megabyte. Som standard använder verktyget en blockstorlek på 512 byte. Till exempel, för att påskynda kopiering av skivor, kan du ta block på 5 megabyte stora. För detta används följande kommando:

dd if=/dev/sda of=~/disk.img bs=5M

Nästa parameter är räkning. Med den kan du ange hur många block som ska kopieras. Till exempel kan vi skapa en 512 megabyte fil genom att fylla den med nollor från /dev/noll eller slumpmässiga nummer från /dev/random:

sudo dd if=/dev/zero of=file.img bs=1M count=512

Observera att denna parameter inte anger storleken i megabyte, utan endast antalet block. Därför, om du anger en blockstorlek på 1b, behöver bara två block tas för att skapa en 1Kb-fil. Du kan också använda det här alternativet för att säkerhetskopiera MBR-partitionstabellen. För att göra detta, kopiera de första 512 byten på hårddisken till filen:

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

För att återställa, använd normalkommandot för att distribuera avbildningen till disk.

Om diskavbildningen är för stor kan du omdirigera all utdata till gzips icke-stdout-utdata:

dd if=/dev/sda2 | bzip2 disk.img.bz2

Du kan också använda linux dd-verktyget för att kopiera filer, även om detta inte är avsett syfte:

dd if=/home/sergiy/test.txt of=/home/sergiy/test1.txt

Som du vet skriver linux dd-kommandot data direkt till disken binär form, vilket betyder att nollor och ettor skrivs. De åsidosätter det som tidigare placerats på inspelningsenheten. Därför, för att radera en disk, kan du helt enkelt fylla den med nollor från /dev/zero.

sudo dd om=/dev/noll av=/dev/sdb

Denna användning av dd gör att hela disken raderas helt.

Slutsatser

I den här artikeln tittade vi på hur man använder dd linux, vad det här verktyget kan användas till och hur användbart det kan vara. Det är nästan ett oumbärligt verktyg systemadministratör, eftersom den kan användas för att säkerhetskopiera hela systemet. Och nu vet du hur. Om du har några frågor, fråga i kommentarerna!

    Rufus- fri programvaraöppen källkodsverktyg för att formatera flyttbara USB-lagringsmedia och skapa startbara diskar med olika operativsystem. Programmet är lätt att använda, hög hastighet fungerar och stöder flerspråkigt gränssnitt.

Du kan ladda ner programmet på utvecklarens webbplats. Sidan innehåller länkar för att ladda ner standardversionen Rufus, och bärbar Rufus bärbar, som inte skiljer sig åt i någonting, förutom namnet på den körbara filen och platsen där inställningarna är lagrade. Programinställningarna inkluderar vilket språk som används och inställningarna för att söka efter uppdateringar. Standardversionen lagrar dessa inställningar i registret, medan den bärbara versionen lagrar dem i en fil rufus.ini programkatalog. Rufus kräver ingen installation på systemet - ladda bara ner den körbara filen och kör den. Programgränssnittet är mycket enkelt:

I allmänhet programmet Rufusär inget unikt inom området verktyg för att skapa startbara media och dess främsta fördel är användarvänligheten. För att skapa en startbar flashenhet med dess hjälp räcker det att ha den initiala bilden av det startbara systemet och kunna klicka på "Start" -knappen. Alla valbara parametrar och inställningar är som standard redan utformade för att använda programmet för att fungera på en dator med standardkonfiguration.

Den mest enkla och bekväma att använda Rufus för att skapa en startbar USB-flashenhet (startbar USB-disk) från ISO-avbildningar av installationen Windows-enheter eller Linux, såväl som nödsystemåterställningsdiskar och diagnostiska verktyg.

När du skapar en startbar Windows-flashenhet räcker det att välja enheten på vilken inspelningen ska utföras och den startbara iso-bildfilen. Programmet kommer att ersätta andra parametrar själv.

Om det inte finns någon ISO-avbildsfil tillgänglig kan den skapas från en fysisk CD (eller från en uppsättning distributionsfiler) med hjälp av CD/DVD-bränningsprogram som det välkända Nero, Alcohol eller fritt distribuerade CDBurnerXP eller ImgBurn.

Proceduren för att skapa en startbar Windows-flashenhet är som följer:

  • välj den flashenhet som bilden ska skrivas till. Till skillnad från många liknande program visar Rufus volymetikett, enhetsbeteckning och storlek, så om det finns flera flyttbara enheter i systemet är det enkelt att välja den att skriva till.

  • välj partitionsschema och systemgränssnittstyp. Rufus låter dig skapa flashenheter för uppstart i ett vanligt BIOS-gränssnitt och för uppstart i en UEFI-miljö, skapa startposter för MBR-volymer och GPT-volymer. Standardläget är "MBR för datorer med BIOS eller UEFI" - det vanligaste läget för startbara flashenheter idag.

  • välj det filsystem som ska användas på den skapade startbara flashenheten. Som standard använder startbara Windows-flashenheter filsystemet FAT32, men om det behövs kan du välja NTFS om du vill använda filer som är större än 4 GB.

  • ställ in klusterstorleken. Klusterstorleken väljs av programmet baserat på bilddata och filsystemstyp, men vid behov kan den ändras.

  • ange volymetiketten som kommer att ställas in för den skapade flashenheten.

  • ställ in formateringsalternativ. Dessa alternativ är bäst att lämna som standard och välj bara filen ISO-bild. För bilder skapade av programmet dd på Linux måste du välja alternativet DD-bild.

    Efter att ha tryckt på knappen Start programmet kommer att formatera flash-enheten, ställ in tecknet aktiv partition, kommer att spela in huvudet startrekord och partitionsstartposten, samt startbara mediadata från ISO-avbildningen. Efter avslutat arbete Rufus du kan starta med den resulterande startbara flashenheten.

    Använder virtualiseringsteknik för att testa startbara flashenheter. Ladda ner länkar gratis och bekväma program för att förenkla processen att skapa, felsöka och kontrollera det skapade startbara mediet.

    Team ddär utformad för att använda verktyget med samma namn, designat för lågnivåkopiering och datakonvertering. Dess namn står för "data duplicator" eller "data duplicator". Detta verktyg Det används främst för att skriva bilder av installationsskivor av Linux-distributioner till flash-enheter och skapa bilder av optiska media, men dess utbud av funktioner är inte begränsat till de angivna operationerna. Till exempel, dd kan användas för att helt enkelt kopiera filer eller ändra skiftläge för textsträngar. I allmänhet är verktyget i fråga något unikt, eftersom det innebär att man använder sitt eget format för att skicka parametrar.

    Standardkommandosyntaxen är som följer:

    $ dd om=<имя исходного файла>av=<имя целевого файла>[alternativ]

    Det är lätt att se att för att skicka parametrar till verktyget används inspelningsformatet <имя параметра>=<значение параметра> . Verktyget kan läsa källdata från standardinmatningsströmmen och mata ut den resulterande data med standardutgångsströmmen i händelse av att man vägrar att använda parametrar om och av, men i de allra flesta fall är dessa parametrar nödvändiga för att ange filnamn med motsvarande data. Verktyget läser och skriver data i block, och blockstorleken kan ändras med parametern bs(som standard används block på 512 KB). Det finns separata parametrar för att ställa in storleken på läsbara och skrivbara block, nämligen ibs och obs. Antalet läsbara block kan begränsas med parametern räkna. Parametern kan användas för att hoppa över ett givet antal block i källfilen. hoppa, målfil - parameter söka. Parametern kan användas för att specificera läs- och skrivflaggor separerade med kommatecken. iflag

    • bifoga- aktivering av läget för att lägga till data till målfilen.
    • direkt- databehandlingsläge som kringgår cachen filsystem(ökar hastigheten).
    • dsync- datainspelningsläge med synkronisering (ökar tillförlitligheten).
    • synkronisera- läge för att registrera data och metadata med synkronisering (ökar tillförlitligheten).
    • fullt block- läser endast hela block.
    • icke-blockerad- aktivering av det icke-blockerande I/O-läget (ökar hastigheten).
    • ingen tid- inaktivera mekanismen för uppdatering av tidsstämplar för filsystemelement (ökar hastigheten).
    • nofollow- Vägran att följa symboliska länkar.

    Slutligen kan parametern användas för att specificera kommaseparerade konverteringsflaggor konv. De vanligaste flaggorna är:

    • fall- konvertera ASCII-strängtecken till gemener.
    • fall- konvertera ASCII-strängtecken till versaler.
    • nocreat- skicka ett felmeddelande om målfilen saknas.
    • exkl- skicka ett felmeddelande om målfilen finns.
    • notrunc- vägran att trunkera målfilen.
    • svabb- Byt plats för varannan byte från källfilen.
    • inget fel- fortsatt arbete även vid fel.
    • fdatasync- aktivering av läget för att skriva data till målfilen innan verktyget avslutas.
    • fsync- aktivering av läget för att skriva data och metadata till målfilen innan verktyget avslutas.

    Exempel på användning

    Säkerhetskopierar diskenhetsdata

    Anta att vi använder en hårddisk representerad av en enhetsfil /dev/sda, och vi måste skapa en sektor-för-sektor säkerhetskopia av all data som placerats på den, spara den i en fil i partitionen på en flyttbar USB-enhet, representerad av en enhetsfil /dev/sdb1 och monteras till katalogen /mnt/sdb1. Vanligtvis kallas dessa säkerhetskopior för dumpar eller diskavbildningar. Vår diskavbildningsfil kommer att få ett namn backup.img. Detta är kommandot för att skapa det:

    # dd if=/dev/sda of=/mnt/sdb1/backup.img

    I det här kommandot använder du parametern om sökvägen till källfilen anges, och med parametern av- till målet.

    Återställer data från en säkerhetskopia

    För att återställa data från en skapad säkerhetskopia måste du starta upp systemet från installationsskiva distribution och kör det omvända kommandot.

    # dd if=/mnt/sdb1/backup1.img of=/dev/sda

    Varning: när detta kommando körs kommer hela innehållet på den angivna hårddisken att skrivas över, så du bör behandla sådana kommandon med särskild uppmärksamhet.

    Kloning av en hårddisk

    Innan du klona en hårddisk måste du se till att du har en hårddisk av samma storlek som den ursprungliga. Samma operation kan utföras med USB-minnen av samma storlek. Anta att källminnet representeras av enhetsfilen /dev/sdb, och målet är en enhetsfil /dev/sdc. I det här fallet kan du klona den ursprungliga enheten med följande kommando:

    # dd om=/dev/sdb av=/dev/sdc

    Även om målenheten har en större kapacitet har du bara tillgång till mängden källflashenhet som sparats på filsystemnivå.

    Överföra en diskavbildningsfil till en annan dator

    För att överföra en skivavbildsfil över nätverket till en annan dator med namnet mål följande kommando kan användas:

    # dd if=/dev/sdb | ssh [e-postskyddad]"(katt >backup.img)"

    Komprimera en diskavbildningsfil

    Till säkerhetskopia diskpartitionen tog mindre utrymme, du kan komprimera den med en kompressor som bzip2 :

    # dd if=/dev/sdb | bzip2 backup.img.bz2

    Skapa en ISO-optisk skivbild

    Att skapa en bild optisk skiva Det räcker att läsa innehållet på en CD, DVD eller BD block för block och spara detta innehåll i en fil:

    # dd if=/dev/sr0 of=image.iso bs=2048

    Spara en fil från skadad media eller skapa en bild av sådan media

    Om din favoritfilm eller musikspår inte längre är läsbar på grund av mediaskada kan du försöka kopiera den med hjälp av verktyget dd, ignorerar dåliga block:

    # dd if=movie.avi of=/home/alex/movie.avi conv=noerror,sync

    Du kan också skapa en bildfil skadat media och försök extrahera filer från den:

    # dd if=/dev/sdb of=/home/alex/movie.iso bs=2048 conv=noerror,sync

    Bränna installationsdiskavbildningen till ett USB-minne

    För installation Linux distribution från ett USB-minne måste du skriva en installationsdiskavbildning i ISO-format till detta USB-minne. Ett liknande kommando kan användas för detta ändamål:

    # dd if=/home/alex/Fedora-Workstation-Live-x86_64-26_Alpha-1.7.iso of=/dev/sdc

    Det är viktigt att komma ihåg att även om det finns partitioner på flashenheten, bör du inte ange sökvägen till enhetsfilen för en av partitionerna, utan sökvägen till enhetsfilen för själva enheten, i vårt fall är det /dev/sdc.

    Analys av innehållet på hårddisken

    Verktyg ddär ett utmärkt verktyg för att utforska filsystem. För analys innehåll hårt disk med datautmatning från separata block, i vårt fall ett block 1001 på partitionen som representeras av enhetsfilen /dev/sdc1 använd bara följande kommando:

    # dd om=/dev/sdc1 count=1 hoppa över=1000

    För att se de första 40 byten på din hårddisk i hexadecimal notation, använd kommandot:

    # dd om=/dev/sda bs=1 antal=40 | hexdump -C

    I det här fallet använder du parametern bs ställ in diskblockets storlek.

    Drive Performance Testing

    För att testa prestandan hos en hårddisk representerad av till exempel en enhetsfil /dev/sda under förhållanden med läsblock av olika storlekar kan ett liknande kommando användas:


    1000000+0 poster in
    1000000+0 poster ute

    # dd if=/dev/sda of=/dev/null bs=4096 count=1000000
    1000000+0 poster in
    1000000+0 poster ute
    4096000000 byte (4,1 GB) kopierad, 29,8747 s, 137 MB/s

    Tack vare filsystemens cachningsmekanism kan du stöta på en mystisk snabbare läsoperation, vilket inte borde vara förvånande:

    # dd if=/dev/sda of=/dev/null bs=512 count=1000000
    1000000+0 poster in
    1000000+0 poster ute
    512000000 byte (512 MB) kopierad, 4,25186 s, 120 MB/s

    # dd if=/dev/sda of=/dev/null bs=512 count=1000000
    1000000+0 poster in
    1000000+0 poster ute
    512000000 byte (512 MB) kopierad, 0,417317 s, 1,2 GB/s

    För att erhålla korrekta testresultat, rekommenderas det att helt förbigå filsystemets cachningsmekanism genom att använda I/O-läget utan cachning:

    # dd if=/dev/sda of=/dev/null bs=512 count=100000 iflag=direkt
    100 000+0 poster in
    100 000+0 poster ute
    51200000 byte (51 MB) kopierad, 5,01053 s, 10,2 MB/s

    Kopiera filer

    Ja, nytta dd kan även användas för normal filkopiering. Naturligtvis är det för detta ändamål bättre att använda ett verktyg speciellt utformat för detta, nämligen cp. I vilket fall som helst kan du kopiera filen med ett liknande kommando:

    $ dd if=/home/alex/test.txt /home/alex/test_copy.txt