summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorPádraig Brady <P@draigBrady.com>2013-11-07 17:00:56 +0000
committerPádraig Brady <P@draigBrady.com>2013-11-27 01:43:12 +0000
commit569b4edd18cddb5a8cc1f9549a7c1eed91b674f7 (patch)
tree00acb5a1a0da66ae42e6b61f2befd144c716f466 /doc
parentba6582e95ce2a041423e1ff34c93abe7b4702332 (diff)
downloadcoreutils-569b4edd18cddb5a8cc1f9549a7c1eed91b674f7.tar.xz
shred: provide --remove methods to avoid excessive syncing
A sync operation is very often expensive. For illustration I timed the following python script which indicated that each ext4 dir sync was taking about 2ms and 12ms, on an SSD and traditional disk respectively. import os d=os.open(".", os.O_DIRECTORY|os.O_RDONLY) for i in range(1000): os.fdatasync(d) So syncing for each character for each file can result in significant delays. Often this overhead is redundant, as only the data is sensitive and not the file name. Even if the names are sensitive, your file system may employ synchronous metadata updates, which also makes explicit syncing redundant. * tests/misc/shred-remove.sh: Ensure all the new parameters actually unlink the file. * doc/coreutils.texi (shred invocation): Describe the new parameters to the --remove option. * src/shred.c (Usage): Likewise. (main): Parse the new options. (wipename): Inspect the new enum to see which of the now optional tasks to perform. * NEWS: Mention the new feature. * THANKS.in: Add reporter Joseph D. Wagner
Diffstat (limited to 'doc')
-rw-r--r--doc/coreutils.texi15
1 files changed, 14 insertions, 1 deletions
diff --git a/doc/coreutils.texi b/doc/coreutils.texi
index c7258ff5d..7a5023101 100644
--- a/doc/coreutils.texi
+++ b/doc/coreutils.texi
@@ -9563,12 +9563,25 @@ the whole file. @var{bytes} can be followed by a size specification like
@samp{K}, @samp{M}, or @samp{G} to specify a multiple. @xref{Block size}.
@item -u
-@itemx --remove
+@itemx --remove[=@var{how}]
@opindex -u
@opindex --remove
+@opindex --remove=unlink
+@opindex --remove=wipe
+@opindex --remove=wipesync
@cindex removing files after shredding
After shredding a file, truncate it (if possible) and then remove it.
If a file has multiple links, only the named links will be removed.
+Often the file name is less sensitive than the file data, in which case
+the optional @var{how} parameter gives control of how to more efficiently
+remove each directory entry.
+The @samp{unlink} parameter will just use a standard unlink call,
+@samp{wipe} will also first obfuscate bytes in the name, and
+@samp{wipesync} will also sync each obfuscated byte in the name to disk.
+Note @samp{wipesync} is the default method, but can be expensive,
+requiring a sync for every character in every file. This can become
+significant with many files, or is redundant if your file system provides
+synchronous metadata updates.
@item -v
@itemx --verbose