[[Vorlage(Ausbaufähig, "Informationen zur Datenrettung auf den Dateisystemen Ext4, ReiserFS und FAT32 fehlen.")]] [[Inhaltsverzeichnis(3)]] [[Vorlage(Getestet, general)]] {{{#!vorlage Wissen [:Pakete_installieren: Installation von Programmen] [:Paketquellen_freischalten: Bearbeiten von Paketquellen] [:Terminal: Ein Terminal öffnen] [:Editor: Einen Editor öffnen] [:Notfall#Zugriff-von-einer-Live-CD-aus: Zugriff von einer Live-CD aus] }}} [[Bild(Wiki/Icons/help.png, 75, align=left)]] Durch unvorsichtiges Vorgehen passiert es leider gelegentlich: Man löscht ein Verzeichnis oder eine Datei, obwohl man dies eigentlich nicht beabsichtigt hatte. Dieser Artikel erklärt, wie man gelöschte Dateien wiederherstellen kann und was man vorbeugend machen kann, damit das nicht öfters passiert. Des Weiteren wird [#dd-rescue beschrieben] wie man Daten von beschädigten Partitionen retten kann. = Vorbeugen = == Löschen == [[Bild(Wiki/Icons/trash.png, 50, right)]] Beim Löschen folgendes beachten: * Überprüfen, welche Dateien man löscht * beim Löschen nur in den Papierkorb verschieben * vor dem Leeren des Papierkorbs ihn noch mal ansehen == Sicherungskopien == [[Bild(Wiki/Icons/save_all.png, 50, right)]] Regelmäßige [:Sicherheit#Sicherungskopien:Sicherungskopien] anzulegen, ist mittlerweile nicht mehr schwer. Es gibt eine Vielzahl an Programmen, die manuell oder automatisch Sicherungen anlegen. [[Anker(Daten)]] = Daten retten = {{{#!vorlage Warnung Als allererstes sollte die Partition, auf welcher sich die gelöschten Dateien befanden, __umgehend__ [:mount:ausgehängt] werden (beispielsweise mit der Tastenkombination [[Vorlage(Tasten, Alt+Druck+U)]] welche sofort sämtliche Schreibrechte entzieht). Jeder nachfolgende Schreibzugriff könnte die Dateien endgültig unwiederherstellbar machen, dies gilt also auch, für die nachträgliche Installation der unten genannten Datenrettungsprogramme. Für die Datenrettung sollte die betreffende Partition fortan nur noch mit Leserechten eingehängt werden. Ist dies nicht möglich (weil sich z.B. auch das System auf der gleichen Partition befindet) kann auf ein [:Desktop-CD:Live-System] zurückgegriffen werden. }}} Natürlich gibt es nicht nur die hier erklärten Programme. Hier werden nur Programme zusammen mit einer Anleitung vorgestellt. Weitere Programme findet man auf den unter [#Links Links] erwähnten Seiten. == ext2 == === Dateisystem aushängen === Um mit den Tools Zugriff auf das entsprechende Dateisystem zu haben, muss man dieses zuerst [:Datenträger:aushängen]. [[Anker(e2undel)]] === Methode 1: e2undel === [http://e2undel.sourceforge.net/ e2undel] {en} ist über die Paketquellen installierbar [1], {{{#!vorlage Paketinstallation e2undel, universe }}} Mit e2undel kann man interaktiv und einfach Daten von einer '''ext2'''-Partition retten. [[Anker(debugfs)]] === Methode 2: debugfs === Das Programm ist mit dem Paket * '''e2fsprogs''' bereits standardmäßig installiert. ==== Starten ==== Das Programm im Terminal [3] starten: {{{#!vorlage Befehl debugfs }}} ==== Navigieren ==== Mit folgendem Befehl in das Laufwerk wechseln: {{{#!vorlage Befehl open /dev/hda3 }}} ``hda3`` durch das Laufwerk ersetzen, auf dem Daten gerettet werden sollen. ==== Dateien anzeigen ==== Zuerst sollte man mit folgendem Befehl alle gelöschten Dateien anzeigen lassen: {{{#!vorlage Befehl lsdel }}} Das Programm verwendet folgende Anzeige: || '''Inode-Nummer''' || '''Benutzer-ID''' || || '''Dateigröße''' || '''Lösch-Datum und -Uhrzeit''' || || `` 4711 `` || `` 1000 `` || ``93678`` || `` 6/ 6 `` || `` Sat Aug 12 20:43:55 2006 `` || Nun kann man nach der zu rettenden Datei suchen, indem man Benutzer-ID, Dateigröße und Löschdatum (sofern bekannt) verwendet. ==== Gelöschte Datei abspeichern ==== Nun kann man die Datei mit folgendem Befehl retten: {{{#!vorlage Befehl dump <[Inode-Nummer]> [Zieldatei] }}} Beispiel: {{{#!vorlage Befehl dump <4711> /tmp/recovered }}} Die erstellte Datei kann man sich dann in einem Editor [4] ansehen. ==== Programm verlassen ==== {{{#!vorlage Befehl quit }}} [[Anker(grep)]] ==== Rettung mehrerer Daten ==== Sind versehentlich nicht nur eine, sondern gleich mehrere Dateien gelöscht worden, ist es natürlich mühsam, jedesmal den ''dump''-Befehl auszuführen. Um trotzdem recht komfortabel an die gelöschten Dateien zu kommen kann ähnlich vorgegangen werden, wie oben für eine einzelne Datei beschrieben. Statt die Liste an gelöschten Dateien in debugfs auszugeben, werden sie in eine Textdatei ausgegeben. Dazu folgenden Befehl in der Konsole eingeben: {{{#!vorlage Befehl debugfs -R lsdel /dev/hda3 > deletedfiles.txt }}} ``hda3`` durch das Laufwerk ersetzen, auf dem Daten gerettet werden sollen. ''lsdel'' listet alle Daten auf, die auf dem Datenträgen gelöscht wurden. Der Parameter ''-R'' sorgt dafür, dass der Befehl lsdel an debugfs übergeben wird (man kann alternativ auch den Befehl direkt in debugfs eingeben). ''>'' gibt die Liste, statt in debugfs, in die Textdatei ''"deletedfiles.txt"'' im Homeverzeichnis aus. Diese Liste wird jetzt (als Root) mit einem Editor modifiziert. Die Liste sieht in etwa so aus: || '''Inode-Nummer''' || '''Benutzer-ID''' || || '''Dateigröße''' || '''Lösch-Datum und -Uhrzeit''' || || `` 4711 `` || `` 1000 `` || ``93678`` || `` 6/ 6 `` || `` Sat Aug 12 20:43:55 2006 `` || || `` . `` || `` . `` || ``.`` || `` . `` || `` . `` || || `` . `` || `` . `` || ``.`` || `` . `` || `` . `` || || `` . `` || `` . `` || ``.`` || `` . `` || `` . `` || || `` . `` || `` . `` || ``.`` || `` . `` || `` . `` || || `` . `` || `` . `` || ``.`` || `` . `` || `` . `` || ||''1000 deleted inodes found.''|| Die erste und letzte Zeile löscht man. Hat man Inodes, die man nicht wiederhergestellt haben möchte, löscht man einfach die ganze Zeile. Nun sollte man die angepasste Liste abspeichern. Es wird ein Ordner erstellt, in dem die geretteten Daten gesammelt werden. {{{#!vorlage Befehl mkdir /home/user/restored }}} Die angefertigte Liste wird nun, mit Hilfe einer Schleife, an debugfs weitergegeben. {{{#!vorlage Befehl cat deletedfiles.txt | while read a b; do debugfs /dev/hda3 -R "dump -p <$a> /home/user/restored/file$a" ; done }}} ``hda3``, wie immer, durch das Laufwerk ersetzen, auf dem Daten gerettet werden sollen. Der Vorgang kann unter Umständen mehrere Stunden dauern. Alle Dateien sollten nun in '''/home/user/restored''' liegen - leider nicht mehr mit dem ursprünglichen Dateinamen, aber immerhin sind die Daten wieder da! === Methode 3: grep === [:Shell/grep:grep] ist mit dem Paket * '''grep''' bereits standardmäßig installiert. ==== Verwenden ==== Folgendes im Terminal [3] eingeben: {{{#!vorlage Befehl grep -a -B[Zahl] -A[Zahl] "[Suchbegriff]" /dev/hda* >[Zieldatei] }}} Mehr zur Verwendung kann man in [:Shell/grep:grep] nachlesen. ==== Beispiel ==== {{{#!vorlage Befehl grep -a -B200 -A600 "Doktorarbeit" /dev/hda3 >/tmp/recovered }}} Dieser Befehl speichert alle Daten, die 200 Zeilen vor und 600 Zeilen nach der Zeichenkette `Doktorarbeit` auf '''/dev/hda3''' gefunden werden, in die Datei '''/tmp/recovered'''. Die Datei kann man sich in einem Editor [4] ansehen. === Dateisystem einhängen === Zum Schluss muss man das zuvor ausgehängte Dateisystem natürlich wieder [:Datenträger:einhängen]. == ext3 / ext4 == Laut Wikipedia und anderen Seiten kann man unter '''ext3''' sowie '''ext4''' keine oder nur schwierig Daten retten. Das Programm ext3rminator, das z.B. bei der Live-Linux-Distribution [http://grml.org grml] {en} dabei ist, bietet jedoch eine gute Möglichkeit, verlorene Dateien, die größer als 48 KB waren, wiederherzustellen. Dazu bootet man von der verwendeten LiveCD und greift von dort aus auf die betreffende '''ext3'''-Partition zu.[5] Außerdem sind manche Programme, die unter [#ext2 ext2] genannt wurden, auch unter '''ext3''' zu verwenden. Es gibt zumindest die Möglichkeit, Dateien teilweise zu retten. [http://extundelete.sourceforge.net/ extundelete] {en} ist ebenfalls ein Programm, um versehentlich gelöschte Dateien unter '''ext3''' und '''ext4''' wiederherzustellen. Auf der Internetseite ist ausführlich beschrieben wie das Programm angewandt wird. Gefundene bzw. wiederhergestellte Dateien werden dem Verzeichnis '''RECOVERED_FILES''' abgelegt, dass im aktuellen Verzeichnis erstellt wird. Funktioniert auch einwandfrei mit einer LiveCD und einem externen Datenträger. {{{#!vorlage Experten ''ext3 überschreibt bei Löschvorgängen die Block-Pointer der Inodes mit Nullen. Dies macht ein Wiederherstellen von Dateien nach einem angeforderten Löschvorgang vergleichsweise schwierig, verbessert aber die Wahrscheinlichkeit, dass die Integrität des Dateisystems nach einem Softwarefehler oder Hardwareausfall ohne Datenverlust wiederhergestellt werden kann.'' (Quelle: [wikipedia:ext3:Wikipedia]) }}} Eine etwas umfangreiche, aber erfolgsversprechende Anleitung gibt es hier: [http://www.xs4all.nl/~carlo17/howto/undelete_ext3.html HOWTO recover deleted files on an ext3 file system] {en}. == NTFS == {{{#!vorlage Hinweis Programme wie [:Festplatten_Problembehebung:Testdisk] oder [http://www.cgsecurity.org/wiki/PhotoRec_Schritt_f%C3%BCr_Schritt PhotoRec] {de} können auch bei Problemen mit NTFS-Partitionen helfen. }}} Fehler im NTFS-Dateisystem lassen sich unter Windows mit `chkdsk` beheben. Beispiel für eine NTFS-Partition mit dem Buchstaben D: {{{#!vorlage Befehl chkdsk D: /F /V }}} Um Windows aufzufordern, beim nächsten Booten ein NTFS-Dateisystem zu reparieren, gibt es den Befehl `ntfsfix`. Dazu muss das Paket '''ntfsprogs''' (bis [:natty:Ubuntu 11.04]) installiert sein. Ab [:oneiric:Ubuntu 11.10] ist ntfsprogs in '''ntfs-3g''' enthalten, durch die Verschmelzung von 2 Projekten und somit einer neuere Version des Programms. ([http://changelogs.ubuntu.com/changelogs/pool/main/n/ntfs-3g/ntfs-3g_2011.4.12AR.4-2ubuntu3/changelog s.a. Changelog ntfs-3g]), vom 3.7.11 Beispiel für eine NTFS-Partition auf einer Dual-Boot Festplatte, `sda3` steht dabei für die 3. Partition auf der ersten Festplatte die bei einem Dual-Boot System meistens die Datenpartition für Windows darstellt. {{{#!vorlage Befehl ntfsfix /dev/sda3 }}} Für Windows gibt es im Internet einige weitere brauchbare Programme, siehe [#Links-Windows Links]. [[Anker(lsof)]] == Offene Dateien == Mit Hilfe des Befehls [:lsof:] (steht für '''l'''i'''s'''t '''o'''pen '''f'''iles) ist es möglich, versehentlich gelöschte Daten wiederherzustellen, wenn diese zum Zeitpunkt des Löschens von einem anderen Programm geöffnet sind. Der Rettungsvorgang muss dann auch unmittelbar nach dem Löschen erfolgen, da die Datei - vereinfacht gesagt - für das System dann immer noch geöffnet ist, obwohl sie gerade gelöscht wurde. Da dieser Fall wohl eher selten vorkommt, wird an dieser Stelle auf eine weiterführende Erklärung verzichtet und stattdessen auf die sehr gute Erklärung auf [http://www.jfranken.de/homepages/johannes/vortraege/lsof_inhalt.de.html#ToC6 dieser Seite] {de} verwiesen. == Tricks == In manchen Fällen wird kein Wiederherstellungsprogramm benötigt, weil ein Ordner entweder unwichtig ist oder durch ein Programm erneut angelegt werden kann. || '''Ordner''' || '''Begründung''' || '''Terminal-Befehl''' [3] || || '''/usr/share/''' || Dieser Ordner enthält Programmdateien und kann durch den Befehl wieder herstellt werden || ``aptitude reinstall "~i"`` || || *'''/cache/'''* || Der Ordner '''Cache''' ist meistens eine Art Zwischenspeicher für Programme, damit sie Dateien nicht bei jeder Abfrage erneut erstellen/herunterladen müssen. Meistens gibt es keine Probleme, wenn dieser Ordner gelöscht wird. || || == foremost == foremost ist ein Kommandozeilen-Programm, das gelöschte Daten anhand der verbliebenen Header- und Footer-Daten rekonstruieren kann ([:foremost:mehr]). [[Anker(Partitionen)]] = Partitionen retten = [[Bild(Wiki/Icons/hd.png, 75, right)]] [[Anker(Partitionen-1)]] == Gelöschte/defekte Partitionstabelle retten == Ist, aus welchem Grund auch immer, die Partitionstabelle beschädigt oder wurden Partitionseinträge gelöscht, kann man eine Rettung mit [http://www.cgsecurity.org/wiki/TestDisk_DE TestDisk] {de} probieren. {{{#!vorlage Warnung Das Ändern der Partitionstabelle ist immer sehr risikoreich! Ein Reparaturversuch kann evtl. mehr Schaden anrichten als er nützt. Deswegen besser vorher die Platte komplett mit [:Shell/dd: dd] klonen und versuchen, die Kopie zu reparieren! }}} Das Programm [http://www.cgsecurity.org/wiki/TestDisk_DE TestDisk] {de} installiert man mit dem gleichnamigen Paket [1]: {{{#!vorlage Paketinstallation testdisk, universe [2] }}} Das Programm startet man einfach: {{{#!vorlage Befehl sudo testdisk }}} Es bietet ein intuitiv zu bedienendes Text-Menü. Weitere Informationen findet man in den offiziellen [http://www.cgsecurity.org/wiki/TestDisk_DE#Dokumentation TestDisk- Dokumentation] {de}. [[Anker(Partitionen-2)]] == Haupt-Partition reparieren lassen, wenn nur noch Lese-Zugriff == Wenn plötzlich Meldungen folgender Art erscheinen: * "Prozess Erstellung des Ein-/Ausgabemoduls nicht möglich: Read-only file system kann nicht gestartet werden." * "Einrichtungsdatei /home/BENUTZERNAME/.kde/share/config/systemsettingsrc lässt sich nicht speichern." * "/dev/hda3: Unexpected inconsistency fsck died exit status 4" (beim Versuch neu zu booten) dann enthält die Haupt-Partition einen Schreibfehler und wurde daher automatisch auf "Nur-Lesbar" gestellt. Abhilfe ist die Überprüfung für die Haupt-Partition (die meistens '''hda1''' heißt und vom Typ '''ext3''' ist). Dazu startet man per [http://www.knoppix.org/ KNOPPIX] {de} oder einer anderen Live-CD und kann nun die Haupt-Partition in Ordnung bringen, denn die Partition darf nicht gemountet sein. Dazu gibt man folgenden Befehl im Terminal [3] ein: {{{#!vorlage Befehl sudo fsck.ext3 -v -f /dev/hda1 }}} Wenn sehr viele Fragen mit "``j``" beantwortet werden müssen, kann man mit [[Vorlage(Tasten, Strg+C)]] abbrechen und den Befehl mit dem folgenden Parameter noch einmal starten: "``-y``". [[Anker(Partitionen-3)]] == Partitionen retten, wenn Reparatur nicht mehr möglich ist == === gddrescue === [:gddrescue:] ist ein Programm zur Datenrettung von defekten Datenträgern. Die Funktionsweise ist im Artikel beschrieben. === dd_rescue === Ist eine komplette Partition nicht mehr lesbar, weil z.B. Teile des Dateisystems beschädigt sind, so gibt es auch hier die Möglichkeit, die noch "guten" Daten mit Hilfe des Programms [http://www.garloff.de/kurt/linux/ddrescue dd_rescue] {en} zu retten. Dazu muss das dd_rescue über folgendes Paket installiert werden [1]: * '''ddrescue''' (''universe'' [2]) Die Anwendung von dd_rescue ist relativ simpel und sehr ausführlich auf [http://www.linux-user.de/ausgabe/2004/08/048-dd-rescue/ linux-user.de] {de} beschrieben. Ist die Boot-Partition defekt, so muss man dd_rescue natürlich von einer Live-CD aus ausführen. {{{#!vorlage Hinweis dd_rescue ist für defekte Partitionen gedacht, nicht für Partitionen, die versehentlich formatiert wurden! }}} === Dateien aus Image extrahieren === Nachdem ein Image mit dd bzw. dd_rescue erstellt wurde, kann man nun damit beginnen, Dateien aus dem Image zu extrahieren. Dazu gibt es mehrere Tools. ==== PhotoRec ==== Das Programm [http://www.cgsecurity.org/wiki/PhotoRec_DE PhotoRec] {de} ist im folgenden Paket enthalten [1]: * '''testdisk''' (''universe'', [2]) Nach der Installation kann man gleich beginnen, Dateien aus dem dd-Image zu Extrahieren: {{{#!vorlage Befehl sudo photorec dd_image_datei.img }}} Man muss sich nun durch das Text-Menü hangeln und die Extraktion starten. Weitere Informationen findet man in den offiziellen [http://www.cgsecurity.org/wiki/PhotoRec_DE#Dokumentation PhotoRec-Dokumentation] {de} . [[Anker(Wechselmedien)]] = Sonstige Anwendungen = == recoverjpeg == [http://www.rfc1149.net/devel/recoverjpeg recoverjpeg] {en} dient ausschließlich dazu [wikipedia:JPEG:]-Dateien auf Wechseldatenträgern oder Festplatten wiederherzustellen. Es eignet sich daher sehr gut dazu gelöschte Bilder auf dem Speicherchip einer Digitalkamera wiederherzustellen. Das Programm ist den Paketquellen von Ubuntu enthalten und kann über das Paket * '''recoverjpeg''' (''universe'', [2]) installiert werden. Anschließend kann man es über ein Terminal [3] auf einen ganzen Datenträger oder eine Partition ansetzen. {{{#!vorlage Befehl # Allgemein recoverjpeg # Beispiel 1 recoverjpeg /dev/sdc # Beispiel 2 recoverjpeg /dev/hda1 }}} recoverjpeg versucht nun gelöschte Bilder auf dem Datenträger zu finden und speichert sie als '''image.jpg''' im aktuellen Verzeichnis ab. [[Vorlage(Bildunterschrift, safecopy.png, 250, "safecopy", right)]] == safecopy == [http://safecopy.sourceforge.net/ safecopy] {en} bietet die Möglichkeit, Daten von defekten Datenträgern zu retten. Es liest Disketten blockweise aus und schreibt die fehlerfreien Daten in eine Ausgabedatei. Fehlerhafte Blöcke versucht das Programm auszulesen – sofern keine Rettung möglich ist überspringt safecopy den defekten Block und fährt mit der Datenrettung fort. Es ist über {{{#!vorlage Paketinstallation safecopy, universe }}} zu installieren [1]. Es wird über das Terminal [3] aufgerufen. {{{#!vorlage Tabelle <-2 tablestyle="width: 97%;" rowclass="titel"> safecopy +++ Parameter Beschreibung +++ safecopy /dev/device ~/diskimage Image des Dateisystems vom beschädigten Datenträger erstellen. }}} Um das Programm in allen Möglichkeiten nutzen zu können sollte man die [:man:Man-Page] durchlesen. = Links = * [ubuntu_doc:community/DataRecovery:Data Recovery (in der englischen Ubuntu-Dokumentation)] {en} * [http://bitbucket.org/haypo/hachoir/wiki/Home Forensic and data recovery] {en} - Liste nützlicher Programme * [http://www.martin-bock.de/pc/pc-0207.html Retten gelöschter Dateien unter ext2] {de} * [http://www.diskinternals.com/linux-recovery/ Komfortabele Rettung gelöschter Dateien/Verzeichnisse von ext2/ext3-Partitionen von Windows aus] {en} * [http://www.linux-praxis.de/lpic1/manpages/debugfs.html debugfs-Manpage] {de} * [:Shell/grep:grep] * [http://recover.sourceforge.net/linux/recover/ recover (Herstellerseite)] {en} * [http://www.cgsecurity.org/wiki/PhotoRec_DE PhotoRec] {de} * [http://www.netmon.ch/forensic/allin1.html Allin1] {en} * [http://www.sleuthkit.org/ The Sleuth Kit / Autopsy] {en} * [http://www.guzu.net/linux/datarecovery.php guzu.net, Datenwiederherstellung unter Linux u.a.: Umfangreiche Linkliste] {en} * [http://www.heise.de/software/download/special/datenrettung_mit_knoppix/47_1 Datenrettung mit Knoppix] {de} * [sourceforge:safecopy:] * [freshmeat:safecopy:] [[Anker(Links-Windows)]] [[Bild(Wiki/Icons/windows_users.png, 50, right)]] == Windows == * [http://www.heise.de/software/default.shtml?ref=suche&akat=217&akat=199&osg=1&lf=3&lf=1&lf=5&kat=222 heise Software-Verzeichnis] {de} * [http://www.winload.de/download-software/Utilities/Datenrettung/index.html?typ_id=15&x=41&y=9 Winload.de] {de} # tag: Sicherheit, Datenrettung