Ich musste letztens eine größere Menge Festplatten ins Nirvana befördern hier meine zugegeben nicht perfekte aber deutlich arbeitserleichternde Methode… Wer sich über den Wust wundert, das sind gewachsene Strukturen 🙂
Ich kann mit diesem Skript im Grunde beliebig viele Festplatten parallel mit shred löschen und zum Abschluss noch die SMART Daten als .txt nach /var/www legen. Dabei fordert einen das Script dazu auf fertige Platten zu tauschen.
Wem es nützt der möge sich bedienen. Aber bitte mit verstand:
#!/bin/bash #Platte nuken und smart auslesen mit hotswap #bitte mit vorsicht verwenden dieses skript ist dafür gemacht daten zu vernichten! #Seriennummer der Systemplatte (wird nicht angefasst) Alle anderen Schon! SYSTEMDRIVE="PVF904ZFR3RTWN" #Anzahl der zu startenden Jobs JOBS=3 #SMAR Daten Zielverzeichnis SMARTFOLDER=/var/www #Tempverzeichnis anlegen TEMPDIR=/tmp/hddclean #TEMPDIR=$(mktemp -d) if [[ $EUID -ne 0 ]]; then echo "This script must be run as root" 1>&2 exit 1 fi mkdir -p $TEMPDIR echo "Warning this script was designed to destroy data! (Hopefully the right)..." read -p "Press any key to continue... " nuke_instance() { jobnr=$1 while true; do sleep $jobnr for HOSTA in /sys/class/scsi_host/host?/scan; do echo "- - -" > $HOSTA done for PLADDE in /dev/sd?; do if [[ $(mkdir $TEMPDIR/$(basename $PLADDE) 2>&1) ]]; then echo Job $jobnr: $PLADDE is locked... sleep 1 else echo Job $jobnr: Working on $PLADDE... SERIAL=$(smartctl -a $PLADDE | grep "Serial Number" | tr -d " " | cut -d":" -f2) sleep $jobnr if [ $SERIAL ]; then if [[ $(mkdir $TEMPDIR/$SERIAL 2>&1) ]]; then echo Job $jobnr: $SERIAL is locked... else if [ $SERIAL == $SYSTEMDRIVE ]; then echo Job $jobnr: $PLADDE is my system disk no way... rm -rf $TEMPDIR/$SERIAL else if [ -e $SMARTFOLDER/$SERIAL.txt ];then echo Job $jobnr: $PLADDE is already done... please replace disk $SERIAL! echo 1 > /sys/block/$(basename $PLADDE)/device/delete && rm -rf $TEMPDIR/$SERIAL else echo Job $jobnr: $PLADDE with serial number $SERIAL will be nuked now... shred $PLADDE -f -z -n1 smartctl -a $PLADDE > $SMARTFOLDER/$SERIAL.txt echo 1 > /sys/block/$(basename $PLADDE)/device/delete && rm -rf $TEMPDIR/$SERIAL fi fi fi else echo Job $jobnr: no disk to work on! fi rm -rf $TEMPDIR/$(basename $PLADDE) fi done sleep 300 done } for inst in $(seq 1 $JOBS); do nuke_instance $inst & done
p.s. Ich bin nicht schuld wenn sich irgend jemand die falschen Daten weg schießt…