Robotrontechnik-Forum

Registrieren || Einloggen || Hilfe/FAQ || Suche || Mitglieder || Home || Statistik || Kalender || Admins Willkommen Gast! RSS

Robotrontechnik-Forum » Technische Diskussionen » Suche Kopierprogramm mit Fehlerwiederholung » Themenansicht

Autor Thread - Seiten: -1-
000
17.05.2008, 16:28 Uhr
Rüdiger
Administrator
Avatar von Rüdiger

Kennt jemand ein DOS-Dateikopierprogramm oder einen DOS-Kommandointerpreter,
bei dem man die Anzahl der automatischen Lesewiederholungen bei Datenträgerfehlern einstellen kann?

Ich habe eine A7150-Festplatte, die manche Dateien erst beim 200sten Leseversuch rausrückt.
Die COMMAND.COM vom DOS will leider immer einen Tastendruck haben (es nützt auch nichts, die Taste festzuklemmen) und irgendwann tun mir davon echt die Finger weh, abgesehen vom zeitlichen Aufwand...
--
Kernel panic: Out of swap space.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
001
17.05.2008, 17:28 Uhr
kaiOr

Avatar von kaiOr

Probier mal "Recover Copy":

http://www.dawson1.com/BobsUtils/
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
002
17.05.2008, 20:29 Uhr
Rüdiger
Administrator
Avatar von Rüdiger


Zitat:
kaiOr schrieb
Probier mal "Recover Copy":

Hängt sich wortlos beim Start auf oder bewirkt einen Reboot. Genau so wie _copy.
Weitere Ideen?
--
Kernel panic: Out of swap space.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
003
17.05.2008, 22:35 Uhr
kaiOr

Avatar von kaiOr

http://www.xxcopy.com/index.htm

xxcopy16 [quelle] [ziel] /cr[x]
x - Sekunden, die bei Fehler weiter versucht wird zu lesen

Es steht leider auch nichts dabei, ob es auf 086er läuft.

MfG

Dieser Beitrag wurde am 17.05.2008 um 23:22 Uhr von kaiOr editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
004
18.05.2008, 11:43 Uhr
Rüdiger
Administrator
Avatar von Rüdiger


Zitat:
kaiOr schrieb
http://www.xxcopy.com/index.htm

xxcopy funktioniert zwar unter DCP und kopiert fehlerfreie Dateien auch erfolgreich, macht aber bei fehlerbehafteten Dateien nur Unsinn: liest den defekten Block nur 1x und wartet dann endlos ohne weitere Plattenzugriffe.
Weitere Ideen?
--
Kernel panic: Out of swap space.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
005
18.05.2008, 12:00 Uhr
Günter



Hallo Rüdiger,
hast Du es schon mal mit Norton Diskedit oder Disktoktor
versucht? Ich habe da schon einige Festplattendaten
gerettet.

Günter
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
006
18.05.2008, 12:18 Uhr
Rüdiger
Administrator
Avatar von Rüdiger


Zitat:
Günter schrieb
hast Du es schon mal mit Norton Diskedit oder Disktoktor
versucht? Ich habe da schon einige Festplattendaten gerettet.

Beide Programme helfen da nicht.
Diskedit bringt bei jedem Sektorfehler eine bunte Fehlermeldung, die er bestätigt haben will.
Diskdoktor sperrt nur die kaputten Sektoren. Damit sind die betroffene Dateien an den defekten Stellen dann endgültig verloren.

Das bislang beste Kopierprogramm ist tatsächlich der COPY-Befehl der COMMAND.COM vom DOS:
Da kann man mit Taste "W" den Lesevorgang erneut starten, mit "A" schlimmstenfalls abbrechen oder mit "I" die Datei schlimmstenfalls kaputt übernehmen. Aber das ist eben immer mit Nutzer-Interaktionen verbunden und das will ich automatisieren.

