Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.

I want a command to shred completely the contents of a folder/directory (which may be inside folders/directories). Also please explain the command.

share|improve this question
    
Define "shred". If you just mean what the shred command does, then there's your answer. –  psusi Apr 16 '12 at 13:17
    
Very closely related: askubuntu.com/questions/57572/… –  Takkat Apr 16 '12 at 13:41
    
@psusi- by shred i mean delete file beyond recovery. i was using the shred command but as that was applicable only to files i wanted a similar command to delete folders and files within it. –  Ashu Apr 16 '12 at 14:30
    
Which one does the job perfectly shred or secure-delete? –  Ashu Apr 16 '12 at 14:32
    
both of the solutions work for me but i think the srm one is easier. –  Ashu Apr 18 '12 at 17:00

4 Answers 4

up vote 8 down vote accepted
  1. Install the package 'secure-delete'
  2. Use the command 'srm -r pathname' to remove your folder and files

The default settings are for 38 (!!!) passes of overwrites which is extreme overkill imho (see more info about this here: http://www.anti-forensics.com/disk-wiping-one-pass-is-enough.

For my usage, I only want a single pass of random data so I use 'srm -rfll pathname'

If you want to create a right-click option in the GUI for files and folders, use gnome-actions to call a script like this:

#!/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 

If you want more paranoid settings be sure to modify the above script.

share|improve this answer
1  
-f fast (and insecure mode): no /dev/urandom, no synchronize mode. -l lessens the security (use twice for total insecure mode). could you please explain these two things. 38 overwrites is default how do these affect the '38' value. and why l two times in -rfll –  Ashu Apr 16 '12 at 14:57
1  
OK, the whole default process is: 1 pass with 0xff (a zero wipe), 5 random passes with /dev/urandom is used for a secure RNG if available, 27 passes with special values defined by Peter Gutmann, another 5 random passes from /dev/random. Then rename the file to a random value & truncate the file. IIRC, /dev/random is considered a better random number generation system. Using -fll we skip the 1+5+27+5 passes and substitute with a single pass of random data, possibly from a less "truly random" generator. –  Veazer Apr 16 '12 at 18:16

Shred works only on files. You need to shred the files in the dir/subdirs first and then remove the directories. try

find [PATH_TO_DIR] 

and make sure you only see the files you want to delete

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

then remove the dirs with

rm -rf [PATH_TO_DIR]
share|improve this answer
    
can u please explain {} \; . also somewhere elsi i had seen the same command as your but it was '{}' \; what is the difference between the two?? –  Ashu Apr 16 '12 at 14:43
    
Since shred doesn't work on directories, how about adding the option -type f to the find commands? –  andol Apr 16 '12 at 15:49
    
@ andol : yeah i was thinking of that.. –  Ashu Apr 16 '12 at 18:35
    
Cant explain it any better than the find man page .... the {} and \; are part of the -exec option of the find. –  Ruediger Apr 16 '12 at 20:03

For files not directories, here's a more simple way instead of -exec shred -u {} \; type of way:

cd to your directory.

then

find -iname "*" -type f | xargs shred -fuzv -n 48

this does 48 passes recursively to the current directory you cd'ed into.

Hope this helps some.

share|improve this answer
    
Adding '-print0' to find and '-0' to xargs? Directories may have whitespace in their names. –  weakish Jul 27 '13 at 15:03

You probably want to use something similar to this:

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

First command finds only files and passes them to shred (as many at once as possible - no need to start a new shred process for every file like \; does). Finally, remove the directories too.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.