Archive for the ‘ backup/restore ’ Category

Debian: Dateisystem (ext2/ext3) wiederherstellen

Wer sich ungewollt den Anfang seiner ext2/ext3 Partition überschrieben hat, ist nach dem er es bemerkt hat bestimmt nicht gerade sehr erfreut darüber, doch es gibt auch hierfür Wege nachdem der MBR und die Partitionsinformationen wiederhergestellt wurden auch das Dateisystem zu restaurieren.

Entscheidend ist bei ext2/ext 3 der Superblock. Beim anlegen eine Partition mit mke2fs werden mehrere Suberblöcke angelegt und auch aufgelistet. Da sich diese Blockdaten i.d.R. jeoch keiner notiert, muss man diese nun erstmal wieder herausfinden. Um nun wieder an die Blockdaten zu gelangen, kann die Erstellung des Dateisystems simuliert werden, da hierbei ebenfalls die theoretisch verwendeten Blockwerte ausgegeben werden.

mke2fs

Nachdem wir nun mögliche Werte für den Superblock haben, können Sie versuchen diese zu nutzen. Sollte der angegebene Wert kein Superblock sein, so bricht e2fsck ab. Sie brauchen sich also nicht um die Richtigkeit des Superblocks zu sorgen. ;-)

e2fsck

Sollten alle simulierten Superblöcke jedoch nicht zum Erfolg führen, kann man script gesteuert bestimmte Blockbereiche der Festplatte prüfen lassen:

for ((i=32000;i<99000;i++)); do
    e2fsck -y -b $i /dev/hdg1
    if  [ "$?" -le "4" ]; then
        break
    fi
done

Sollte dies auch nicht weiterhelfen, können Sie – nachdem Sie die Partition oder Festplatte gesichert haben den Superblock immer noch neu schreiben und schauen ob Ihnen das weiterhilft. Wenn nicht, stellen Sie das Image wieder her.

mke2fs -S /dev/hdg1

Debian: MBR/Partitionstabelle sichern und wiederherstellen

Ebenso wie man eine ganze Festplatte oder Partition mit dd sichern kann, kann auch der Bootsector der HD gesichert

dd if=/dev/sda of=/media/mbr.img bd=1 count=64 skip=446 seek=446

und wiederhergestellt werden.

dd if=/media/mbr.img of=/dev/sda bd=1 count=64 skip=446 seek=446

Ein Wiederhergestellter Bootsektor ermöglicht es einem alle primären Partitionen wieder im Zugriff zu haben, Jedoch hilft die Wiederherstellung des MBR bei erweiterten nicht weiter.

Wer jetzt “zufällig” die Partitionierungsdaten zur Hand hat, kann die Partionen mit fdisk und exakten Partitionierungsinformationen neu anlegen. Wer diese jedoch nicht ausgedruckt und abgeheftet hat – was die Merheit sein dürfte ;-) kann das Tool gpart (nicht gparted) bemühen. Das Programm sucht auf der Festplatte nach den charakteristischen Merkmalen von primären und erweiterten Partitionen und kann diese Informationen neu schreiben. Je nach der Vergangenheit der Festplatte können hier sich überlappende Werte heraus kommen. Hier kommt man dan nicht um den Menschenverstand herum zu entscheiden welche die richtigen Daten sind.

Bevor Sie gpart jedoch verwenden, sollten Sie den MBR sichern, insofern der MBR Partitonsdaten enthält die korrekt sind. So haben Sie später dann zumindest noch den Zugriff auf die primäre(n) Partitione(n), falls das Ergebniss von gpart nicht das beste sein sollte.

Starten Sie gpart nun im interaktiven Modus. Hierbei werden die erkannten Partitionen angezeigt und in eine neue Datei geschrieben werden um den MBR vorerst unberührt zu lassen. Bei wiederherstellen die partitionierungsinformationen werden die Partitonsdaten in der Reihenfolge geschrieben wie sie erkannt werden, dies kann zur Folge haben, dass die Partitonen eine andere Reihenfolge bekommen.