Alle bisherigen Kopierprogramme habe einen weiteren Makel: falls in einer Datei zwei Fehler sind und nach vielen Versuchen der erste einmal erfolgreich gelesen wurde und das Programm am zweiten Fehler steht, fällt es bei dessen Wiederholung wieder auf den ersten Fehler rein. :-(
--
Kernel panic: Out of swap space.

Dieser Beitrag wurde am 18.05.2008 um 12:23 Uhr von Rüdiger editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
007
19.05.2008, 20:38 Uhr
marko_oette



Habe leider keine weitere Idee dazu.

Ein einfaches Kopierprogramm zu basteln sollte doch machbar sein? Da ich schon lange nichts mehr für DOS gemacht habe, kann ich da leider nicht ganz mit reden, aber unter Win32 sinds nur wenige Zeilen. Für selbiges könnte ich dir gern was basteln. Ebenso für Linux, was dir aber nicht viel nutzen wird ne?
--
Bitte - wenn nötig - Kontakt via Email, ich bin selten im Forum.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
008
19.05.2008, 20:40 Uhr
Rüdiger
Administrator
Avatar von Rüdiger

Es zeichnet sich ab, dass es ein für meine Zwecke brauchbares Programm anscheind nicht gibt (wieso passiert mir das eigentlich laufend?) und ich um das Selber-schreiben so eines Programms nicht herum komme.


Ich konzepte mal eben ein Puzzle-Kopierprogramm.

Die aktuelle Lage:
-Programmiersprache PASCAL
-Die Datei-Lese-und Schreibfunktionen gestatten kein unmittelbar wiederholtes Lesen des selben Blocks aufgrund des weiterrückenden Dateizeigers.
Die Datei muss also bei jedem Lesefehler ggf. wieder von Anfang an gelesen werden.
-Jeder Datenblock soll nur 1x irgendwann erfolgreich gelesen worden sein
-Leseblockgröße= 1 Festplattencluster
-Minimale Anzahl an Zugriffen auf das Zielmedium (Diskette) zwecks Zeitersparnis
-Der Kopiervorgang soll unterbrechbar und zu einem beliebigen Zeitpunkt fortsetzbar sein
-Das Programm soll per Batchdatei steuerbar sein und ohne notwendigen Bedienereingriff arbeiten

Das Programm hat 3 Betriebarten:

a) Der Blindmodus. Wird beim ersten Kopierversuch einer Datei benutzt.
Ziel: Retten aller unbeschädigten Blöcke
(die Qualität des Quellmediums kann sich ja im Lauf der Zeit auch verschlechtern)
-Prüfen des Zielmediums auf genügend Platz hin
-Blockweises Lesen der Quelldatei
-Blockweises Schreiben der Zieldatei
-Falls Lesefehler auftreten, werden diese ignoriert (Dummy-Datenblock einsetzen)
Gleichzeitig wird eine Bad-Block-Liste aufgebaut und die Nummern der defekten Blöcke darin eingetragen
und die Bad-Block-Liste in einer weiteren Datei gespeichert.
-Nach einmaligen Ausführen von a) geht's mit b) weiter

b) Der Puzzle-Modus. Wird benutzt, falls bei a) Lesefehler aufgetreten sind
Ziel: Retten der defekten Blöcke durch wiederholtes Lesen
-Einlesen der Bad-Block-Listen-Datei von a)
-Auswählen eines Blocks daraus (entweder sequenziell oder zufallsgesteuert)
-Eine vorgebbare Anzahl (1000?) mal Anfahren dieses Blocks (jeweils vom Dateianfang aus)
Vor dem aktuellen Fehler liegende Datenblocks werden generell ignoriert
-Falls ein Leseversuch des aktuellen Bad-Blocks erfolgreich war:
Abspeichern des geretteten Blocks jeweils in einer TEMP-Datei
Markieren des geretteten Blocks in der Bad-Block-Liste als "gerettet".
-Die Schritte sind möglichst oft zu wiederholen.
Im optimalen Fall, bis alle Bad Blocks als "gerettet" markiert sind. in diesem Fall geht's zu Schritt c) weiter
-ggf. Abspeichern der aktualisierten Bad-Block-Liste
-Beendigung der Arbeit auf Tastendruck hin.

c) Die Zusammensetzung. Wird benutzt, falls bei b) Blöcke gerettet wurden.
Ziel: Aufbau einer möglichst fehlerfreien Zieldatei
-Mischen der Zieldatei von a) mit den Tempdateien von b) anhand der "gerettet"-Einträge der Bad-Block-Liste-Datei
-Im optimalen Fall entsteht eine fehlerfreie Zieldatei
In nicht-optimalen Fall entsteht eine Zieldatei mit minimaler Fehleranzahl
-Entfernen der eingesetzten Blöcke aus der Badblock-Liste.
Falls alle Blöcke gerettet wurden, Löschung der Bad-Block-Liste-Datei und Erfolgsmeldung


Ideen / Meinungen / Ergänzungen / Korrekturen?
--
Kernel panic: Out of swap space.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
009
19.05.2008, 23:26 Uhr
Enrico
Default Group and Edit


So was ähnliches gibt es von der CT. Ist aber leider nur für CDs.
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
010
19.05.2008, 23:31 Uhr
kaiOr

