I have used DD to overwrite a file with random data, shred is another alternative. This tool comes installed by defaut on most Linux distros. The only limitation is that it cannot secure erase the actual folders, this only works on files. To shred fles recursively throgh folders and sub-folders you have to use the -exec paramter, below is an example.
Shred options:
-z :add a final overwrite with zeros to hide shredding
-v :show progress
-u :truncate and remove file after overwriting
-n :overwrite N times instead of the default (3)
Secure erase a single file with Shred
[root@centos scrub-2.2]# shred -zvu -n 5 /tmp/test.txt
shred: /tmp/test.txt: pass 1/6 (random)...
shred: /tmp/test.txt: pass 2/6 (000000)...
shred: /tmp/test.txt: pass 3/6 (random)...
shred: /tmp/test.txt: pass 4/6 (ffffff)...
shred: /tmp/test.txt: pass 5/6 (random)...
shred: /tmp/test.txt: pass 6/6 (000000)...
shred: /tmp/test.txt: removing
shred: /tmp/test.txt: renamed to /tmp/00000000
shred: /tmp/00000000: renamed to /tmp/0000000
shred: /tmp/0000000: renamed to /tmp/000000
shred: /tmp/000000: renamed to /tmp/00000
shred: /tmp/00000: renamed to /tmp/0000
shred: /tmp/0000: renamed to /tmp/000
shred: /tmp/000: renamed to /tmp/00
shred: /tmp/00: renamed to /tmp/0
shred: /tmp/test.txt: removed
[root@centos tmp]#
Secure erase multiple files recursively
-The below command will start shredding all files located in /tmp/test/ folder and all sub-folders.
[root@localhost test2]# find /tmp/test/ -type f -exec shred -vzu -n 5 {} \;
shred: /tmp/test/tests.txt: pass 1/6 (random)...
shred: /tmp/test/tests.txt: pass 2/6 (ffffff)...
shred: /tmp/test/tests.txt: pass 3/6 (random)...
shred: /tmp/test/tests.txt: pass 4/6 (000000)...
shred: /tmp/test/tests.txt: pass 5/6 (random)...
shred: /tmp/test/tests.txt: pass 6/6 (000000)...
shred: /tmp/test/tests.txt: removing
shred: /tmp/test/tests.txt: renamed to /tmp/test/000000000
shred: /tmp/test/000000000: renamed to /tmp/test/00000000
shred: /tmp/test/00000000: renamed to /tmp/test/0000000
shred: /tmp/test/0000000: renamed to /tmp/test/000000
shred: /tmp/test/000000: renamed to /tmp/test/00000
shred: /tmp/test/00000: renamed to /tmp/test/0000
shred: /tmp/test/0000: renamed to /tmp/test/000
shred: /tmp/test/000: renamed to /tmp/test/00
shred: /tmp/test/00: renamed to /tmp/test/0
shred: /tmp/test/tests.txt: removed
shred: /tmp/test/test2/tdd.txt: pass 1/6 (random)...
shred: /tmp/test/test2/tdd.txt: pass 2/6 (ffffff)...
shred: /tmp/test/test2/tdd.txt: pass 3/6 (random)...
shred: /tmp/test/test2/tdd.txt: pass 4/6 (000000)...
shred: /tmp/test/test2/tdd.txt: pass 5/6 (random)...
shred: /tmp/test/test2/tdd.txt: pass 6/6 (000000)...
shred: /tmp/test/test2/tdd.txt: removing
shred: /tmp/test/test2/tdd.txt: renamed to /tmp/test/test2/0000000
shred: /tmp/test/test2/0000000: renamed to /tmp/test/test2/000000
shred: /tmp/test/test2/000000: renamed to /tmp/test/test2/00000
shred: /tmp/test/test2/00000: renamed to /tmp/test/test2/0000
shred: /tmp/test/test2/0000: renamed to /tmp/test/test2/000
shred: /tmp/test/test2/000: renamed to /tmp/test/test2/00
shred: /tmp/test/test2/00: renamed to /tmp/test/test2/0
shred: /tmp/test/test2/tdd.txt: removed
shred: /tmp/test/test.txt: pass 1/6 (random)...
shred: /tmp/test/test.txt: pass 2/6 (000000)...
shred: /tmp/test/test.txt: pass 3/6 (random)...
shred: /tmp/test/test.txt: pass 4/6 (ffffff)...
shred: /tmp/test/test.txt: pass 5/6 (random)...
shred: /tmp/test/test.txt: pass 6/6 (000000)...
shred: /tmp/test/test.txt: removing
shred: /tmp/test/test.txt: renamed to /tmp/test/00000000
shred: /tmp/test/00000000: renamed to /tmp/test/0000000
shred: /tmp/test/0000000: renamed to /tmp/test/000000
shred: /tmp/test/000000: renamed to /tmp/test/00000
shred: /tmp/test/00000: renamed to /tmp/test/0000
shred: /tmp/test/0000: renamed to /tmp/test/000
shred: /tmp/test/000: renamed to /tmp/test/00
shred: /tmp/test/00: renamed to /tmp/test/0
shred: /tmp/test/test.txt: removed
[root@localhost test2]#