Festplatten sicher löschen

Festplatten sicher löschen, also so dass man den Computer oder Laptop sicher weiterverkaufen kann, ist eine knifflige Sache. Einfach löschen reicht nicht, formatieren auch nicht. Weil bei beidem sind die Daten noch da, und können relativ einfach wiederhergestellt werden.

Um sicher zu gehen, dass nichts wiederhergestellt werden kann, muss man die Festplatte überschreiben, Und zwar am besten mehrmals und das ganze auch noch mit mehr als nur Nullen.

Man kann dazu entweder ein Tool wie DBAN nutzen, eine Live-CD die fürs löschen von Festplatten gemacht wurde. Oder aber mann nimmt eine normale Linux Live-CD, bootet von der und nutzt einen der folgenden drei Befehle:

dd bs=1M if=/dev/zero of=/dev/sd#

Dieser Befehl überschreibt die Festplatte mit Nullen (sd# durch die passende Festplatte ersetzen).

dd bs=1M if=/dev/urandom of=/dev/sd#

Dieser Befehl überschreibt die Festplatte mit Zufallswerten (sd# durch die passende Festplatte ersetzen).

badblocks -wvs /dev/sd#

Dieser Befehl ist eigentlich dazu da, die Festplatte auf defekte Blöcke zu überprüfen. Mit diesen Optionen aber wird jeder Block der Festplatte vier mal mit verschiedenen Mustern (0xaa, 0×55, 0xff, 0×00) überschrieben und, was für unseren Anwendungsfall unnötig ist, wieder ausgelesen (sd# durch die passende Festplatte ersetzen).

Quelle: superuser.com

Update

Ich möchte, nachdem ich auf Twitter zu Recht darauf hingewiesen wurde klarstellen, dass das nur für normale Festplatten gilt. Für SSD’s sieht die Sache etwas anders aus. Hierfür bitte Google konsultieren, oder z.B. diesen Artikel lesen.

Alte Kernel-Images, Header und Module mit nur einem Befehl entfernen

Weil eben sehr hilfreich, möchte ich mir das hier gleich merken:

dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs sudo apt-get -y purge

Ich habe eben >1GB damit freigeschaufelt. Das Original gibts hier, gefunden bei Christoph.

 

Natürlich solltet ihr überprüfen, was apt-get entfernen wird! Z.B. kams bei mir schon vor dass er build-essential entfernte.

26.08.13 Update
Die Befehlszeile war falsch und hat so nicht funktioniert. Der Blog hatte einige Sonderzeichen verschluckt. Sollte jetzt korrigiert sein.

Ganz einfach ein Verzeichniss per http sharen

Ich nutze diesen Einzeiler zwar unter Linux, aber ich denke er müsste unter Mac OS X und Windows (sofern python installiert ist) auch funktionieren:

python -m http.server

Dieser Befehl startet einen einfachen HTTP Server, der das aktuelle Verzeichnis, in dem der Befehl ausgeführt wurde, mitsamt allen Unterverzeichnissen auf Port 8000 zur Verfügung stellt. Ich erinnere mich leider nicht mehr, woher ich das habe. Und noch etwas: Mit Python 3 wird es so nicht mehr funktionieren (vgl. hier: “The BaseHTTPServer module has been merged into http.server in Python 3.0“).

Regelmässige MySQL Backups erstellen

Nach dem ich an dieser Stelle schon über MySQL Dumps geschrieben habe, möchte ich euch mal noch ein kleines Script vorstellen, mit dem ich auf diversen Servern regelmässige MySQL-Dumps mache:

#!/bin/sh
BACKDIR="/export/backup/mysql"
BACKEXT="sql.bz2"
OLDEXT="sql.bz2.old"

BACKFILE=backup

for i in $(mysqlshow -u backup | grep -v "^+" | grep -v Databases | cut -d " " -f 2 | grep -v information_schema);
do
    mysqldump -u backup --opt -Q $i | bzip2 -c > $BACKDIR/$i.neu
    if [ -f $BACKDIR/$i.$BACKEXT ] ; then
        cmp $BACKDIR/$i.neu $BACKDIR/$i.$BACKEXT > /dev/null 2>&1
        if [ $? != 0 ] ; then
            mv $BACKDIR/$i.$BACKEXT $BACKDIR/$i.$OLDEXT
            chmod 600 $BACKDIR/$i.$OLDEXT
        fi
    fi
    mv $BACKDIR/$i.neu $BACKDIR/$i.$BACKEXT
    chmod 600 $BACKDIR/$i.$BACKEXT
done

Das Script macht einzelne Dumps jeder Datenbank auf dem Server. Es setzt voraus dass es einen User namens “Backup” gibt, der die passenden Rechte hat, und macht die Backups in /export/backup/mysql. Die Backups werden mit Bzip2 komprimiert und man hat immer den aktuellen ump plus den davor vorrätig (das Script rotiert die Backups durch).

Nutzt es auf eigene Gefahr ;-)

Linux: MySQL-Dumps erstellen und wieder laden

Weil ich’s diese Woche gerade gebraucht habe, und selber hier nachsehen musste:

Einen MySQL-Dump erstellen:
/pfad/zu/mysqldump -u$DBUSER -p$DBPASSWD -h$DBHOST $DATABASE > $FILENAME

Was ich diese Woche dann benötigte: Einen MySQL Dump auch wieder einlesen:
/pfad/zu/mysql -u $DBUSER -p$DBPASSWD --database=$DATABASE < $FILENAME

Mehr dazu (z.B. UTF8 und MySQLHotCopy) gibts unter obigem Link, oder im MySQL 5.1 Referenzhandbuch.