Utilizzando il comando dd

Il comando dd (Dataset Definition) è uno strumento semplice, utile e sorprendentemente facile da usare; Con questo strumento puoi fare lo stesso, sui dispositivi: dischi e partizioni, come con programmi commerciali come Norton Ghost, su Windows o programmi gratuiti come CloneZilla, su Linux, con solo una breve riga di comando.

Sintassi di base:

La sintassi più semplice per l'utilizzo del comando dd sarebbe questa:

sudo dd if=origen of=destino

dove se significa "file di input = file di input", Cioè, quello che vuoi copiare e di mezzi "file di output = file di output“, Ovvero il file di destinazione (dove verranno copiati i dati);origine e La destinazione può essere dispositivi (lettore CD o DVD, hard disk, floppy disk, pendrive, partizione, ecc.), File di backup o immagine disco, ecc., Ma non cartelle o sottocartelle.

Per un uso agevole di questo comando, la prima cosa è sempre essere chiari in quanto le partizioni / dischi rigidi vengono chiamati in Linux (/ dev / sda1 ad esempio; / dev deriva da device = device, in inglese). conoscere il disco / partizione di origine e di destinazione, cosa che possiamo facilmente scoprire con il comando sudo fdisk -lo con un programma di partizione grafico come gparted. Tutte le informazioni sul comando dd possono essere consultate con il comando man dd e info dd,

Questo comando dovrebbe essere usato con cautela e controllando sempre l'ordine e il nome dei dischi / partizioni, perché proprio come un disco viene clonato, lo cancella in un batter d'occhio.

Sintassi con il comando pv: L'utilizzo del comando dd con la sintassi precedente ha un piccolo inconveniente, poiché è un comando molto riservato - non fornisce informazioni - perché quando viene eseguito, il prompt del terminale rimane immobile, quindi non sappiamo cosa è ciò che sta accadendo e quanto tempo rimane per terminare l'esecuzione. Questo piccolo inconveniente può essere risolto aggiungendo il comando pv, (*) - che funge da tubo terminale che misura i dati che lo attraversano - alla sintassi del comando dd, in modo che ora la sintassi sia:

dd if=origen |pv|dd of=destino

Di conseguenza, avremmo ottenuto una sorta di barra di avanzamento nel terminale, le informazioni sui byte trasferiti, il tempo di esecuzione e la velocità di trasferimento, il tutto in tempo reale.

(alf) - (~) └──┤ dd if = / devmmcblk0p1 | pv | dd of = / dev / mmcblk0p2 1,630 GB 0:21:30 [1,12 MB / s] [

Inoltre, una volta terminato, ci mostra le statistiche della velocità di trasferimento, i byte totali trasferiti e il tempo totale impiegato per trasferire tutti i dati.

(alf) - (~) └──┤ dd if = / devmmcblk0p1 | pv | dd of = / dev / mmcblk0p2 10530816 + 0 record letti <=> 10530816 + 0 record scritti 5391777792 byte (5.4 GB) copiati, 3873,48 s, 1,4 MB / s 5,02 GB 1:04:33 [1,33 MB / s] [<=> 10530816 + 0 record letti <=> 10530816 + 0 record scritti 5391777792 byte (5.4 GB) copiati, 3873,48, 1,4 s, XNUMX MB / s (alf) - (~) └──┤

(*) Verificare prima di eseguire qualsiasi riga di comando con questa seconda sintassi, che abbiamo il pacchetto pv installato sul sistema, o installarlo se non lo abbiamo: entrambi con Synaptic.

Vediamo alcuni esempi pratici e opzioni di questo comando (nella sua versione con il trucco spiegato in precedenza con il comando pv):

A) Informazioni su dischi rigidi e partizioni:

= Clona un disco rigido:

Con questo cloneremmo il disco hda in hdb. (Dischi IDE):

sudo dd if=/dev/hda |pv|dd of=/dev/hdb bs=1M

Con questo cloneremmo il disco sda in sdb. (Dischi SATA):

sudo dd if=/dev/sda |pv|dd of=/dev/sdb bs=1M

Con l'opzione bs = 1M, si ottiene che sia la lettura che la scrittura vengono eseguite in blocchi da 1 megabyte, (meno, sarebbe più lento ma più sicuro, e con più rischiamo di perdere dati lungo il percorso).

Tieni presente che in questo modo il disco viene registrato "così com'è", MBR, tabella delle partizioni, spazio vuoto, ecc ..., quindi puoi registrare solo su un disco della stessa dimensione o di dimensioni maggiori.

= Scrivi solo la prima partizione (hda1) del disco di origine sul disco di destinazione (hdb):

sudo dd if=/dev/hda1 |pv|dd of=/dev/hdb bs=1M

= Masterizza l'intero disco (hda) sulla prima partizione (hdb1) del disco di destinazione:

sudo dd if=/dev/hda |pv|dd of=/dev/hdb1 bs=1M

= Crea un'immagine - può essere bin o iso - dal disco rigido (hda), nella directory / home:

sudo dd if=/dev/hda |pv|dd of=/home/hda.bin

= Cancella completamente le informazioni su un disco: per fare ciò, riempire il disco con caratteri casuali, cinque volte. Non ci sarà traccia di informazioni sul disco:

for n in {1..5}; do dd if=/dev/urandom |pv|dd of=/dev/hda bs=8b conv=notrunc;

= Cancella qualsiasi partizione e l'intero disco da qualsiasi dispositivo:

sudo dd if=/dev/zero |pv|dd of=/dev/sdx (Cancellazione completa del disco)

sudo dd if=/dev/zero |pv|dd of=/dev/sdxa (Cancellazione della partizione del disco)

dove: x è il disco da cancellare, a è la partizione da cancellare

Questa operazione è molto utile per cancellare completamente qualsiasi partizione, inoltre i dati che verranno cancellati non possono essere recuperati, quindi è una cancellazione di basso livello e molto sicura, molto utile ad esempio quando le pendrive vengono infettate da virus con il nostro care finestre.

B) Su un CD / DVD

