From Christoph's Personal Wiki
Jump to: navigation, search

shred is a command-line utility to overwrite a file to hide its contents, and optionally delete it. It overwrites the specified FILE(s) repeatedly, in order to make it harder for even very expensive hardware probing to recover the data. It was written by Colin Plumb.


  • shred [OPTIONS] FILE [...]


Mandatory arguments to long options are mandatory for short options too.

-f, --force 
change permissions to allow writing if necessary
-n, --iterations=N 
Overwrite N times instead of the default (25)
-s, --size=N 
shred this many bytes (suffixes like K, M, G accepted)
-u, --remove 
truncate and remove file after overwriting
-v, --verbose 
show progress
-x, --exact 
do not round file sizes up to the next full block; this is the default for non-regular files
-z, --zero 
add a final overwrite with zeros to hide shredding
display this help and exit
output version information and exit

If FILE is -, shred standard output.

Delete FILE(s) if --remove (-u) is specified. The default is not to remove the files because it is common to operate on device files like /dev/hda, and those files usually should not be removed. When operating on regular files, most people use the --remove option. CAUTION: Note that shred relies on a very important assumption: that the file system overwrites data in place. This is the traditional way to do things, but many modern file system designs do not satisfy this assumption. The following are examples of file systems on which shred is not effective, or is not guaranteed to be effective in all file system modes:

  • log-structured or journaled file systems, such as those supplied with AIX and Solaris (and JFS, ReiserFS, XFS, Ext3, etc.)
  • file systems that write redundant data and carry on even if some writes fail, such as RAID-based file systems
  • file systems that make snapshots, such as Network Appliance’s NFS server
  • file systems that cache in temporary locations, such as NFS version 3 clients
  • compressed file systems

In the case of ext3 file systems, the above disclaimer applies (and shred is thus of limited effectiveness) only in data=journal mode, which journals file data in addition to just metadata. In both the data=ordered (default) and data=writeback modes, shred works as usual. Ext3 journaling modes can be changed by adding the data=something option to the mount options for a particular file system in the /etc/fstab file, as documented in the mount man page (man mount).

In addition, file system backups and remote mirrors may contain copies of the file that cannot be removed, and that will allow a shredded file to be recovered later.

The full documentation for shred is maintained as a Texinfo manual. If the info and shred programs are properly installed at your site, the command

info shred

should give you access to the complete manual.


It can be useful to create an alias for shred in your ~/.bashrc file:

alias shred='shred -z -v --remove'

This will completely wipe the file (i.e. add a final overwrite with zeros to hide shredding (z), show progress (v), and truncate and remove file after overwriting).

Now you can simply "shred" any file you wish. For an example,

shred *.htm

See also

  • dd — can be used for system-wide or entire HDD wipe/deletion.
  • ddrescue — a data recovery tool. It copies data from one file or block device (hard disc, cdrom, etc) to another, trying hard to rescue data in case of read errors.

External links