Avatar von kaiOr

Ich halte es für sehr wahrscheinlich, das die FAT auf ein falsches Ziel zeigt und die eigentlich Dateien ok sind, da schwebt und kratzt der Lese-/Schreibkopf schließich am häufigsten....

Platte spiegeln und chkdsk drüber jagen wäre denke ich der richte Weg. Evtl. auch ein Tool schreiben was die die Platte sektorweise über Seriell rüberschaufelt. Dann kann man das gewonnene Image unter Windows beliebig mounten und mit ordentlichen Recovery-Tools darauf losgehen.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
011
19.05.2008, 23:41 Uhr
Rüdiger
Administrator
Avatar von Rüdiger


Zitat:
kaiOr schrieb
Ich halte es für sehr wahrscheinlich, das die FAT auf ein falsches Ziel zeigt und die eigentlich Dateien ok sind, da schwebt und kratzt der Lese-/Schreibkopf schließich am häufigsten....

Nein.
Die Sektorfehler (es sind Hunderte) liegen im Datenbereich. Directory und FAT sind OK.



Zitat:
Platte spiegeln und chkdsk drüber jagen wäre denke ich der richte Weg.

Das bringt nichts.
Nach dem Spiegeln der Platte habe ich eine wunderschöne Kopie, die mir chkdsk natürlich als fehlerfrei bewertet, die aber den falschen Dateninhalt hat und somit unbrauchbar ist.


Zitat:
Dann kann man das gewonnene Image unter Windows beliebig mounten und mit ordentlichen Recovery-Tools darauf losgehen.

Wenn in einer Datei statt einem A ein B drin steht, woran soll das Recovery-Programm merken, dass das falsch ist?
Diese Recoveryprogramme können fehlende DIR-Einträge wiederherstellen ("verlorene Cluster") und kreuzverbundene Dateien wieder entkoppeln, aber mehr leider nicht.
--
Kernel panic: Out of swap space.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
012
19.05.2008, 23:49 Uhr
kaiOr

Avatar von kaiOr


Zitat:
Rüdiger schrieb
Die Sektorfehler (es sind Hunderte) liegen im Datenbereich. Directory und FAT sind OK.

Du sagst es, Sektorfehler, jedes halbwegs gescheite Programm erkennt diese und liest den Sektor neu bis er korrekt ist oder fragt irgendwann nach ignorieren.... ;-)
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
013
20.05.2008, 00:17 Uhr
Rüdiger
Administrator
Avatar von Rüdiger


Zitat:
kaiOr schrieb
Du sagst es, Sektorfehler, jedes halbwegs gescheite Programm erkennt diese und liest den Sektor neu bis er korrekt ist oder fragt irgendwann nach ignorieren.... ;-)

Ja, nach genau 5 Versuchen.
Falls Du ein Programm kennst, was mehr Versuche macht, bevor es aufgibt und das auf dem A7150 läuft, immer her damit.
--
Kernel panic: Out of swap space.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
014
20.05.2008, 11:04 Uhr
marko_oette



Anmerkung zu c)

Ich würde die BadBlocks liste erhalten. "Gerettete" nur als solche markieren. So kannst du dem org. Datenträger noch einen Beipackzettel beilegen.

*EDIT*

Ich sehe den Sinn nicht nur für Festplatten sondern auch Disketten.
--
Bitte - wenn nötig - Kontakt via Email, ich bin selten im Forum.

Dieser Beitrag wurde am 20.05.2008 um 11:07 Uhr von marko_oette editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
015
22.05.2008, 22:51 Uhr
Rüdiger
Administrator
Avatar von Rüdiger


Zitat:
marko_oette schrieb
Ich würde die BadBlocks liste erhalten.

OK.


Zitat:
Ich sehe den Sinn nicht nur für Festplatten sondern auch Disketten.

Ich auch.

Ich hoffe nur, dass die BLOCKREAD-Funktion vom PASCAL nicht durch Lesefehler durcheinander kommt und Lesefehler wenigstens korrekt übergeht.
Denn erst durch die FAT hangeln und per BIOS-Funktion die Cluster absteppen, will ich möglichst vermeiden.
--
Kernel panic: Out of swap space.

Dieser Beitrag wurde am 22.05.2008 um 22:53 Uhr von Rüdiger editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
016
22.05.2008, 23:49 Uhr
Tom Nachdenk



Sollte es tatsächlich keine Möglichkeit geben den Dateizeiger zu setzen? Google sagt FileSeek, ich kann allerdings nicht überprüfen ob es das bei der angepeilten Pascal-Version schon gab/gibt.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
017
23.05.2008, 12:29 Uhr
Rüdiger
Administrator
Avatar von Rüdiger


