Voluto
dd if=/dev/zero of=somepartition bs=512
cancellare anche le partizioni dopo somepartition
o interrompere alla fine di somepartition
?
Voluto
dd if=/dev/zero of=somepartition bs=512
cancellare anche le partizioni dopo somepartition
o interrompere alla fine di somepartition
?
Risposte:
dd
dd
è uno strumento molto potente ma anche pericoloso. Fa quello che gli dici di fare senza domande. Quindi, se gli dici di cancellare le foto di famiglia, ... ed è un piccolo errore di battitura.
Ma se controlli e ricontrolli, puoi usarlo.
dd if=/dev/zero of=somepartition bs=512
o vorrei suggerire
dd if=/dev/zero of=/dev/sdxn bs=4096
dove si x
trova la lettera dell'unità ed n
è il numero di partizione e la dimensione del blocco 4096 byte rende più veloce il processo di scrittura.
In questo caso è importante scrivere su una partizione . Se si scrive sull'intera unità (l'estremità della testina dell'unità) /dev/sdx
l'intera unità verrà sovrascritta. Ma la scrittura sulla partizione verrà interrotta alla fine della partizione e le partizioni sottostanti verranno preservate. (Ho testato ora su un pendrive USB in Lubuntu 16.04 LTS, quindi so che funziona così.)
Esiste un'eccezione per una partizione estesa (che è un contenitore per partizioni logiche, al fine di avere più di quattro partizioni in una tabella delle partizioni MSDOS). Questo è descritto nel seguente link,
Posso creare un'immagine della partizione 'estesa' usando dd?
Ma c'è anche un altro problema. Ho testato il tuo comando in un ambiente di test e ho letto solo un kibibyte (1024 byte) quando volevo che facesse un'immagine di una partizione estesa.
Ho provato anche questo ora su un pendrive USB in Lubuntu 16.04 LTS, e questo vale per la scrittura (così come per la lettura). Solo il primo kibibyte viene sovrascritto.
Quindi per riassumere, sovrascrivere le partizioni primarie e le partizioni logiche funziona secondo la descrizione principale in questa risposta. Ma non utilizzare questo metodo per sovrascrivere una partizione estesa perché verrà sovrascritto solo il primo kibibyte. Le partizioni logiche della partizione estesa non saranno più trovate tramite la tabella delle partizioni, ma i dati in esse memorizzati sono ancora presenti.
dd
e che sia rischioso, quindi stai molto attento quando lo usi. Buona fortuna :-) In generale, dovresti sempre avere un backup di tutti i file, che non puoi permetterti di perdere.
Le scritture su un dispositivo di partizione non scriveranno al di fuori di quella partizione, con dd o qualsiasi altra cosa. Dovresti usare un dispositivo a disco intero per avere effetti al di fuori di una singola partizione.
(Avvertenza: a meno che il disco non abbia una tabella delle partizioni con partizioni sovrapposte, cosa che non dovrebbe mai accadere.)
Penso che la tua domanda si basi su un malinteso fondamentale su come dd
(e in effetti sistemi operativi simili a Unix in generale):
dd
può partizioni adiacenti non sovrascrittura, semplicemente perché dd
CAN partizioni non di sovrascrittura, periodo .
dd
scrive semplicemente nei file . Questo è tutto.
Ora, se si passa dd
un file che rappresenta molteplici partizioni, quindi dd
sovrascrive il file . Ma in quel caso, non sta dd
scrivendo oltre la fine della partizione. dd
scriverà ancora fino alla fine del file e solo fino alla fine del file.
Ma, se passi dd
un file che rappresenta solo una partizione, dd
non scriverà oltre la fine di questa partizione. Ancora una volta, questo non ha nulla a che fare con dd
. dd
scrive semplicemente nel file in cui gli dici di scrivere. Il fatto che questo file rappresenti una singola partizione è (in questo caso) garantito dal driver del dispositivo a blocchi nel kernel. dd
non c'entra niente.
Quindi, in breve: dd
scrive su file. Ciò che questi file rappresentano non è motivo di dd
preoccupazione. dd
non sa nulla delle partizioni.
dd
per scrivere su partizioni non elaborate. Puoi solo scrivere su file. È possibile , naturalmente, scrittura a un file dispositivo a blocchi che rappresenta una partizione (ad esempio /dev/sda1
), ma non si può scrivere su una partizione raw. E poiché puoi scrivere solo su un file che rappresenta una partizione, non puoi scrivere oltre la fine della partizione, perché il file rappresenta solo la partizione e non la partizione e un po 'oltre la fine.
/dev/sda
tuo editor di testo e modificare i dati, dd
non è diverso da qualsiasi altro programma in termini di accesso alle partizioni. Ottima risposta!
Esiste uno scenario speciale pericoloso, ma raro in cui ciò può accadere anche con driver di dispositivo a blocchi non buggy:
Devi fare attenzione con dd come se commettessi un errore, puoi sovrascrivere più di quanto ti aspettassi e dipende da cosa stai usando dd per (l'OP era vago nel suo uso di dd e l'esatta sintassi del dd comando).
Se si specifica una partizione, questa verrà scritta su quella partizione fino a quando la partizione non è piena.
Se si commette un errore e si inserisce l'intera unità, ad esempio = / dev / sda, dd scriverà sull'intera unità per terminare ignorando (e sovrascrivendo) la tabella delle partizioni.
Puoi anche dd su una partizione per sovrascrivere i file eliminati (i file eliminati possono rimanere sulla partizione e scoperti da vari strumenti di recupero con vari gradi di successo fino a quando non vengono sovrascritti. In questo caso puoi usare dd per riempire lo spazio libero scrivendo su un file.
dd if=/dev/zero of=/path/to/mount_point/zero_file bs=4096
rm -f /path/to/mount_point/zero_file
A seconda di ciò che stai facendo, tuttavia, potresti voler utilizzare uno strumento alternativo per eliminare in modo sicuro i file. Vedi Come eliminare i file in modo sicuro? per opzioni.
dd
non è così basso livello. In effetti, la maggior parte delle cose che le persone usano dd
potrebbero essere state fatte allo stesso modo cat
. In effetti cat
è leggermente più veloce perché utilizza blocchi più grandi di quelli dd
predefiniti. Tutto il codice di basso livello è nel kernel. E al conducente non importa davvero se si sta utilizzando dd
o cat
.
dd if=/dev/zero of=/dev/sda bs=512 count=1
o dd if=/dev/zero of=/dev/sda bs=512
sono esempi. Con il secondo comando continuerà a scrivere e riempirà l'intero disco "ignorando" la tabella delle partizioni. Se si specifica una partizione, dd if=/dev/zero of=/dev/sda1
questa non andrà oltre la partizione. Un po 'dipende da cosa vuoi fare con dd.
of=somepartition
, quindi non si applica il caso in cui si scrive sull'intero dispositivo disco. dd
impossibile aggirare le restrizioni del driver del dispositivo.
/dev/sda1
, sono creati dal kernel in modo tale che sia impossibile accedere allo storage adiacente attraverso di essi (supponendo che la tabella delle partizioni non sia stata modificata dopo che il kernel l'ha letto l'ultima volta). Se potessi accedere allo storage adiacente in quel modo, sarebbe considerato un enorme bug.