= Crea / monta un'immagine .iso da un CD (o DVD)

Per creare l'immagine .iso di un CD nella directory / home:

sudo dd if=/dev/cdrom |pv|dd of=/home/imagendeCD.iso

Per montare l'immagine .iso dal CD:

sudo mount -o loop imagedeCD.iso /mnt/home

= Recupera un DVD graffiato (questo non ripristina l'intero DVD, in questo caso solo i settori leggibili). È adatto anche per dischi rigidi difettosi:

sudo dd if=/dev/cdrom |pv|dd of=/home/dvd_recuperado.iso conv=noerror,sync

L'opzione noerror viene utilizzata per evitare errori di lettura in qualsiasi situazione.

C) Informazioni su MBR e VBS:

= Copia / Ripristina record di avvio principale (MBR):

Per copiare l'MBR:

sudo dd if=/dev/hda |pv|dd of=mbr count=1 bs=512

Per ripristinare l'MBR:

sudo dd if=mbr |pv|dd of=/dev/hda

= Pulisci il nostro MBR e la tabella delle partizioni:

sudo dd if=/dev/zero |pv|dd of=/dev/hda bs=512 count=1

= Pulisci l'MBR ma non toccare la tabella delle partizioni, (molto utile per cancellare GRUB senza perdere i dati nelle partizioni):

sudo dd if=/dev/zero |pv|dd of=/dev/hda bs=446 count=1

= Copia / Ripristina Volume Boot Sector (VBS):

Per copiare il VBS:

sudo dd if=/dev/hda |pv|dd of=/home/sector_arranque_hda count=1 bs=512

Per ripristinare il VBS:

sudo dd if=/home/sector_arranque_hda |pv|dd of=/dev/hda

D) Altri:

= Masterizza un'immagine disco nella nostra directory / home, saltando gli errori del disco (molto utile per i dischi che stanno morendo):

sudo dd conv=noerror if=/dev/hda |pv|dd of=~/home/imagen_disco_con_errores.iso

= Crea un file vuoto da 1 Mb:

sudo dd if=/dev/zero |pv|dd of=archivo_nuevo_vacio bs=1024 count=1024

= Crea un file di scambio da 2 GB:

sudo dd if=/dev/zero |pv|dd of=/swapspace bs=4k count=2048M
mkswap /swapspace
swapon /swapspace

= Converti tutte le lettere in maiuscolo:

sudo dd if=miarchivo |pv|dd of=miarchivo conv=ucase

