Ik kreeg laatst een zip 750 USB in handen met een defecte zip-disk.
Op die disk staat uiteraard vrij veel belangrijke data, waar iemand heel erg blij mee is als er uberhaupt iets vanaf gehaald kan worden.
Onder windows hangt het OS, wanneer die disk erin geplaatst wordt. Blijkbaar wil windows 'm meteen mounten en daarvoor moet 'ie een aatal sectoren in lezen, die defect zijn.
Dan maar onder linux gebeuren. Op een redelijk schone redhat 8.0 install.
Dat leek vlekkeloos te gaan. Linux ziet de zip-drive meteen en maakt er een SCSI-device van. (sda)
Met fdisk kan ik zien dat het gaat om /dev/sda4 en zie het aantal sect/heads/cyl. en de blok-grootte (512 bytes)
Totaal 1'470'500 LBA-sectoren.
Toch even geprobeerd om een cat /dev/sda > image-file te doen, maar dan loopt 'ie vast op (LBA)sector 32.
Dan maar een iets andere aanpak met dd.
dd if=/dev/sda of=<beginsector>-<eindsector> bs=512 count=<verschil> skip=<beginsector>
Op die manier heb ik een heleboel blokken aan leesbare data kunnen vinden, maar juist voor de 200e sector zijn er erg veel sectoren defect. (daar staat een groot deel van de FAT, zo niet alles)
Ik heb alle losse stukken aan elkaar geplakt en de missende stukken opgevuld met 0-en. Zodoende kreeg ik een image file die linux wel wilde mounten. Helaas staan er alleen maar dir's op met als naam "????????.???", oftewel iets zegt me dat het niet goed genoeg is.
Is er een manier om zeg maar de SCSI-kernel-module te zeggen dat 'ie niet moet vallen over CRC-errors en gewoon de data zeg maar RAW in moet lezen?
Of gebeurd dat checken op een lage niveau, in de drive zelf?
Het leek erop dat er vanuit de kernel telkens een SCSI-reset gedaan werd en de betreffende sector steeds 5x opnieuw gelezen werd.
Tijdens dat skippen is de machine namelijk niet echt geweldig benaderbaar.
Ik hoop namelijk dat van die extra informatie er net genoeg bitjes benaderbaar zijn om het filesystem te kunnen reproduceren.
Op de rest van de schijf zijn er namelijk lang niet zo veel bad sectors, (sect 500 - 412992 is in elk geval goed leesbaar) oftewel hooguit wat files die niet helemaal meer kloppen. Het gaat hier niet om een grote zipfile van 700 MB ofzo, dus de kans dat er wat files te redden zijn is aanwezig.
Nog een ander punt. Het lijkt erop dat Linux de drive in grotere blokken aanspreekt dan 512 bytes, want als er een bad sector is, kan er vaak 8 - 16 kB eromheen niets gelezen worden. Als je dus RAW in kunt lezen zou je die data dus ook te pakken kunnen krijgen, waar waarschijnlijk niets mee mis is.
Iemand een suggestie?
zeer waarschijnlijk zullen dos-rescue-tools niet werken omdat het een USB-drive is.
Op die disk staat uiteraard vrij veel belangrijke data, waar iemand heel erg blij mee is als er uberhaupt iets vanaf gehaald kan worden.
Onder windows hangt het OS, wanneer die disk erin geplaatst wordt. Blijkbaar wil windows 'm meteen mounten en daarvoor moet 'ie een aatal sectoren in lezen, die defect zijn.
Dan maar onder linux gebeuren. Op een redelijk schone redhat 8.0 install.
Dat leek vlekkeloos te gaan. Linux ziet de zip-drive meteen en maakt er een SCSI-device van. (sda)
Met fdisk kan ik zien dat het gaat om /dev/sda4 en zie het aantal sect/heads/cyl. en de blok-grootte (512 bytes)
Totaal 1'470'500 LBA-sectoren.
Toch even geprobeerd om een cat /dev/sda > image-file te doen, maar dan loopt 'ie vast op (LBA)sector 32.
Dan maar een iets andere aanpak met dd.
dd if=/dev/sda of=<beginsector>-<eindsector> bs=512 count=<verschil> skip=<beginsector>
Op die manier heb ik een heleboel blokken aan leesbare data kunnen vinden, maar juist voor de 200e sector zijn er erg veel sectoren defect. (daar staat een groot deel van de FAT, zo niet alles)
Ik heb alle losse stukken aan elkaar geplakt en de missende stukken opgevuld met 0-en. Zodoende kreeg ik een image file die linux wel wilde mounten. Helaas staan er alleen maar dir's op met als naam "????????.???", oftewel iets zegt me dat het niet goed genoeg is.
Is er een manier om zeg maar de SCSI-kernel-module te zeggen dat 'ie niet moet vallen over CRC-errors en gewoon de data zeg maar RAW in moet lezen?
Of gebeurd dat checken op een lage niveau, in de drive zelf?
Het leek erop dat er vanuit de kernel telkens een SCSI-reset gedaan werd en de betreffende sector steeds 5x opnieuw gelezen werd.
Tijdens dat skippen is de machine namelijk niet echt geweldig benaderbaar.
Ik hoop namelijk dat van die extra informatie er net genoeg bitjes benaderbaar zijn om het filesystem te kunnen reproduceren.
Op de rest van de schijf zijn er namelijk lang niet zo veel bad sectors, (sect 500 - 412992 is in elk geval goed leesbaar) oftewel hooguit wat files die niet helemaal meer kloppen. Het gaat hier niet om een grote zipfile van 700 MB ofzo, dus de kans dat er wat files te redden zijn is aanwezig.
Nog een ander punt. Het lijkt erop dat Linux de drive in grotere blokken aanspreekt dan 512 bytes, want als er een bad sector is, kan er vaak 8 - 16 kB eromheen niets gelezen worden. Als je dus RAW in kunt lezen zou je die data dus ook te pakken kunnen krijgen, waar waarschijnlijk niets mee mis is.
Iemand een suggestie?
zeer waarschijnlijk zullen dos-rescue-tools niet werken omdat het een USB-drive is.
Een goedkope voeding is als een lot in de loterij, je maakt kans op een paar tientjes korting, maar meestal betaal je de hoofdprijs. mijn posts (nodig wegens nieuwe layout)