disk-wiper v1.3 [18 Mar 2016] by Dominic
A Linux/GNU program to securely wipe, repartition and reformat, and then check disk drive[s] - typical usage scenario is before reselling or discarding a drive. Please be very careful when specifying the drive to be used; otherwise you may lose your data or hose your system!
disk-wiper.sh uses various open source utilities (primarily shred and badblocks) and is designed for wiping spinning-platter disks whether connected by USB, SATA, or PATA/IDE (I believe that for an SSD or flash drive the shredding action may be a waste of time and will shorten the life of the disk). The machine does not need to be rebooted before or after disk-wiper.sh runs, and you can continue using the machine while it runs. All partitions on the selected drive(s) must be unmounted.
disk-wiper.sh (which must run as root) shreds, repartitions and reformats whole disk drive(s) - including wiping the master boot record (MBR) - and then checks them for bad blocks. Shredding is the process of repeatedly writing random data to the drive so that any previous data on it cannot be recovered. Bad blocks are unreliable physical areas of the disk and although they can be identified and 'blocked' - which is done by this program - they are usually a sign of impending wider problems with the drive.
disk-wiper.sh may take a long time to complete. On my machine with a 320GB drive attached by USB2.1, and using the default options (i.e. perform shredding and bad-block checking), it needed 20.5 hours. While the initial 3 shredding passes are in progress you may be able to estimate the total time by calculating the expected time to complete one pass and multiplying by 8.7. I suggest you run it inside a screen session.
After running with a report of no bad blocks (exit code 0), the disk(s) can be regarded as being in perfect working order and passed to a third party as working drive(s) without fear of data recovery in normal circumstances (i.e. recovery would be difficult and limited at best - even with substantial resources).
Warning! disk-wiper.sh is not compatible with GPT-based disks!
0 No problems, completed successfully, no bad blocks found
1 Illegal option specified on command line
2 Aborted by user at initial stage, or timed out without running
3 One or more bad blocks encountered on a drive
4 A fatal problem occurred shredding a drive
5 A fatal problem occurred partitioning a drive or wiping MBR
6 A fatal problem occurred checking drive partitioning
7 A fatal problem occurred reformatting a drive
8 A fatal problem occurred checking the drive for bad blocks
disk-wiper.sh [options] disk1 [disk2] [disk3] [disk4] [disk5]
disk-wiper.sh -t ext3 /dev/sdb /dev/sdc
-f - skip warning question at beginning
-h - show help and exit
-l - show changelog and exit
-q - quiet, suppress most non-error output
-s - skip disk shredding (faster, unprotected vs data theft) - note that the drive will still be wiped, repartitioned and reformatted
-t format - specify format as ext2/ext3/ext4 (default: ext4)
-x - skip bad-block check (faster, may leave undetected faults)
awk bash badblocks cat dumpe2fs e2fsck grep lsblk [mdadm] mke2fs partprobe [pvs] sed sfdisk shred (but runs ok without dependencies in square brackets, others are checked at runtime)
Copyright 2016 Dominic Raferd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0. Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
1.3 [18 Mar 2016] - stop if attempt is made to operate on disk with GPT partition table
1.2 [18 Jun 2015] - add mbr-wiping, remove DOS-compatible partitioning (sfdisk -D), improved help, add changelog, remove usb-suspend code (which no longer works in current kernels)
1.0810 [10 Aug 2012] - long-standing version
- TimeDicer - Onsite/offsite data backup for Windows (uses rdiff-backup)
- Finding a 4D Backup Solution
- Web Scraping How To - extracting data from web sites
Here is a selection of some (other) programs I have written, most of which run from the command line (CLI), are freely available and can be obtained by clicking on the links. Dependencies are shown and while in most cases written for a conventional Linux server, they should run even on a Raspberry Pi, and many can run under Windows using Cygwin. Email me if you have problems or questions, or if you think I could help with a programming requirement.
- TimeDicer - Onsite/offsite data backup for Windows (uses rdiff-backup) [ GNU/Linux & MS Windows©: 2008-16 ]
- rdiffweb-install - GNU/Linux script to install rdiffWeb. [ GNU/Linux: 2011-16 ]
- rdiff-backup-regress - GNU/Linux script to regress an rdiff-backup archive. [ GNU/Linux: 2012-16 ]
Debian/Ubuntu kernel and LVM Utilities
- kernel-remove - GNU/Linux script to list the installed GNU/Linux kernels in a Debian-based distro (e.g. Ubuntu), and can be used to remove an unwanted kernel and related packages, updating grub appropriately. (Ubuntu Tweak can do the same but kernel-remove.sh is a command-line script so does not require GUI.) [ GNU/Linux-Debian/Ubuntu: 2010-15 ]
- kernel-update - GNU/Linux script to install/update Ubuntu kernel (also optionally btrfs-progs and duperemove) with latest version. [ GNU/Linux-Ubuntu: 2015-16 ]
- lvm-usage - GNU/Linux script to show available disk space and how it is used; run as cron job to warn if usage is above a set percentage. Provides additional information if LVM is in use. [ GNU/Linux-Debian/Ubuntu: 2012-16 ]
- lvm-delete-snapshot - GNU/Linux script to remove LVM snapshot that has been left over by another process. [ GNU/Linux-Debian/Ubuntu: 2012-16 ]
Dellmont / Three / Giffgaff / Vodafone - VoIP and Mobile Phone Account Utilities
- dellmont-credit-checker - GNU/Linux script to check credit balance on many Dellmont / Finarea / Betamax portals such as voicetrading.com and voipdiscount.com. [ GNU/Linux: 2008-17 ]
- sms-sender - GNU/Linux script to send text messages using Dellmont’s voicetrading.com. [ GNU/Linux: 2012-16 ]
- get-vt-cdrs - GNU/Linux script to download CDRs (call detail records) from Dellmont’s voicetrading.com or voippro.com. [ GNU/Linux: 2010-17 ]
- saynoto0870 - For people in UK, a GNU/Linux script which performs automated lookup of the www.saynoto0870.com database, finding cheap or free geographic number replacements for expensive non-geographic (087* or 084*) numbers. [ GNU/Linux: 2012-12 ]
- three-credit-checker - GNU/Linux script which checks credit/calls/text/data remaining on a mobile phone account with three.co.uk. [ GNU/Linux: 2014-16 ]
- giffgaff-credit-checker - GNU/Linux script which checks credit/calls/text/data remaining on a mobile phone account with giffgaff.com. [ GNU/Linux: 2014-17 ]
- vodafone-compile-bills - GNU/Linux script which reprocesses downloaded call record 'csv' files from vodafone.co.uk so that they can be easily analysed via spreadsheet - including analysis of bundled minutes which even Vodafone do not seem able to perform! [ GNU/Linux: 2012-16 ]
- sleepwalker - Windows© program which can be run from a remote machine to 'wake up' a Windows© machine behind a router, wait for it to start and then initiate Remote Desktop session. [MS Windows©: 2008-14]
- pass - GNU/Linux local program for easy entering of decrypt passphrase on a remote machine which has root dm-crypt+LUKS. [ GNU/Linux: 2017-17 ]
- unlock - GNU/Linux remote program for easy entering of decrypt passphrase on a remote machine which has root dm-crypt+LUKS. [ GNU/Linux: 2017-17 ]
- nano-update - GNU/Linux program to check/configure/make/install editor nano to the latest stable version found at http://www.nano-editor.org. [ GNU/Linux: 2015-16 ]
- pdf-compress - GNU/Linux program to create smaller b/w pdf file from an original large pdf file, especially when original resulted from scanning. [ GNU/Linux: 2016-17 ]
- form-extractor - GNU/Linux program to extract form tags from a web page or downloaded file. [ GNU/Linux: 2012-16 ]
- 123-dns-manager - GNU/Linux program for automated 123-Reg.co.uk Advanced DNS management. [ GNU/Linux: 2016-17 ]
- 123-dns-sync - GNU/Linux program to update DNS record at 123-Reg.co.uk to match external ip. [ GNU/Linux: 2016-17 ]
- recover-space - GNU/Linux program to enable a virtual disk volume to be compacted. [ GNU/Linux: 2014-15 ]
- tiny-device-monitor - GNU/Linux program to test webpages (including password-protected) or machines to check they are live; use as a cron job for your own websites, for hardware presenting a webpage, or for any machines with a presence on your local LAN or on the internet. [ GNU/Linux: 2009-16 ]
- dutree - GNU/Linux program to show a tree-style list of files and directories at the specified location and greater than the specified size (default 1GB). [ GNU/Linux: 2012-15 ]
- myip-upload - GNU/Linux and Windows (Cygwin) script to obtain external ip and upload it to remote site/file by ftp. [ GNU/Linux & MS Windows©: 2014-16 ]
- man2text - GNU/Linux one-liner program to convert man page output to straightforward text. [ GNU/Linux: 2012-12 ]
- Accounts - Multi-business multi-currency accounting software, uses Access [MS Windows©: 1996-2016]
- Rents Program - Residential lettings/landlord front office program, with many special features for UK market [MS Windows©: 1991-2016]