erase-disk.sh: add --crypy-prep flag

This commit is contained in:
the_4n0nym0u53 2022-03-06 16:50:10 +01:00
parent 246e1ca9eb
commit 6dc6ca0e3f
No known key found for this signature in database
GPG Key ID: 35EE09F5481049BB
1 changed files with 20 additions and 10 deletions

View File

@ -7,11 +7,12 @@ usage() {
echo "Securely erase DEVICE with PASSES passes"
echo
echo "Flags:"
echo " -h, --help \tDisplay this help message"
echo " -h, --help \t\tDisplay this help message"
echo " -c, --crypt-prep \tPrepare DEVICE for encryption"
echo
echo "Options:"
echo " DEVICE \tThe device to erase"
echo " PASSES \tHow many times to erase DEVICE"
echo "Options (must come after flags):"
echo " DEVICE \t\tThe device to erase"
echo " PASSES \t\tHow many times to erase DEVICE"
echo
echo "This script will securely erase a disk device with the specified amount"
echo "of passes (rounds). It does so by overwriting the specified device with"
@ -22,36 +23,45 @@ usage() {
echo "erase-disk.sh is licensed under The Unlicense."
}
CRYPT=0
[ "$1" = "-h" -o "$1" = "--help" ] && usage && exit 0
[ "$1" = "-c" -o "$1" = "--crypt-prep" ] && CRYPT=1 && shift
if [ $# -lt 2 ]; then
echo "ERROR: Not enough options!"
echo "=> ERROR: Not enough options!"
echo
usage
exit 1
elif [ $# -gt 2 ]; then
echo "ERROR: Too many options!"
echo "=> ERROR: Too many options!"
echo
usage
exit 1
elif [ $(id -u) -ne 0 ]; then
echo "ERROR: Must run as root!"
echo "=> ERROR: Must run as root!"
echo
usage
exit 1
fi
echo "# Securely erasing the disk device $2"
echo "=> Securely erasing the disk device $2"
i=1
while [ $i -le $1 ]; do
[ $i -eq 1 ] && if="/dev/urandom" || if="/dev/zero"
[ $CRYPT -eq 1 -a $i -eq $1 ] && if="/dev/urandom"
echo "\n- Begin pass $i with $if"
echo "\n -> Begin pass $i with $if"
dd if="$if" of="$2" status="progress"
echo "- Syncing I/O"
echo "\n -> Syncing I/O"
sync
i=$(( i + 1 ))
done
echo -n "\n=> Done! $2 securely erased"
[ $CRYPT -eq 1 ] && echo -n " and prepared for encryption"
echo "."