Come cancellare lo spazio libero su disco in Linux?


145

Quando un file viene eliminato, il suo contenuto può essere lasciato nel file system, a meno che non venga sovrascritto esplicitamente con qualcos'altro. Il wipecomando può cancellare in modo sicuro i file, ma non sembra consentire la cancellazione di spazio libero su disco non utilizzato da nessun file.

Cosa dovrei usare per raggiungere questo obiettivo?


L'unica soluzione sicura potrebbe essere quella di salvare i file altrove, cancellare l'intera partizione, ricreare il filesystem e quindi ripristinare i file. Ho eseguito photorec e sono rimasto scioccato da quanta roba potesse essere recuperata anche dopo aver 'pulito' lo spazio libero. Una soluzione di compromesso è spostare il limite sinistro della partizione del 6% delle sue dimensioni dopo aver cancellato lo spazio apparentemente libero.
user39559

Risposte:


107

Avvertenza: l' hardware del disco / SSD moderno e i file system moderni possono eliminare i dati in luoghi in cui non è possibile eliminarli, quindi questo processo può comunque lasciare dati sul disco. Gli unici modi sicuri per cancellare i dati sono il comando ATA Secure Erase (se implementato correttamente) o la distruzione fisica. Vedi anche Come posso cancellare in modo affidabile tutte le informazioni su un disco rigido?

Puoi usare una suite di strumenti chiamata secure-delete.

sudo apt-get install secure-delete

Questo ha quattro strumenti:

srm- elimina in modo sicuro un file esistente
smem- elimina in modo sicuro le tracce di un file da ram
sfill- cancella tutto lo spazio contrassegnato come vuoto sul tuo disco rigido
sswap- cancella tutti i dati dallo spazio di swap.

Dalla pagina man di srm

srm è progettato per eliminare i dati su supporti in modo sicuro che non possono essere recuperati da ladri, forze dell'ordine o altre minacce. L'algoritmo di cancellazione si basa sul documento "Cancellazione sicura dei dati dalla memoria magnetica e a stato solido" presentato al sesto simposio sulla sicurezza Usenix da Peter Gutmann, uno dei principali crittografi civili.

Il processo di cancellazione sicura dei dati di srm procede in questo modo:

  • 1 passaggio con 0xff
  • 5 passaggi casuali. /dev/urandomviene utilizzato per un RNG sicuro, se disponibile.
  • 27 passaggi con valori speciali definiti da Peter Gutmann.
  • 5 passaggi casuali. /dev/urandomviene utilizzato per un RNG sicuro, se disponibile.
  • Rinomina il file su un valore casuale
  • Tronca il file

Come ulteriore misura di sicurezza, il file viene aperto in modalità O_SYNC e dopo ogni passaggio fsync()viene effettuata una chiamata. srmscrive 32k blocchi ai fini della velocità, riempiendo i buffer delle cache del disco per costringerli a svuotare e sovrascrivere i vecchi dati che appartenevano al file.


5
È difficile individuare l'attuale homepage "ufficiale" di secure-delete. Una versione forse più vecchia afferma che non ci sono segnalazioni di bug, ma allo stesso tempo non esiste un sistema di tracciamento dei bug aperto in cui sia possibile segnalare un bug che ho trovato. La homepage di eliminazione sicura sottolinea anche che potrebbe non cancellare tutti i blocchi di dati inutilizzati, a seconda del filesystem che usi, il che è vero.
user39559

12
Con i moderni dischi rigidi (più grandi di circa 20 GB), è assolutamente inutile fare diversi passaggi e attendere secoli. Quindi l'installazione di strumenti specializzati è diventata inutile (il che potrebbe spiegare perché secure-delete non ha più home page). Basta fare questo dalla partizione appropriata: cat /dev/zero >nosuchfile; rm nosuchfile.
marzo

1
@mivk: perché è inutile fare più di un passaggio? E perché usare / dev / zero invece di / dev / random? Ciò è dovuto a problemi di velocità?
naught101

5
L'uso di / dev / zero è molto più veloce. Se si scrive spazio libero da / dev / random, il kernel deve generare tutti quei dati casuali al volo. È un modo divertente per vedere il tuo carico medio salire al massimo ...
Dafydd,


71