Utilizzare il comando dd con un programma di ambiente grafico: Gdiskdump, è un ambiente grafico per questo comando dd che facilita il compito di clonare partizioni o dischi, rapidamente e facilmente. Può essere scaricato dalla pagina https://launchpad.net/gdiskdump/ Una volta aperto, con i permessi di root - sudo gdiskdump -, vediamo che il programma è molto facile da usare, dal momento che dobbiamo solo dirgli la partizione o il disco da clonare (Input Format) e la sua destinazione (Output Format).


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile dei dati: Miguel Ángel Gatón
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.

  1.   sig84 suddetto

    Sono quasi diventato diabetico con l'uso improprio del comando dd.
    a proposito, quale sarebbe la differenza con dd_rescue?

    1.    mai suddetto

      ddrescue per impostazione predefinita non si ferma in caso di errori di lettura e tenta con vari mezzi di recuperare informazioni illeggibili.

    2.    sheko suddetto

      hahahha ho anche usato molto male il comando dd, è molto più potente di quanto pensassi.

  2.   marcisce87 suddetto

    Commento che credo che ogni utente dell'arco ad un certo punto abbia usato

  3.   Alf suddetto

    @ sieg84, la differenza è che il dd è stato interrotto con qualche errore di lettura o dispositivo, in questo caso ciò non accadrà poiché il blocco danneggiato lo leggerà un certo numero di volte e continuerà con quello successivo, offre anche il vantaggio che Possiamo eseguirlo più volte sulla stessa immagine e non partirà da zero ma proverà a completarlo.

    Vale la pena ricordare che dd_rescue non l'ho mai usato.

    1.    merlino la debianite suddetto

      Se c'è qualche GUI creata in qt per KDE che usa questo comando? o devo dimettermi.?

      1.    luglio suddetto

        Gdiskdump è più di una GUI per questo comando (è basato su di esso) e anche se non so se lo hanno fatto in qt (penso di no) quasi sicuramente funziona per te in KDE

    2.    sig84 suddetto

      grazie per il chiarimento.
      Ho usato solo dd_rescue per copiare ISO su USB (principalmente perché nel wiki di openSUSE ce l'avevano).
      dd_rescue tu.iso / dev / sdX
      quello che mi piace è che mostra una barra di avanzamento:
      http://box.jisko.net/i/110db781.png

  4.   krel suddetto

    Alfi:
    Recentemente ho visto questo stesso post pubblicato sul blog Hatteras. È probabile che non la prenda male ma non lo so, almeno a titolo di cortesia sarebbe bene farvi riferimento. Quindi vince anche nel posizionamento web.

    Non voglio creare un dilemma con questo, ma a prima vista l'articolo sembra identico al 95% tranne che per gli screenshot del terminale che hai adattato. Ha anche menzionato le sue fonti.

  5.   merlino la debianite suddetto

    Interessante ammetto che | pv | non lo conoscevo.

    Krel penso che la fonte sia in Ubuntu wiki o nei saluti dell'arco.

  6.   Alf suddetto

    @krel, la cosa linux è questa:

    Durante il mio viaggio in questo mondo ho letto e raccolto cose, ho un taccuino con più di 400 post che ho messo in Ubuntu Mexico, che era la comunità in cui ho contribuito di più nei miei primi giorni, purtroppo le cose si possono ripetere, se si rivede la grande quantità posta in rete, sono quasi nello stesso ordine, il fatto è che la maggior parte sono più brevi.

    Posso pubblicare altri 5 post nella settimana e puoi trovarne altri simili o uguali, il motivo? Ubuntu ha il maggior numero di forum / blog in rete.

    In nessun modo penso che ci sarà un dilemma e, se gli amministratori considerano di cancellarlo, non mi offenderebbe o mi infastidirebbe affatto, mi attengo alle regole e a quanto segue, tra le mie note 8 che non le ho in ordine) Sto cercando di aggiungere qualcosa per evitare la coincidenza.

    saluti

    1.    krel suddetto

      Non è un mistero per nessuno che al massimo solo il 10% dei contenuti generati sul web sia nuovo. Con il quale gli altri 90 si contenuti duplicati, rinnovati o salvati, e non dico che questo sia meno importante, al contrario, è una forma di diffusione della conoscenza.

      Tuttavia, dove mi fermo è qualcos'altro. Quando hai un blog di questo tipo, c'è una motivazione personale per aiutare e forse anche per ricevere un riconoscimento. Allo stesso tempo sono sicuro che la maggior parte di coloro che scrivono contenuti sul Software Libero concordano con l'idea della condivisione. Non dimentichiamo però che anche le licenze più nobili come BSD chiedono il riconoscimento.

      Inoltre, i riferimenti sono un modo con cui alcuni motori di ricerca come Google migliorano il posizionamento di un sito web. Dico solo che, poiché il materiale è stato utilizzato come minimo di gratitudine, farei riferimento a quel lavoro.

      Penso che sia fantastico che tu condivida, ma cosa perdi facendo un riferimento? Pensa se da un altro blog con posizionamento migliore di questo venissero duplicati i contenuti di questo. desdelinux Senza citarlo, alla fine seppellirebbero questo blog.

      Hatteras l'ha pubblicato 10 giorni fa e, a meno che non l'abbia tolto dal tuo taccuino o tu non sia Luis Puente, non posso spiegare cosa stai dicendo, è che quasi tutto è testuale. Improbabile ma non impossibile.

      Ma niente, che questo genere di cose accada. E non lo so, per etica personale e per collaborare con un altro collega mi riferirei a lui. Dipende da te, non credo che Hatteras la prenda nel modo sbagliato, anzi.

      1.    msx suddetto
  7.   Quello prima suddetto

    Hmm ... ho creato un dd if = file.iso di = / media / hard drive ... per errore 😛
    un modo per recuperare i file dal disco rigido ???

    1.    vivace suddetto

      Puoi usare Testdisk

    2.    merlino la debianite suddetto

      Mi è capitato un amico forse con testdisk o con una distribuzione live specializzata per salvare i dati. La mia raccomandazione di fare un backup per la prossima volta poiché usare quel comando è qualcosa di delicato nei miei giorni da principiante per formattare l'intero disco rigido senza volerlo e ora per riavviare bene ....... Inutile dire che né il grub è stato avviato.

  8.   Raul suddetto

    Qualcuno può dirmi quale comando usare per vedere l'avanzamento della copia con il comando dd, quello che voglio dire è vedere una barra di avanzamento con il% che ha copiato.

    sld

    1.    luglio suddetto

      Amico! aggiungendo il comando pv. In questo stesso post lo dice quasi all'inizio e spiega come usarlo. Leggilo di nuovo

  9.   pedro suddetto

    usando questo comando:
    dd if = / dev / sdc | bzip2> /media/Elements/iso.gz
    Sono riuscito a creare un'immagine ISO di un disco da 16 GB e salvarla su un disco da 400 GB.
    Ma non so quale sarebbe il comando per ripristinare quell'immagine sul disco originale da 16 GB o su un altro della stessa capacità

  10.   Luis Rodriguez suddetto

    una domanda

    usa questo comando per
    per n in {1..5}; fare dd if = / dev / urandom | pv | dd of = / dev / hda bs = 8b conv = notrunc;
    per un disco da 2 TB
    poi rimango nella console qualcosa del genere
    >
    Devo eseguire un altro comando o quanto tempo può richiedere il processo?

    grazie e continua

    1.    Jazb suddetto

      C'è un errore di battitura nel per ... mancante alla fine della riga «; fatto »rimasto« per n in {1..5}; fare dd if = / dev / urandom | pv | dd of = / dev / hda bs = 8b conv = notrunc; fatto "

  11.   Henry Salazar suddetto

    ottimo articolo… ..lo metto in pratica… saluti amico

  12.   Marcos_tux suddetto

    Molto utile, mi ha aiutato molto grazie

  13.   EFR suddetto

    Buon Alf. Grazie per le informazioni.

    Una domanda. C'è un modo per copiare solo una parte del disco di origine? Il caso è che, se ho un disco da 120 GB in cui vengono utilizzati solo 25 GB e voglio fare una copia su un disco da 40 GB, sarei interessato solo a copiare lo spazio utilizzato (25 GB), c'è un modo con questo comando?
    Gracias de antemano.

    1.    yukiteru suddetto

      Sarebbe meglio per te usare rsync, con il comando rsync -av / path / to / origin / path / to / destiny faresti già il backup di tutti i tuoi permessi con i permessi corrispondenti.

    2.    yukiteru suddetto

      Volevo dire: "tutti i tuoi file con le autorizzazioni corrispondenti"

  14.   SPIA VOLPE suddetto

    Caro, qualcuno sa perché quando si occupa il comando dd, raggiunge solo 4.2 GB e indica che il file è molto grande? È un'immagine di un disco da 250 GB e va a un disco esterno da 1 TB.

    sudo dd if = / dev / sda | pv | dd of = / home / fox / backup.iso

    1.    Rapitore suddetto

      L'errore 4Gb ti sta dando perché stai cercando di fare un backup in una partizione con fs FAT16

  15.   Berna suddetto

    Che bel blog. Entrata molto utile. Avevo già visto altrove gli usi di questo comando, ma non spiegavano nulla. Grazie.

  16.   Carlos Torres suddetto

    ciao ho una macchina per iniezione in cui il programma è andato perso poiché hanno sostituito lo stack del bios, non abbiamo backup ma abbiamo un'altra stessa macchina, ha solo floppy e porta seriale e parallela, come posso fare un backup di questa macchina per caricarlo nell'altro, spero che tu possa aiutarmi grazie

  17.   ernesto suddetto

    Voglio solo copiare una partizione senza iniziare da LIVE CD. Ad esempio, ho un disco con / dev / sda1, / dev / sda5, / dev / sda6 e voglio fare una copia in / dev / sda5 da un altro disco / dev / sdb1

    il comando è dd se = / dev / sdb1 di = / dev / sda5 bs = 1M ????

  18.   Pietro Lobato suddetto

    Ciao, come stai. Vivo anche a Guadalajara.
    Il tuo articolo sul comando DD è molto interessante. Voglio provare alcune distribuzioni Linux, nello specifico Archlinux, ma non sono stato in grado di utilizzare il comando DD e copiare l'ISO di Archilinux che ho già scaricato, su una chiavetta USB. Non so se puoi passarmi un segno di spunta per iniziare con questo. Grazie, Pedro lobato

  19.   Vincitore suddetto

    Perché quando si registra un iso con il comando "dd" serve solo per l'avvio su alcuni PC?
    Exp. Ho 2 laptop e nessuno di loro avvia l'iso di qualsiasi distribuzione Linux; ma al contrario, si avvia su un vecchio PC desktop con disco inattivo

    1.    SEB suddetto

      La cosa migliore è giocare sul sicuro usando unetbootin, con dd mi è rimasta anche la domanda sul perché a volte non funziona.

      1.    vivace suddetto

        Non credo dipenda da DD ma da ISO. Stessa cosa con Unetbootin, non funziona bene con tutte le distribuzioni.

  20.   Vincitore suddetto

    A volte funziona su tutti i PC, ma devi aggiungere mbr e syslinux all'USB al processo; ma questo è lungo e noioso.
    La parte più semplice dell'annullamento del boot

    Attenzione: non è l'iso o il dd per me, è il modo in cui lo registri.

  21.   danny suddetto

    Ho un dubbio se utilizzo questo comando:
    sudo dd if = / dev / zero di = / dev / diskdrive
    Invece di questo, la formattazione di basso livello è la stessa o richiede più tempo di questa:
    sudo dd if = / dev / zero of = / dev / diskdrive bs = 1M ..

  22.   arg0s suddetto

    Il comando dd può essere utilizzato per eliminare un file specifico?

    ad esempio,

    dd if = / dev / urandom of = / home / myfile delete

  23.   arg0s suddetto

    con bs = 1M diventa più veloce

  24.   alex suddetto

    E se ho intenzione di fare una copia esatta da un disco all'altro, con tutte le sue partizioni (swap, sda ...) ed entrambi i dischi uguali, ma uno è sul PC e l'altro su un NAS sulla rete ????
    grazie

  25.   Gerardo suddetto

    Un commento, lo uso con status = progress alla fine e non ho bisogno di pv, quindi Debian funziona molto bene per me per vedere i progressi.
    E il secondo, c'è un modo per ottenere solo i dati e non l'intera unità, poiché se è un disco da 2 TB e io uso solo 100 GB, ho bisogno di tutto quello spazio. C'è un modo per eseguire il backup di soli 100 GB? E quando lo passo su un altro supporto potrebbe essere un disco più piccolo magari uno di 500?

  26.   Alexander suddetto

    Aiuto !!!
    Esegui il comando
    dd if = cbpp-9.0-amd64-20170621.iso di = / dev / sdb

    tutto bene ... ma ora voglio usare l'USB come unità di archiviazione e ...

    L'USB non è montato, non compare nemmeno in GParted.

    Qualcuno sa cosa posso fare.

    PS: quale sarebbe il miglior programma per recuperare informazioni da dischi e CD DVD….

    1.    anonimo suddetto

      devi ripetere il test delle partizioni con fdisk