Come distruggere una cartella?


18

Voglio un comando per distruggere completamente il contenuto di una cartella / directory (che potrebbe trovarsi all'interno di cartelle / directory). Spiegare anche il comando.


Definire "distruggere". Se intendi semplicemente cosa fa il shredcomando, allora c'è la tua risposta.
psusi,

Molto strettamente correlati: askubuntu.com/questions/57572/…
Takkat

@ psusi- per brandello intendo eliminare il file oltre il recupero. stavo usando il comando shred ma dato che era applicabile solo ai file volevo un comando simile per eliminare cartelle e file al suo interno.
Ashu,

Quale svolge perfettamente il lavoro shredo secure-delete?
Ashu,

1
Per gli altri utenti che inciampano qui, attenzione che shred non è efficace come pensi perché i file system e l'hardware moderni non sovrascrivono i dati in atto, ma registrano le modifiche o li spostano per livellare l'usura. Correlati: unix.stackexchange.com/questions/27027/…
Mike Ounsworth,

Risposte:


27
  1. Installa il pacchetto secure-delete.
  2. Utilizzare il comando srm -r pathnameper rimuovere la cartella e i file.

Le impostazioni predefinite sono per 38 (!!!) passaggi di sovrascritture, il che è un imk eccessivo di overkill (vedi maggiori informazioni qui ).

Per il mio utilizzo, voglio solo un singolo passaggio di dati casuali, quindi uso srm -rfll pathname.

Se si desidera creare un'opzione di scelta rapida nella GUI per file e cartelle, utilizzare gnome-actions per chiamare uno script come questo:

#!/bin/bash
if dialog=`zenity --window-icon=warning --question --title="Secure Delete" --no-wrap --text="Are you sure you want to securely delete:\n\n     $1\n\nand any other files and folders selected? File data will be overwritten and cannot be recovered."` 
then /usr/bin/srm -fllrv "$@"| zenity --progress --pulsate --text="File deletion in progress..." --title="Secure Delete" --auto-close
fi 

Se vuoi impostazioni più paranoiche, assicurati di modificare lo script sopra.


1
-f fast (and insecure mode): no /dev/urandom, no synchronize mode. -l lessens the security (use twice for total insecure mode). potresti per favore spiegare queste due cose. 38 sovrascrive è l'impostazione predefinita in che modo influiscono sul valore "38". e perché ldue volte in-rfll
Ashu

2
OK, l'intero processo predefinito è: 1 passaggio con 0xff (azzeramento zero), 5 passaggi casuali con / dev / urandom vengono utilizzati per un RNG sicuro se disponibile, 27 passaggi con valori speciali definiti da Peter Gutmann, altri 5 passaggi casuali da / dev / random. Quindi rinominare il file in un valore casuale e troncare il file. IIRC, / dev / random è considerato un migliore sistema di generazione di numeri casuali. Usando -fll saltiamo i passaggi 1 + 5 + 27 + 5 e sostituiamo con un singolo passaggio di dati casuali, possibilmente da un generatore meno "veramente casuale".
Veazer,

@Ashu abbreviato dalla pagina man (Debian Jessie) per srm; (frist) -l: only two passes, (second) -l: only one pass. Per gli altri, -f: fast (Non-secure random bits)e -r: recursive. Consiglio anche vivamente -v: verbose. Suggerirei anche di eseguirlo in screenun'istanza, può richiedere parecchio tempo su molti dati.
ThorSummoner

1
Ho sostituito /usr/bin/srm -fllrvconbleachbit -s

8

Per i file non le directory, ecco un modo più semplice invece del -exec shred -u {} \;tipo di percorso:

cd to your directory.

poi

find . -type f -print0 | xargs -0 shred -fuzv -n 48

questo fa 48 passa ricorsivamente alla directory corrente in cui sei stato cdinserito.

Spero che questo aiuti alcuni.


Aggiungendo '-print0' per trovare e '-0' a xargs? Le directory possono avere spazi bianchi nei loro nomi.
debole il

Buona risposta ma perché usi xargs ?? Non capisco gli xargs.
Chinmaya B,

1

Shred funziona solo sui file. Devi prima distruggere i file in dir / subdirs e poi rimuovere le directory. provare

find [PATH_TO_DIR] 

e assicurati di vedere solo i file che desideri eliminare

find [PATH_TO_DIR] -exec shred -u {} \;

quindi rimuovere le directory con

rm -rf [PATH_TO_DIR]

puoi spiegare per favore {} \;. anche da qualche parte elsi avevo visto lo stesso comando del tuo ma era '{}' \;qual è la differenza tra i due ??
Ashu,

Poiché shred non funziona su directory, che ne dici di aggiungere l'opzione -type f ai comandi find?
andol

@ andol: sì, ci stavo pensando ..
Ashu

1
Non posso spiegarlo meglio della pagina man find .... il {} e \; fanno parte dell'opzione -exec della ricerca.
Ruediger,

1

Probabilmente vuoi usare qualcosa di simile a questo:

find dir -type f -exec shred -fuz {} +
rm -rf dir

Il primo comando trova solo i file e li passa a distruggere (il maggior numero possibile contemporaneamente - non è necessario avviare un nuovo processo di distruzione per ogni file come \; fa). Infine, rimuovi anche le directory.


1

sudo apt install wipe

$ wipe -rfi dir/*

dove hanno usato le bandiere: -r – tells wipe to recurse into subdirectories -f – enables forced deletion and disable confirmation query -i – shows progress of deletion process


0

Ho inserito il seguente script bash per questo scopo nel mio .bashrc

function rm2 {

  for var in $@
  do
  if [ -d $var ]
  then
     nohup $( /usr/bin/find "$var" -type f -exec  shred -n 2 -u -z -x {} \;;/bin/rm -rf "$var" ) & 
  else
    nohup /usr/bin/shred -x -n 2 -u -z "$var" & 
  fi
done
exit
}

-1

Quando devo distruggere più file o un'intera directory, shred -vzn 20 ./shredme/*.*ad esempio, uso semplicemente , che sovrascrive tutti i file con qualsiasi estensione nella cartella "shredme". Quindi è possibile utilizzare il comando rm -rf ./shredme standard per rimuovere la cartella stessa (o semplicemente fare clic con il pulsante destro del mouse ed eliminare la cartella) poiché tutti i dati sono stati sovrascritti 20 volte per questo esempio.

Ho fatto un rapido esempio di questo con un mucchio di immagini duplicate come esempio.

Screenshot del terminale

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.