Il modo più rapido, se hai solo bisogno di un singolo passaggio e vuoi solo sostituire tutto con zero, è:

cat /dev/zero > zero.file
sync
rm zero.file

(eseguito da una directory sul filesystem che si desidera cancellare)
(il synccomando è una misura paranoica che assicura che tutti i dati vengano scritti su disco - un gestore cache intelligente potrebbe capire che può annullare le scritture per qualsiasi blocco in sospeso quando il file non è collegato )

Durante questa operazione ci sarà un tempo in cui non ci sarà affatto spazio libero sul filesystem, che può essere di decine di secondi se il file risultante è grande e frammentato, quindi ci vuole un po 'di tempo per eliminarlo. Per ridurre il tempo in cui lo spazio libero è completamente zero:

dd if=/dev/zero of=zero.small.file bs=1024 count=102400
cat /dev/zero > zero.file
sync
rm zero.small.file
rm zero.file

Questo dovrebbe essere sufficiente per impedire a qualcuno di leggere il vecchio contenuto del file senza un'operazione forense costosa. Per una variante leggermente più sicura, ma più lenta, sostituirla /dev/zerocon /dev/urandom. Per più paranoia esegui più passaggi /dev/urandom, anche se se hai bisogno di così tanto sforzo l' shredutilità dal pacchetto coreutils è la strada da percorrere:

dd if=/dev/zero of=zero.small.file bs=1024 count=102400
shred -z zero.small.file
cat /dev/zero > zero.file
sync
rm zero.small.file
shred -z zero.file
sync
rm zero.file

Si noti che in precedenza il file piccolo viene distrutto prima di creare il più grande, quindi può essere rimosso non appena il più grande è completo invece di dover aspettare che venga distrutto lasciando il filesystem con zero spazio libero per il tempo necessario. Il processo di distruzione richiede molto tempo su un file di grandi dimensioni e, a meno che non si stia cercando di nascondere qualcosa alla NSA, non è realmente necessario l'IMO.

Tutto quanto sopra dovrebbe funzionare su qualsiasi filesystem.

Limiti dimensione file:

Come sottolinea DanMoulding in un commento qui sotto, ciò potrebbe avere problemi con il limite di dimensione del file su alcuni filesystem.

Per FAT32 sarebbe sicuramente una preoccupazione a causa del limite del file 2GiB: la maggior parte dei volumi è più grande di questi in questi giorni (8TiB è il limite di dimensione del volume IIRC). È possibile aggirare il problema eseguendo il piping cat /dev/zerodell'output di output di grandi dimensioni splitper generare più file più piccoli e regolare le fasi di distruzione ed eliminazione di conseguenza.

Con ext2 / 3/4 è meno preoccupante: con il blocco 4K predefinito / comune il limite della dimensione del file è di 2 TB, quindi dovresti avere un volume enorme perché questo sia un problema (la dimensione massima del volume in queste condizioni è 16 TiB).

Con i btrfs (ancora sperimentali) sia le dimensioni massime di file che di volume sono di 16 EiB enormi.

In NTFS la lunghezza massima del file è maggiore della lunghezza massima del volume in alcuni casi anche.

Punti di partenza per maggiori informazioni:
http://en.wikipedia.org/wiki/Ext3#Size_limits
http://en.wikipedia.org/wiki/Btrfs
http://en.wikipedia.org/wiki/Ntfs#Scalability

Dispositivi virtuali

