This is a short linux bash script I wrote that’s adequate for zero’ing a filesystem for on-premise server storage.
Note that the only “secure erase” is to destroy the physical drive because of various internal disk-level caches.
To do multiple passes (in this case 10 passes):
# seq 1 10 | xargs ./zero.sh
#!/bin/bash # Program: zero.sh # Purpose: write on pass of zeros in free space on current volume. # Date: 2017 10 28 # Author: James Briggs, USA # Usage: cd "filesystem"; screen ./zero.sh # Env: CentOS 6,7 bash # Notes: # This program is write-intensive, so not recommended for SSD or Flash drives unless disk wear is ok # This is not a secure erase, but is ok for on-premise storage. outfile=zero sz=1G delay=0 n=1 err="" # cleanup after previous runs /bin/rm -f *.zero.bin "$0.out" /bin/sync # while [ "$n" -le "4" ]; do while true; do /bin/echo "$0: writing chunk #$n of $sz ..." /bin/dd if=/dev/zero of="$outfile-$n.zero.bin" oflag=nocache bs=$sz count=1 conv=fsync || let err="yes" /bin/echo "$0: syncing chunk #$n of $sz ..." /bin/sync [ -n "$err" ] && break sleep $delay let n++ done /bin/echo "$0: deleting $n chunks of $sz ..." /bin/rm *.zero.bin /bin/echo "$0: syncing filesystem after chunk deletions ..." /bin/sync msg="done zeroing current volume with $n chunks of $sz." /bin/echo "$0: $msg" /bin/echo "$0: `/bin/date` $msg" > "$0.out" exit 0
A one-line log file is written:
# cat zero.sh.out ./zero.sh: Sun Oct 29 04:16:30 UTC 2017 done zeroing current volume with 12 chunks of 1G.
github: redeemer