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).
Sono quasi diventato diabetico con l'uso improprio del comando dd.
a proposito, quale sarebbe la differenza con dd_rescue?
ddrescue per impostazione predefinita non si ferma in caso di errori di lettura e tenta con vari mezzi di recuperare informazioni illeggibili.
hahahha ho anche usato molto male il comando dd, è molto più potente di quanto pensassi.
Commento che credo che ogni utente dell'arco ad un certo punto abbia usato
@ 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.
Se c'è qualche GUI creata in qt per KDE che usa questo comando? o devo dimettermi.?
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
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
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.
Interessante ammetto che | pv | non lo conoscevo.
Krel penso che la fonte sia in Ubuntu wiki o nei saluti dell'arco.
@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
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.
È vero, è una copia fedele di questo post: http://hatteras.wordpress.com/2013/01/18/algunos-usos-practicos-del-comando-dd/
Hmm ... ho creato un dd if = file.iso di = / media / hard drive ... per errore 😛
un modo per recuperare i file dal disco rigido ???
Puoi usare Testdisk
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.
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
Amico! aggiungendo il comando pv. In questo stesso post lo dice quasi all'inizio e spiega come usarlo. Leggilo di nuovo
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à
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
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 "
ottimo articolo… ..lo metto in pratica… saluti amico
Molto utile, mi ha aiutato molto grazie
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.
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.
Volevo dire: "tutti i tuoi file con le autorizzazioni corrispondenti"
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
L'errore 4Gb ti sta dando perché stai cercando di fare un backup in una partizione con fs FAT16
Che bel blog. Entrata molto utile. Avevo già visto altrove gli usi di questo comando, ma non spiegavano nulla. Grazie.
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
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 ????
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
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
La cosa migliore è giocare sul sicuro usando unetbootin, con dd mi è rimasta anche la domanda sul perché a volte non funziona.
Non credo dipenda da DD ma da ISO. Stessa cosa con Unetbootin, non funziona bene con tutte le distribuzioni.
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.
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 ..
Il comando dd può essere utilizzato per eliminare un file specifico?
ad esempio,
dd if = / dev / urandom of = / home / myfile delete
con bs = 1M diventa più veloce
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
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?
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….
devi ripetere il test delle partizioni con fdisk