Come menzionato di recente nei commenti, ci sono ulteriori considerazioni per i dispositivi virtuali:

  • Per i dischi virtuali scarsamente allocati altri metodi come quelli utilizzati da zerofreesaranno più veloci (anche se a differenza di questo cate ddnon si tratta di uno strumento standard su cui puoi fare affidamento per essere disponibile praticamente in qualsiasi sistema operativo unix-a-like).

  • Tieni presente che l'azzeramento di un blocco su un dispositivo virtuale scarso potrebbe non cancellare il blocco sul dispositivo fisico sottostante , in effetti direi che è improbabile: il gestore del disco virtuale eseguirà il blocco non più utilizzato così può essere assegnato a qualcos'altro in seguito.

  • Anche per dispositivi virtuali di dimensioni fisse, potresti non avere il controllo della posizione fisica del dispositivo, in modo che possa essere spostato nella posizione corrente o su un nuovo set di dischi fisici in qualsiasi momento e il massimo che puoi cancellare è la posizione corrente, non eventuali posizioni precedenti che il blocco potrebbe aver risieduto in passato.

  • Per i problemi di cui sopra sui dispositivi virtuali: a meno che tu non controlli l'host o gli host e riesca a cancellare in modo sicuro il loro spazio non allocato dopo aver pulito i dischi nella VM o spostato il dispositivo virtuale, non c'è nulla che puoi fare al riguardo dopo fatto. L'unico ricorso è utilizzare la crittografia del disco completo dall'inizioquindi nulla di non crittografato è scritto in primo luogo sui media fisici. Ovviamente potrebbe esserci ancora una richiesta di cancellazione dello spazio libero nella VM. Si noti inoltre che FDE può rendere i dispositivi virtuali sparsi molto meno utili in quanto il livello di virtualizzazione non può davvero vedere quali blocchi non sono utilizzati. Se il livello del filesystem del sistema operativo invia comandi di taglio al dispositivo virtuale (come se si tratti di un SSD) e il controller virtuale li interpreta, ciò potrebbe risolverlo, ma non conosco alcuna circostanza in cui ciò avvenga effettivamente e una più ampia la discussione di questo è una questione altrove (ci stiamo già avvicinando all'essere fuori tema per la domanda originale, quindi se questo ha suscitato il tuo interesse alcune sperimentazioni e / o domande di follow-up potrebbero essere in ordine).


4
Apparentemente il semplice azzeramento può anche essere fatto con gli secure-deletestrumenti: l'uso sfill -llzriduce l'intera procedura a un passaggio che scrive solo '0'.
foraidt,

Questo richiede del tempo. È davvero il modo più veloce? Immagino che scrivere GB di dati richiederà sempre un po 'di tempo ...
Endolith,

2
@endolith: se si desidera svuotare lo spazio libero su un filesystem attivo, non è possibile aggirare la necessità di scrivere molti dati tramite l'overhead del filesystem. Gli strumenti di eliminazione sicura suggeriti da fnord_ix possono essere più veloci, perché sono ottimizzati per questo tipo di attività.
David Spillett,

2
@endolith: dalla descrizione nella pagina man mi aspetto che la variante di zerofree sia più rapida solo per i dischi virtuali scarsamente allocati, infatti potrebbe essere più lenta su quelli virtuali reali o di dimensioni fisse se sta eseguendo una lettura prima della scrittura per confermare che il blocco non ha contenuto. La mongolfiera per un disco virtuale non dovrebbe avvenire, poiché la maggior parte dei driver di disco sparsi prende tutti gli zeri come "non allocare questo blocco". Inoltre, cate ddsono disponibili praticamente su qualsiasi sistema operativo unix-a-like in quanto sono considerati strumenti standard dove zerofreeprobabilmente non lo è a meno che non sia stato aggiunto esplicitamente.
David Spillett,

1
@endolith: detto questo, zerofreecertamente funzionerebbe ovviamente, la cosa "l'intero file system temporaneamente pieno" menzionata nella pagina man (quasi ma non del tutto mitigata dalla piccola confusione jiggery nei miei esempi) è una vera preoccupazione se lo stai facendo su un sistema attualmente attivo, e in zerofreeeffetti sarebbe più veloce nell'istanza specifica per cui è ottimizzato: dispositivi a blocchi virtuali scarsamente allocati. Anche se non puoi fare affidamento su alcuno di questi ultimi su un dispositivo virtuale per motivi di sicurezza: l'unica vera risposta in tal caso è crittografare l'intero dispositivo dall'inizio.
David Spillett,

45

AVVERTIMENTO

Sono rimasto scioccato dal numero di file che photorec ha potuto recuperare dal mio disco, anche dopo aver cancellato.

Se c'è più sicurezza nel riempire lo "spazio libero" solo 1 volta con 0x00 o 38 volte con diversi standard cabalistici è più di una discussione accademica. L'autore del seminario del 1996 sulla triturazione si è scritto un epilogo affermando che questo è obsoleto e non necessario per l'hardware moderno. Non esiste un caso documentato in cui i dati vengano fisicamente sostituiti azzerati e recuperati successivamente.

Il vero collegamento fragile in questa procedura è il filesystem . Alcuni filesystem riservano spazio per un uso speciale e non sono resi disponibili come "spazio libero". Ma i tuoi dati potrebbero essere lì . Ciò include foto, e-mail personali in chiaro, qualunque cosa. Ho appena cercato su Google riservato + spazio + ext4 e ho appreso che il 5% della mia homepartizione era riservato. Immagino che sia qui photorecche ho trovato molte delle mie cose. Conclusione: il metodo di distruzione non è il più importante, anche il metodo multi-pass lascia ancora i dati al loro posto .

Puoi provare # tune2fs -m 0 /dev/sdn0prima di montarlo. (Se questa sarà la partizione root dopo il riavvio, assicurarsi di eseguirla -m 5o -m 1dopo averla smontata).

Tuttavia, in un modo o nell'altro, potrebbe esserci ancora spazio.

L'unico modo veramente sicuro è cancellare l'intera partizione, creare nuovamente un filesystem e quindi ripristinare i file da un backup.


Modo rapido (consigliato)

Esegui da una directory sul filesystem che vuoi cancellare:

dd if=/dev/zero of=zero.small.file bs=1024 count=102400
dd if=/dev/zero of=zero.file bs=1024
sync ; sleep 60 ; sync
rm zero.small.file
rm zero.file

Note: lo scopo del piccolo file è di ridurre il tempo in cui lo spazio libero è completamente zero; lo scopo della sincronizzazione è assicurarsi che i dati siano effettivamente scritti.

Questo dovrebbe essere abbastanza buono per la maggior parte delle persone.

Modo lento (paranoico)

Non esiste un caso documentato di recupero dei dati dopo la pulizia di cui sopra. Sarebbe costoso e dispendioso in termini di risorse, se possibile affatto.

Tuttavia, se hai un motivo per pensare che le agenzie segrete spenderebbero molte risorse per recuperare i tuoi file, questo dovrebbe essere sufficiente:

dd if=/dev/urandom of=random.small.file bs=1024 count=102400
dd if=/dev/urandom of=random.file bs=1024
sync ; sleep 60 ; sync
rm random.small.file
rm random.file

Ci vuole molto più tempo.

Avvertimento. Se hai scelto il modo paranoico, dopo ciò vorrai comunque eseguire la pulizia rapida, e non è paranoia. La presenza di dati puramente casuali è facile ed economica da rilevare e solleva il sospetto che si tratti effettivamente di dati crittografati. Potresti morire sotto tortura per non aver rivelato la chiave di decrittazione.

Modo molto lento (pazzo paranoico)

Perfino l'autore del seminario del 1996 sulla triturazione ha scritto un epilogo dicendo che questo è obsoleto e non necessario per l'hardware moderno.

Ma se hai ancora molto tempo libero e non ti dispiace sprecare il tuo disco con un sacco di sovrascritture, ecco qui:

dd if=/dev/zero of=zero.small.file bs=1024 count=102400
sync ; sleep 60 ; sync
shred -z zero.small.file
dd if=/dev/zero of=zero.file bs=1024
sync ; sleep 60 ; sync
rm zero.small.file
shred -z zero.file
sync ; sleep 60 ; sync
rm zero.file

Nota: ciò equivale essenzialmente all'utilizzo dello strumento di eliminazione sicura.


Prima della modifica, questo post era una riscrittura di David Spillett. Il comando "cat" produce un messaggio di errore, ma non riesco a scrivere commenti sui post di altre persone.


Puoi commentare sotto altri post di persone con 50 reputazione .
Gnoupi,

1
Il catcomando è previsto per dare un errore "più spazio" nei miei esempi, al termine della sua corsa. Puoi nasconderlo reindirizzando stderr a /dev/nullse è un problema. Io di solito uso pv, piuttosto che cato ddper questo genere di cose, al fine di ottenere l'indicazione di avanzamento utile.
David Spillett,

4
...raises the suspicion that it is actually encrypted data. You may die under torture for not revealing the decryption key.Heh, è ​​esattamente quello che stavo pensando. Immagino che ciò significhi che sono paranoico ...
Navin,

2
Root è sempre in grado di utilizzare lo spazio riservato. Quindi, se esegui il riempimento zero come root, sarai in grado di riempire anche lo spazio riservato al 5%; le melodie non sono necessarie. È ancora ipotizzabile che potrebbero esserci dati in altre parti del filesystem.
Nate Eldredge,

1
@NateEldredge Hai qualche sorgente che indichi che l' ddesecuzione come root dà accesso a più file system che ddsenza root? Voglio credere che sia vero, ma al momento non vedo motivo.
Hashim,

27

C'è un'utilità zerofree almeno in Ubuntu:

http://manpages.ubuntu.com/manpages/natty/man8/zerofree.8.html

   zerofree — zero free blocks from ext2/3 file-systems

   zerofree  finds  the  unallocated, non-zeroed blocks in an ext2 or ext3
   filesystem (e.g. /dev/hda1) and fills them with zeroes. This is  useful
   if  the  device  on  which this file-system resides is a disk image. In
   this case, depending on the type of disk image, a secondary utility may
   be  able  to  reduce the size of the disk image after zerofree has been
   run.

   The usual way to achieve  the  same  result  (zeroing  the  unallocated
   blocks)  is to run dd (1) to create a file full of zeroes that takes up
   the entire free space on the drive, and then delete this file. This has
   many disadvantages, which zerofree alleviates:

      ·  it is slow;

      ·  it makes the disk image (temporarily) grow to its maximal extent;

      ·  it  (temporarily)  uses  all  free  space  on  the disk, so other
         concurrent write actions may fail.

   filesystem has to be unmounted or mounted  read-only  for  zerofree  to
   work.  It  will exit with an error message if the filesystem is mounted
   writable. To remount the  root  file-system  readonly,  you  can  first
   switch to single user runlevel (telinit 1) then use mount -o remount,ro
   filesystem.

Controlla anche questo link su zerofree: mantenere scarse le immagini del filesystem - proviene dal suo autore - Ron Yorston (9 agosto 2012)


3
È importante che il filesystem debba essere smontato o montato in sola lettura affinché zerofree funzioni.
AntonioK,

1
Sarebbe bello includere alcune informazioni su come farlo nel file system di root. La mia sensazione è che questo non funzionerà, perché dovresti smontare il file system, eseguendo contemporaneamente lo strumento da detto file system.
Ant6n

Questo viene anche con CentOS
davidgo,

3

Ecco come farlo con una GUI.

  1. Installa BleachBit
  2. Esegui come root facendo clic su Applicazioni - Strumenti di sistema - BleachBit come amministratore.
  3. Nelle preferenze, indica quali percorsi desideri. Generalmente li indovina bene. Si desidera includere un percorso scrivibile per ogni partizione. In genere si tratta di / home / username e / tmp, a meno che non siano la stessa partizione, nel qual caso basta sceglierne una.
  4. Seleziona la casella Sistema - Cancella spazio libero su disco.
  5. Fai clic su Elimina.

L'avanzamento di BleachBit su dd (che altrimenti è molto bello) è quando il disco è finalmente pieno, BleachBit crea piccoli file per cancellare gli inode (che contiene metadati come nomi di file, ecc.).


Ispeziona il codice Python opensource di Bleachbit per cancellare freespace da un'unità per te stesso.
Shadowbq

2

Uso ddper allocare uno o più file di grandi dimensioni per riempire lo spazio libero, quindi utilizzo un'utilità di cancellazione sicura.

Per allocare i file con dd prova:

dd if=/dev/zero of=delete_me bs=1024 count=102400

Ciò genererà un file denominato delete_mecon dimensioni di 100 MB. (Ecco bsla "dimensione del blocco" impostata su 1k, ed countè il numero di blocchi da allocare.)

Quindi usa la tua utility di cancellazione sicura preferita (che ho usato shred) sui file così creati.

Ma NOTA QUESTO: buffering significa che anche se fai l' intero disco, potresti non ottenere assolutamente tutto!


Questo link consiglia scrubdi pulire lo spazio libero. Non l'ho provato.


Oh, se la memoria mi serve, ho provato scrubuna volta e ha corrotto l'intero file system. Fortunatamente ho avuto il buon senso di sperimentare prima su un file system di prova, NON sui miei dati reali.
Landroni,

2

Pulisci un'unità alla massima velocità.

Al giorno d'oggi, le istruzioni tipiche per crittografare un'unità ti diranno di WIPE prima l'unità.

Il comando seguente riempirà l'unità con testo cifrato AES.

Utilizzare un CD live se è necessario cancellare l'unità di avvio principale.

Apri un terminale ed eleva i tuoi privilegi:

sudo bash

Elenchiamo tutte le unità sul sistema per essere sicure:

cat /proc/partitions

NOTA: sostituire /dev/sd{x}con il dispositivo che si desidera cancellare.

ATTENZIONE: questo non è per i dilettanti! Potresti rendere il tuo sistema non avviabile !!!

sudo openssl enc -aes-256-ctr -pass pass:"$(dd if=/dev/urandom bs=128 count=1 2>/dev/null | base64)" -nosalt < /dev/zero > /dev/sd{x}

Sono sbalordito da quanto sia veloce.



2

Puoi cancellare il tuo spazio libero utilizzando il pacchetto di eliminazione sicura.

In quel pacchetto puoi trovare uno sfillstrumento, che è progettato per eliminare i dati che si trovano sullo spazio su disco disponibile su supporti in modo sicuro che non possono essere recuperati da ladri, forze dell'ordine o altre minacce.

Per installare il pacchetto di eliminazione sicura in Linux (Ubuntu), installarlo con il comando seguente:

$ sudo apt-get install secure-delete

Quindi per cancellare i tuoi dati senza spazio libero, prova il seguente comando:

sfill -f -v -ll /YOUR_MOUNTPOINT/OR_DIRECTORY

Dove / YOUR_MOUNTPOINT / OR_DIRECTORY è il punto di montaggio ( df -h, mount) o la directory per cancellare lo spazio libero.

Leggi il manuale su http://manpages.ubuntu.com/manpages/hardy/man1/sfill.1.html


1

usa dd e azzera lo spazio libero. è un mito che i dati devono essere sovrascritti più volte (basta chiedere a Peter Guntmann) e dati casuali, al contrario di 1, quindi 0 implica attività innaturale. quindi il risultato finale è un disco pulito con meno tempo impiegato a scrivere. inoltre, i programmi di cancellazione sicura non possono garantire che sovrascrivono il file reale su file system moderni (journaled). fai un favore a te stesso e ottieni photorec, scansiona il tuo disco per vedere il disordine, puliscilo con 1 e, facoltativamente, con zero per farlo sembrare intatto. se photorec trova ancora materiale, ricorda che sta eseguendo la scansione di tutto ciò che è disponibile, quindi fallo di nuovo attentamente con l'utente root.

ricorda, il cia / fbi / nsa non ha una macchina elaborata in grado di leggere lo stato reale dei tuoi bit di supporti magnetici. era solo un articolo scritto molto tempo fa. un "what-if". devi solo cancellare 1 volta.


1
Ci sono alcune cose interessanti che hai detto, ma hai effettivamente delle fonti per sostenere queste informazioni? È difficile credere che tutta quella sovrascrittura sia inutile. Inoltre, ti preghiamo di migliorare il tuo post, è difficile da leggere con punteggiatura del genere.
gronostaj,

@gronostaj: l'affermazione "è un mito che i dati devono essere sovrascritti più volte" almeno per le unità moderne è stata dimostrata da numerosi studi. Tutti quei 30+ pass raccomandati da Gutmann non sono più richiesti, come riconosciuto dall'autore stesso.
Karan,

1

È più facile usare scrub :

scrub -X dump

Ciò creerà una dumpcartella nella posizione corrente e creerà il file fino a quando il disco non è pieno. Puoi scegliere un motivo con l' -popzione ( nnsa|dod|bsi|old|fastold|gutmann).

Non è facile installare scrub ( vedi i forum di Ubuntu su questo ), ma una volta completata l'installazione, hai uno strumento davvero SEMPLICE ed efficiente in mano.


Se la memoria mi serve, ho provato scrubuna volta e ha corrotto l'intero file system. Fortunatamente ho avuto il buon senso di sperimentare prima su un file system di prova, NON sui miei dati reali.
Landroni,

Non so cosa hai fatto o cosa è successo, ma fondamentalmente scrub crea un nuovo file fino a riempire il filesystem. Non gioca con i file esistenti, né ne elimina nessuno (almeno non il comando che ho dato) ...
FMaz008

1
Infatti. scrub -X dump_dirHo provato e sembra aver funzionato bene. BTW, l'installazione su Ubuntu 14.04 è molto semplice: apt-get install scrub.
Landroni,

1

Ecco lo script "sdelete.sh" che utilizzo. Vedi i commenti per i dettagli.

# Install the secure-delete package (sfill command).

# To see progress type in new terminal:
# watch -n 1 df -hm

# Assuming that there is one partition (/dev/sda1). sfill writes to /.
# The second pass writes in current directory and synchronizes data.
# If you have a swap partition then disable it by editing /etc/fstab
# and use "sswap" or similar to wipe it out.

# Some filesystems such as ext4 reserve 5% of disk space
# for special use, for example for the /home directory.
# In such case sfill won't wipe out that free space. You
# can remove that reserved space with the tune2fs command.
# See http://superuser.com/a/150757
# and https://www.google.com/search?q=reserved+space+ext4+sfill

sudo tune2fs -m 0 /dev/sda1
sudo tune2fs -l /dev/sda1 | grep 'Reserved block count'

sudo sfill -vfllz /

# sfill with the -f (fast) option won't synchronize the data to
# make sure that all was actually written. Without the fast option
# it is way too slow, so doing another pass in some other way with
# synchronization. Unfortunately this does not seem to be perfect,
# as I've watched free space by running the "watch -n 1 df -hm"
# command and I could see that there was still some available space
# left (tested on a SSD drive).

dd if=/dev/zero of=zero.small.file bs=1024 count=102400
dd if=/dev/zero of=zero.file bs=1024
sync ; sleep 60 ; sync
rm zero.small.file
rm zero.file

sudo tune2fs -m 5 /dev/sda1
sudo tune2fs -l /dev/sda1 | grep 'Reserved block count'

1

Ho trovato una soluzione semplice che funziona su Linux e su MacOS. Spostati nella cartella principale del disco e avvia questo comando:

for i in $(seq 1 //DISKSPACE//); do dd if=/dev/zero of=emptyfile${i} bs=1024 count=1048576; done; rm emptyfile*;

dove // ​​DISKSPACE // è la dimensione in GB del disco rigido.


0

A volte uso questo bash one-liner:

while :; do cat /dev/zero > zero.$RANDOM; done

Quando inizia a dire che il disco è pieno, basta premere Ctrl+ Ce rimuovere i zero.*file creati .

Funziona su qualsiasi sistema, indipendentemente dai limiti di dimensione del file.
Ignora eventuali cat: write error: File too largeerrori.


0

Questa non è una risposta! Solo un commento per coloro che desiderano utilizzare pv... quindi non preoccuparti di votare.

Su Linux Mint 17.3 puoi usare pv( pipe view ) per ottenere progressi nella scrittura. Per esempio:

# Install pv (pipe view)
sudo apt-get install pv

# Write huge file of approximate size of /dev/sdb, using urandom data:
pv --timer --average-rate --progress --numeric --eta --interval 5 --size "$(blockdev --getsize64 /dev/sda )" /dev/urandom >rand.file

Il vantaggio qui è che si ottiene una barra di avanzamento, ETA e velocità dati costantemente aggiornata. Lo svantaggio è che questo è scritto su una riga e quando il disco è pieno (restituendo un errore) scompare. Ciò accade perché la dimensione intera è approssimativa poiché il sistema operativo utilizzerà probabilmente il disco durante questa operazione molto lunga, in particolare sul volume del sistema operativo.

Su un vecchio HD, ottengo una velocità di trasferimento dati di circa 13 MB / s utilizzando /dev/urandom, e circa 70 MB / s , quando si utilizza /dev/zero. Questo probabilmente migliorerebbe ulteriormente quando si utilizza un raw ddo cat, e non pv.


-13

Una volta che il file è stato cancellato dal record del file system, i dati che rimangono sul disco rigido sono una sequenza insignificante di 1 e 0. Se stai cercando di sostituire quella sequenza insignificante con un'altra sequenza insignificante, posso consigliare alcuni prodotti commerciali per la cancellazione sicura di unità, come l'Arconis.


22
Pezzi contigui di precedenti contenuti di file rimangono ancora sul disco e sono tutt'altro che privi di significato se i dati del disco grezzo vengono esaminati direttamente.
Alex B,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.