Voluto
dd if=/dev/zero of=somepartition bs=512
cancellare anche le partizioni dopo somepartitiono interrompere alla fine di somepartition?
Voluto
dd if=/dev/zero of=somepartition bs=512
cancellare anche le partizioni dopo somepartitiono interrompere alla fine di somepartition?
Risposte:
ddddè 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 xtrova 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/sdxl'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.
dde 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):
ddpuò partizioni adiacenti non sovrascrittura, semplicemente perché ddCAN partizioni non di sovrascrittura, periodo .
ddscrive semplicemente nei file . Questo è tutto.
Ora, se si passa ddun file che rappresenta molteplici partizioni, quindi ddsovrascrive il file . Ma in quel caso, non sta ddscrivendo oltre la fine della partizione. ddscriverà ancora fino alla fine del file e solo fino alla fine del file.
Ma, se passi ddun file che rappresenta solo una partizione, ddnon scriverà oltre la fine di questa partizione. Ancora una volta, questo non ha nulla a che fare con dd. ddscrive 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. ddnon c'entra niente.
Quindi, in breve: ddscrive su file. Ciò che questi file rappresentano non è motivo di ddpreoccupazione. ddnon sa nulla delle partizioni.
ddper 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/sdatuo editor di testo e modificare i dati, ddnon è 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.
ddnon è così basso livello. In effetti, la maggior parte delle cose che le persone usano ddpotrebbero essere state fatte allo stesso modo cat. In effetti catè leggermente più veloce perché utilizza blocchi più grandi di quelli ddpredefiniti. Tutto il codice di basso livello è nel kernel. E al conducente non importa davvero se si sta utilizzando ddo cat.
dd if=/dev/zero of=/dev/sda bs=512 count=1o dd if=/dev/zero of=/dev/sda bs=512sono 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/sda1questa 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. ddimpossibile 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.