Zitat:
Tom Nachdenk schrieb
Google sagt FileSeek, ich kann allerdings nicht überprüfen ob es das bei der angepeilten Pascal-Version schon gab/gibt.

FILESEEK gibt's meines Wissens nach im TurboPascal nicht.
SEEK geht nur für typisierte Dateien, geht also auch nicht.
--
Kernel panic: Out of swap space.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
018
26.05.2008, 16:58 Uhr
Rüdiger
Administrator
Avatar von Rüdiger

Die ersten Experimente mit Pascal am lebenden Objekt waren ernüchternd: BLOCKREAD bleibt beim fehlerhaften Sektor hängen und geht erst weiter, wenn er ihn fehlerfrei gelesen hat. Was bekanntlich nur sehr selten passieren wird.

Wie es aussieht, komme ich um systemnahe Programmierung nicht herum.
Ich brauche also 2 Funktionen:
-Eine, die mir aus der FAT die Clusternnummern zu einem vorgegebenen Dateinamen auflistet
-Eine, die mir den Dateninhalt zu einem vorgegebenen Cluster liefert.

Ich könnte hier Hilfe gebrauchen: Jemand der mir die passenden DOS-Funktionen heraus sucht. Wer mag das tun?
--
Kernel panic: Out of swap space.

Dieser Beitrag wurde am 26.05.2008 um 16:59 Uhr von Rüdiger editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
019
26.05.2008, 17:54 Uhr
marko_oette



Ich würde dir, wenn du dich an Turbo C oä. heran Traust gern die Copy Routine von FreeDos ans herz legen.

Was liegt näher, als diese Zu verwenden?

Hier der aktuelle TRUNK Code aus dem Repository:
http://freedos.svn.sourceforge.net/viewvc/freedos/freecom/trunk/cmd/copy.c?view=markup
--
Bitte - wenn nötig - Kontakt via Email, ich bin selten im Forum.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
020
07.09.2008, 11:22 Uhr
Rüdiger
Administrator
Avatar von Rüdiger

Bislang bin ich bei diesem Thema leider keinen Schritt voran gekommen:
ich habe immer noch einen Rechner mit Sektoren, die 99% der Zeit defekt sind
und eventuell irgendwann zufällig mal lesbar sind.

Ich möchte keine neue Programmiersprache dafür lernen.
Die Installation DOS-fremder Betriebssysteme auf dem A7150 fällt sowieso weg.

Gibt es jemanden, der mir ein PASCAL-Codeschnipsel zum Lesen von Dateien
auf BIOS-Ebene zusammenschreiben kann?
Also Auslesen der zu einer Datei gehörigen Blocknummern aus der FAT und
das Lesen dieser Blöcke...

Oder kennt jemand einen Trick, um die BLOCKREAD-Funktion dazu zu bewegen, Sektorfehler zu übergehen?
--
Kernel panic: Out of swap space.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
021
07.09.2008, 12:51 Uhr
holm

Avatar von holm

Eventuell kannst Du hier was klauen:

http://www.cirsovius.de/CPM/Projekte/Artikel/TP/Inhalt/CMDMAK.html
Das ist 1. CPM und 2. Pascal MT+ aber es gib da einen Link auf einen Tubopascal
Port.
Du wirst wohl um direkte Programmiererei der DOS oder schlimmer BIOS Calls nicht herumkommen, und sorry, mein Tubopascal Können ist längst verschüttet zusammen
mit dem DOS Kram. Ich mache seit vielen Jahren nur noch Unix und C....

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
022
08.09.2008, 15:38 Uhr
Rüdiger
Administrator
Avatar von Rüdiger


Zitat:
holm schrieb
Eventuell kannst Du hier was klauen:

http://www.cirsovius.de/CPM/Projekte/Artikel/TP/Inhalt/CMDMAK.html
Das ist 1. CPM und 2. Pascal MT+ aber es gib da einen Link auf einen Tubopascal
Port.

Eigentlich brauche ich nicht den Zugriff auf CP/M, sondern auf DOS.
--
Kernel panic: Out of swap space.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
023
08.09.2008, 22:09 Uhr
holm

Avatar von holm

Dos hat CPM kompatible Funktionsaufrufe. Billy wollte 2gleisig fahren..

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
Seiten: -1-     [ Technische Diskussionen ]  



Robotrontechnik-Forum

powered by ThWboard 3 Beta 2.84-php5
© by Paul Baecher & Felix Gonschorek