
Ich habe ein recht bekanntes Problem, habe hier aber leider eine kleine Wissenslücke und hoffe hier auf mehr Aufklärung.
Ich habe also einen beschädigten USB-Stick mit einem FAT32-Dateisystem. Ich habe einen Klon mit erstellt ddrescue
und ausgeführt testdisk
. Eine Partition wurde gefunden (puh!), also habe ich mit ein Loop-Gerät erstellt losetup -f -P USB_clone.img
und es gemountet. So weit, so gut, jetzt beginnt das Problem: Alle Dateien werden mit der scheinbar richtigen Größe ( ls -al
) gefunden, aber als ich versuchte, eine Datei zu kopieren, erhielt ich einen E/A-Fehler. Also habe ich die Partition erneut unmountet und ausgeführt dosfsck -l -r -v /dev/loop1p1
. Einige Dateien konnten wiederhergestellt werden, aber die meisten Dateien werden auf eine recht interessante Weise repariert:
File size is 27589006 bytes, cluster chain length is 32768 bytes.
Truncating file to 32768 bytes.
Dies führt zu, nun ja, abgeschnittenen Dateien; das ist natürlich nicht das, was ich will ...
Das führt mich zu einigen Fragen:
Was passiert hier? Es scheint, dass die Dateigrößen korrekt erkannt werden, aber irgendetwas stimmt überhaupt nicht mit, hm, na ja, was? Vielleicht mit der Partitionstabelle? Warum kann
dosfsck
das nicht behoben werden, wenn der Dateiname und die Dateigröße korrekt erkannt werden?Und natürlich noch wichtiger: Gibt es eine Möglichkeit, diese Dateien wiederherzustellen?
Sollten Sie weitere Informationen benötigen, fordern Sie diese einfach an!
Vielen Dank!
Antwort1
Eine gute Erklärung zur Fragmentierung von FAT-Dateisystemen finden Sie unterQuora: Wie verarbeitet das Betriebssystem die fragmentierten Sektoren im FAT32-Format, um die vollständigen Daten wiederherzustellen?von Irné Barnard.
Jeder Sektor hat hinten (oder vorne, je nach Detaildesign – aber irgendwo innerhalb des Sektors) einen Teil … etwas, das „nächster Sektor an Position X“ besagt. Das ist im Design aller FAT-basierten Dateisysteme, einschließlich FAT32, so. Und es ist auch der Grund, warum Fragmentierung den Dateizugriff auf FAT verlangsamt.
So funktioniert das:
- Sie (oder ein von Ihnen ausgeführtes Programm) senden dem Betriebssystem eine Anforderung zum Öffnen der Datei.
- Das Betriebssystem leitet die Anforderung an das Dateisystem weiter.
- Das FS (FAT) überprüft den Pfad + Dateinamen und findet den ersten Ordner im angegebenen Pfad.
- Anschließend liest es seine Stammordnertabelle (also den Anfang der Ordnerhierarchie des Laufwerks). Dadurch erhält es eine Sektornummer für den ersten Ordner im Pfad.
- Anschließend wird die Tabelle dieses Ordners weiter gelesen und mit dem nächsten Ordner im angegebenen Pfad abgeglichen. Dieser Vorgang wird wiederholt, bis der letzte Datei-/Ordnername im Pfad gefunden wurde.
- Dadurch erhält es den Sektor, in dem die Datei beginnt, sowie die Größe der Datei – so weiß es, wann es alle seine Sektoren gefunden hat (einfache Addition der Sektorgrößen).
- Es liest den ersten Sektor und überprüft seine Metadaten (d. h. den Zeiger auf den nächsten Sektor).
- Liest auch diesen und addiert die Datengröße des Sektors zur Anzahl der bereits gelesenen Daten. Wenn die Größe immer noch kleiner als die Dateigröße ist, fährt er mit dem nächsten Sektor in den Metadaten fort und wiederholt den Vorgang.
Der springende Punkt ist, dass die abgeschnittenen Dateien wahrscheinlich fragmentiert sind. Wenn ein Wiederherstellungsprogramm die Blöcke durchgeht und versucht, das nächste Fragment zu finden, hat es beschlossen, der Stelle, an der es den nächsten Block vermutet, nicht zu vertrauen.
Die Regeln und Probleme, die dosfsck
zum Vergleichen und Entscheiden, wann abgeschnitten werden soll, sindhttps://linux.die.net/man/8/dosfsckund es ist schwierig zu wissen, warum es abgeschnitten wird, ohne zu wissen, welchen Schaden die Festplatte ursprünglich erlitten hat. Wenn die FAT gelöscht wurde, könnte es sein, dass sie glaubt, dass keiner der in der Clusterkette aufgeführten Cluster verwendet wird, und Sie treffen die RegelFile contains bad or free clusters. The file is truncated.
dosfsck
ist kein Wiederherstellungstool. Es ist ein Reparaturtool, das davon ausgeht, dass die Festplatte grundsätzlich „okay“ ist.
Sie sollten sich die Ausführung geeigneter Wiederherstellungstools ansehen, wie z. B.photorec
das weit mehr als nur Fotos wiederherstellen kannoder testdisk
was kannweit mehr als nur Partitionen kopieren.