gpart -i -W new-mbr.imrg /dev/sda

Hat gpart nun alle gesuchten partitonen gefunden, kann diese Datei in den MBR geschrieben werden.

dd if=/media/new-mbr.img of=/dev/sda bd=1 count=64 skip=446 seek=446

Wichtig ist dabei zu wissen, dass der Umweg über eine Datei nur bei gesuchten primären Partitionen funktioniert. Möchten Sie auch erweiterte wiederherstellen, so muss gpart direkt in den MBR schreiben. Hierzu kann anstelle von -W new-mbr.img -W /dev/sda verwendet werden.

Debian: Festplattensicherung

Wer eine komplette Festplatte sichern möchte, kann dies entweder mittels Imaging Software tun oder dd verwenden

dd if=/dev/sda of=/media/sda.img

Sobald man aber versucht eine Festplatte mit Lesefehlern über dd zu kopieren wird man merken, dass dies nicht so einfach ist. Dd bricht entweder ab oder wird sehr langsam und fängt an jeden Sektor zig mal zu lesen. Für diesen Fall kann dd_rescue (Paket ddrescue) verwendet werden. Das Programm kann auch Festplatten mit Fehlern sicher, indem es diese Sektoren einfach ignoriert da diese wie gesagt ja sowieso nicht lesbar sind.

dd_rescue -A /dev/sda /media/sda.img

Das Image das in beiden Fällen entsteht kann anschließend auch auf einem anderen System als Laufwerk gemountet werden um zum Beispiel Dateien heraus zu kopieren.

mkdir /media/loop
mount -o loop sda.img /media/loop

Ebenso ist es möglich,  dass Image auf eine neue Festplatte zurück zu spielen. Achten Sie dabei unbedingt darauf, dass die neue Festplatte mind. gleich groß sein ist. Die GB Anzahl reicht hierbei nicht aus. Die Anzahl der Sektoren ist entscheidend, da zum Beispiel 80 GB Festplatten mit einer unterschiedlichen Anzahl von Sektoren verkauft werden.

dd if=/media/sda.img of=/dev/sda

Dd sowie dd_rescue können zwar auch NTFS Dateisysteme sichern, jedoch bietet Debian hierfür das Programm ntfsclone an, was im Paket ntfsprogs enthalten ist. Die mit ntfsclone erstellten Images sind i.d.R. kleiner als die mit dd/dd_rescue erstellten Images. Das liegt daran, dass ntfsclone die vorhandenen Daten sichert und nicht wie dd/dd_rescue alle lesbaren Daten was auch Dateifragmente gelöschter Dateien beinhaltet sichert. Demnach können aus einem ntfsclone Image keine gelöschten Daten wiederhergestellt werden.

Es ist auch möglich, ein DD Image über das Netzwerk auf die Festplatte einer andere Maschine zu schreiben. Dabei sollte evtl. darauf geachtet werden, dass in das Abbild nicht ungewollt Daten integriert werden zum Beispiel durch einen Portscan der sich kurzzeitig auf den entsprechenden Port connected.

slave% nc -l -p 9000 | dd of=/var/tmp/image_of_sda1
master% dd if=/dev/sda | nc <slave IP address> 9000

Nachfolgendes Beispielt sichert die NTFS Partition /dev/sda1 als Image.

ntfsclone --rescue /media/ntfs.img /mnt/dev/sda1

Diese Images lassen sich natürlich auch wieder mounten. Da ntfsmount selbstständig erkennt, ob es Blockgerät ist oder nicht, muss der Parameter -loop wie bei mount nicht mit angegeben werden.

In dieses Image kann auch geschrieben werden. Nur beim löschen ist darauf zu achten, dass das Image dadurch nicht wieder kleiner wird.

mkdir /media/loop
ntfsmount /media/ntfs.img /media/loop

