Festplattenabbild mittelsNetcat

auf einen entfernten Rechner sichern

Zur Sicherung einer gesamten Festplatte zum Beispiel in einem Notebook kann man bequem einen anderen Rechner im Netz verwenden. Den Notebook mit PXE oder mit GRML CD booten und folgendes Script dort hin kopieren /usr/local/bin/netcat-image-backup:


download

#!/bin/bash
DATUM=$(date -I)
SOURCE_DEVICE=/dev/hda
TARGET_HOST=caminus
TARGET_IMAGE=/root/backupdir/$(hostname)-${DATUM}$( echo $SOURCE_DEVICE|tr "/" "_").gz
LOG=dvd-backup.log
#  ---------- nothing to configure below here -----------
EM="\033[1m\033[31m"  # Farbe
CN="\033[0m"          # Normal
NC_PORT=4444
DELAY=20   # [s] Verzögerung bis zum Start der Übertragung, zum einloggen auf dem Zielrechner
echo "$DATUM;$BACKUP_PATH to $TARGET_HOST">>$LOG
#
echo " "
echo "Sicherung der Festplatte auf $TARGET_HOST."
echo " Zielpfad: $TARGET_HOST:$TARGET_IMAGE"
echo -e "$EM   in ${DELAY}s geht es los, bis starten wir netcat auf dem Zielhost...$CN"
echo " "
# remote netcat im listenmode starten
ssh root@$TARGET_HOST "netcat -l -p 4444 > $TARGET_IMAGE "&
echo "... netcat auf $TARGET_HOST im Hintergrund gestartet.."
sleep $DELAY
echo "los gehts..."
dd if=$SOURCE_DEVICE |gzip -9|netcat $TARGET_HOST 4444

Auf dem Notebook wird dann in einer Shell das Script gestartet. Dieses baut eine Verbindung zum Zielrechner auf und startet dort im Hintergrund ein netcat-Empfang, der in eine Datei ausgibt. Danach wird die gesamte Festplatte wird komprimiert per netcat an den Zielrechner übertragen. Die Rücksicherung geht auch über ein shell script. /usr/local/bin/netcat-image-restore:


download

#!/bin/bash
TARGET_HOST=js-nb
TARGET_DRIVE=/dev/hda
SOURCE_IMAGE=$1  
LOG=restore.log
RESTORE_SERVER=caminus  # sollte nur hier gestartet werden
DELAY=20
#------------------------------------------
myexit() {
    echo $1
    exit 1
}
[ "$(hostname)" = "$RESTORE_SERVER" ] || myexit "Dieses Script sollte auf diesem host nicht laufen. ENDE"
DATUM=$(date -I)
[ -z "$1" ] && myexit "Bitte Quellarchiv angeben!"
[ -f "$1" ] || myexit "Das angegebene Quellarchiv exisitert nicht!"
NC_PORT=4444
echo "$DATUM;$BACKUP_PATH to $TARGET_HOST">>$LOG
#
echo " "
echo "RückSicherung auf die Festplatte des $TARGET_HOST, $TARGET_DRIVE."
echo " Quellpfad: $TARGET_HOST:$SOURCE_IMAGE"
echo " "

# remote netcat im listenmode starten
ssh root@$TARGET_HOST "netcat -l -p 4444 > $TARGET_DRIVE "&
echo "... netcat auf $TARGET_HOST im Hintergrund gestartet.."
sleep $DELAY
echo "los gehts..."
gunzip -c $SOURCE_IMAGE |netcat $TARGET_HOST 4444

Der Vorteil ist, dass man jegliches festplattenbasierte Betreibssystem, damit offline sichern kann. Auch kann man dies zum Klonen verwenden. Um einen Windows XP Notebook zu sichern habe ich nach fertiger Installation aller Programme die Festplatte defragmentiert und freien Platz mit einem Tool überschrieben. Dadurch wird die Kompression sehr effektiv und eine Installation mit 10 Gb Plattenbelegung auf einer 40 Gb Platte belegt nacher 3-4 Gb als Backup-Abbild und dauert ungefähr eine Stunde. Eine Festplattenverschlüsselung macht die Kompression allerdings vollkommen unwirksam und die Übertragungszeit und -Menge wird entsprechend gross und lange, aber es geht. Gerade mit Windowz sind ja die mitgelieferten Recovery-DVDs deshalb witzlos, weil damit ja nur das völlig nakte OS wieder hergestellt wird, also sämtlichen Anpassungen, Einstellungen und Zusatzinstallationen von Druckern und Software kaputt sind. Eine Image-Sicherung stellt in kurzer Zeit ein vollkommen benutzbares System her.