Dieses Image kann ebenso wie ein dd Image auch wieder in eine entsprechende Partition zurück geschrieben werden.

ntfsclone -r -o /dev/sdc1 /media/ntfs.img

Debian: gelöschte Datei wiederherstellen

Linux Befehle sind schön kurz, doch manchmal sind sie zu schnell eingegeben als das man noch eine Chance hat den Fehlre zu bemerken. Das musste ich gerade selbst erfahren. rm * -r im backup Verzeichnis hat leider nicht nur die alten Backups gelöscht, sondern auch das backup-script selbst. Man sollte es ja eigentlich auch nicht direkt im Backup Verzeichnis ablegen, ich weiß :-P

Da ich aber nicht angefangen habe diesen Eintrag zu schreiben um anderen mein Leid zu klagen komm ich dann jetzt mal zum eigentlichen Thema.

grep restore

Ich konnte das Backup-Script wiederherstellen. Dazu habe ich als erstes die gesamte Partition nach einer eindeutigen Zeichenfolge des scriptes durchsucht – in meine Fall das Password des FTP-Servers wohin die Sicherung geschrieben wird – um dann die entsprechenden Zeilen vor und nach der Fundstelle wiederherzustellen.

grep -i -a -B10 -A100 'password' /dev/sda1 > restore.txt

foremost

Sollten nun mal Dateien abhanden gekommen sein, die nicht einfache Textdateien waren, so kann man das Tool foremost nutzen. Mit diesem Tool lassen sich jedoch auch nicht alle Dateitypen wiederherstellen. Unterstüzt werden unter anderem Bilder, Videos, Office-Dokumente, Zip- sowie RAR-Archive.

Um zum Beispiel alle Bilder wiederherzustellen sähen die Parameter für foremost wiefolgt aus.

foremost -t jpg -i /media/photos.img

Möchten Sie jedoch alle Dateien wiederherstellen mit denen foremost arbeitet, verwenden Sie die Parameter -t all

foremost -t all -i /media/rec_all.img

dd restore

Eine weitere Möglichkeit ist, die Partition nach bestimmten Begriffen zu durchsuchen und dann eine bestimmte Anzahl an Bytes um die Fundstelle herum wiederherzustellen. Das Ergebniss wird fast nie eine funktionierende Datei sein, jedoch schafft man es evtl. so Officedokumente heranzukommen, die man mit etwas Glück anschließend nur neu formatieren muss.

Also suchen Sie ertsmal nach eine möglichen Fundstelle.

grep -oab Doktorarbeit /media/restore.img

Anschließend können ab der genannten Position (2048) eine in diesem Beispiel 1 MB Datei (bs=1M) wiederherstellen.

dd if=/dev/hdg1 of=/media/part_restore.img bs=1M seek=2048 skip 2048

Grub: Notfalldiskette erstellen

Es lohnt sich immer eine Notfalldiskette des Grub-Bootloaders parat zu haben. Hatte ich natürlich nicht, nachdem als ich ein Linux-System auf eine neue HD kopieren musste. Grub verpackte die größere Platte nicht sofort. Mit einer Diskette hätte man dann einfach booten können, grub neu installieren und gut ist… Also, um eine Grub-Bootdiskette zu erstellen, sind folgende Schritte notwendig. Diese Schritte müssen aber auf dem Produktiv-System durchgeführt werden, für das die Diskette erstellt werden soll!

apt-get install dosfstools
mkfs -V -t msdos /dev/fd0
mkdir /mnt/fd0
mount /dev/fd0 /mnt/fd0
mkdir /mnt/fd0/boot
mkdir /mnt/fd0/boot/grub
cp -pa /boot/grub/* /mnt/fd0/boot/grub
umount /mnt/fd0
grub
grub> root (fd0) grub>
install /boot/grub/stage1 d (fd0) (fd0)/boot/grub/stage2 0x8000 p (fd0)/boot/grub/menu.lst
grub> quit

fertig.