WinRAR Widerherstellungsdaten: Habe Blockgröße und Anzahl der Blöcke ermittelt

greybit

Cadet 3rd Year
Registriert
Nov. 2019
Beiträge
40
Ich habe mich in letzter Zeit viel mit den Winrar Wiederherstellungsdaten und Multipar beschäftigt.
In Multipar (par2) kann jede Kleinigkeit eingestellt werden wie Blockgröße und Anzahl der Blöcke. Eine Einstellung die es in Winrar nicht gibt und zu der ich auch ansonsten Online keine Informationen gefunden habe. Das hat mich neugierig gemacht und ich habe mich selbst daran gemacht RAR Dateien mit Widerherstellungsdaten zu versehen um diese anschließend zu beschädigen, zu reparieren und bei der Reperatur die Daten wie Blockgröße und Anzahl der Blöcke aus WinRAR abzulesen. Viele viele Archive später war es mir möglich die Formeln, wie genau Blockgröße und Anzahl der Blöcke in Winrar berechnet werden weitestgehen abzuleiten.
Da es mich einige Zeit gekostet hat, fände ich es etwas schade meine Erkenntnisse nur für mich zu behalten und möchte sie hier mit euch teilen.

Aber vorab für alle die nicht wissen wie Widerherstellungsdaten funktionieren eine kleine Erklärung. Wenn eine Datei beschädigt wird kann diese mit Widerherstellungsdaten repariert werden. Dabei wird die Datei in gleich große Blöcke aufgeteilt. Nehmen wir z.B. eine 100MB Datei, könnten wir diese in 100 * 1MB Blöcke aufteilen. Wenn es jetzt zu einer Beschädigung in einem Block kommt, können wir diesen mit Widerherstellungsdaten reparieren, sofern wir vor der Beschädigung welche angelegt hatten. Wenn wir für die Datei 5% Wiederherstellungsdaten angelegt hatten, entspräche das 5 x 1MB die repariert werden könnten unabhängig davon wo die Fehler in der Datei aufgetreten sind.

Winrar nutzt für das Erstellen der Wiederherstellungsdaten 4 verschiedene Formeln, je nach größe des Archivs.

Unter ca. 10KB
Die Formel hierfür konnte ich leider nicht rausfinden.

Ab ca. 10KB bis 200KB (204800Bytes)
Archivgröße / Blockgröße 1024 Byte = Anzahl Blöcke
Winrar kann die Menge an Bytes auch geringfügig nach unten anpassen. Vermutlich damit die Gleichung besser aufgeht.
Bis 200KB arbeitet Winrar mit Blockgrößen von ca. 1024 Bytes. Angepasst wird in erster Linie die Anzahl der Blöcke. Dieses System wird beibehalten bis 200 Blöcke (entspricht 200KB) erreicht wurden.

Ab 200KB bis 12,5MB (13107200Bytes)
Archivgröße / 200 Blöcke = Blockgröße
Für Archive ab 200KB wird die Anzahl der Blöcke erstmal nicht mehr verändert. Diese bleiben bis zu einer Archivgröße von 12,5MB unverändert bei 200 Stück. Stattdessen wird die Blockgröße angepasst bis diese 64KB (65536Bytes) erreicht. 200 Blöcke * 64 KB entspicht 12,5MB.

Über 12,5MB
Archivgröße / Blockgröße 64KB = Anzahl Blöcke
Wir sind wieder bei der gleichen Formel wie bei "bis 200KB", nur dieses mal mit 64KB großen Blöcken. Die 64KB sind fix und werden sich auch nicht mehr ändern, unabhängig davon wie groß das Archiv ist. Lediglich die Anzahl der Blöcke erhöht sich je größer das Archiv ist.
Meine größtes Archiv hatte 51,6GB. Dies entspricht 821600 Blöcken je 64KB.

Weiteres
Par2 ist auf max. 32768 Blöcke beschränkt. Ein Limit das für die RAR Wiederherstellungsdaten offensichtlich nicht gilt.
Getestet mit WinRAR 6.11 64Bit. Format RAR5. 1KB einspricht 1024Bytes (nicht 1000Bytes). Angegebene Archivgröße immer ohne größe der Widerherstellungsdaten.
Englischer Blogbeitrag über RAR Wiederherstellungsdaten(nicht von mir): https://www.liamfoot.com/analysing-the-effectiveness-of-winrar-s-rar5-recovery-records
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Hellyeah und Innensechskant
greybit schrieb:
Da es mich einige Zeit gekostet hat, fände ich es etwas schade meine Erkenntnisse nur für mich zu behalten und möchte sie hier mit euch teilen.
Nichts für ungut, aber du hast eigentlich nur Zahlen gepostet, die ohne Angaben zu den Daten, wie du deine Zahlen ermittelt hast eigentlich unbrauchbar sind.
Wenn du sowas ernsthaft betreiben willst (was ich löblich finde), dann musst du deine Daten offen legen.
Also Erhebungsmethode, welche Rohdaten du genutzt hast, welche Methoden du benutzt hast.
Das fehlt hier leider alles.

Ich weiß natürlich, dass wir uns hier in keinem wissenschaftlich basiertem Forum bewegen, aber das was du hier an Statistik raushaust, ist einfach irreführend, ohne die zu Grunde liegenden Daten mit zu veröffentlichen.

So einfach unbrauchbar, da einfach keine Basis da ist um deine Angaben a) zu überprüfen und b) auf Allgemeingültigkeit hin zu testen.

Nicht falsch verstehen, ich finde solche Beiträge grundsätzlich gut, wenn sie gut gemacht sind. Bei dir fehlt aber leider alles an Ausgangsinformationen. Du postest nur ein Ergebnis und das ist somit einfach nichts sagend.
 
  • Gefällt mir
Reaktionen: PHuV und Gimpelgrauser
Zusätzlich kann man die jeweilige Skalierung vielen n WinRAR und Par2 in ne kleine Tabelle werfen. Das ist deutlich übersichtlicher.

Es stellt sich außerdem die Frage, was denn eigentlich das Problem war, was du mit deiner Untersuchung lösen wolltest.

Und noch was: Par2 ist in gewissen Kreisen einfach der Standard - egal wie schlecht. Wobei es schon super informativ ist, wie stark es limitiert ist.
 
rg88 schrieb:
du hast eigentlich nur Zahlen gepostet, die ohne Angaben zu den Daten, wie du deine Zahlen ermittelt hast eigentlich unbrauchbar sind.
Es war anfangs nicht mein Plan meine Ergebnisse in einem Post zu teilen. Daher habe ich auch keine Belege gesammelt.

Jeder sollte aber in der Lage sein meine Ergenisse zu überprüfen.

So funktionierts:
  • Eine RAR5 Datei mit Widerherstellungsdaten in WinRAR erstellen (%satz an Widerherstellungsdaten ist unrelevant).
  • Die RAR Datei am Anfang leicht beschädigen/verändern. Z.B. mit einem Texteditor, Hexeditor druch löschen eines Zeichens oder dem cmd "copy /b" Befehl.
  • Die Datei in WinRAR öffnen und "Archiv reparieren" wählen.
  • Nach erfolgreicher Reperatur zeigt WinRAR die Anzahl der Blöcke und Blockgröße an.

Wie im Bild zu sehen beträgt die Blockgröße 1024 Bytes * der angegebenen 59 Blöcke = 60416 Bytes
Ebenfalls ist im Bild oben die Original Dateigröße zu sehen. Diese beträgt 61971 Bytes. Das die Datei immer etwas größer ausfällt als die Blöcke * Bytes ist normal, da die Datei noch zusätzlich Wiederherstellungsdaten enthält die auch Speicherplatz benötigen.

Mit dieser Vorgehensweise kann jetzt jeder der möchte überprüfen, ob meine Formeln korrekt sind.


andy_0 schrieb:
Zusätzlich kann man die jeweilige Skalierung vielen n WinRAR und Par2 in ne kleine Tabelle werfen.
Du kannst RAR und Par2 nicht wirklich in einer Tabelle vergleichen, da du bei Par2 die Blockgröße und Blockmenge so einstellen kannst wie du willst, sofern du 32768 Blöcke nicht überschreitest.
 

Anhänge

  • winrar.PNG
    winrar.PNG
    39 KB · Aufrufe: 145
Ich stelle jetzt mal eine ganz verwegene Frage:
Wozu braucht man diese Information überhaupt?

Um ein Archiv zu splitten, brauche ich kein Zusatztool. Oder geht es hier um eine bessere Fehlertoleranz bei korrupten Dateien?
PAR-Dateien kenne ich nur aus der Warez-Szene...
 
  • Gefällt mir
Reaktionen: brianmolko, IceKillFX57, Gimpelgrauser und eine weitere Person
greybit schrieb:
In Multipar (par2) kann jede Kleinigkeit eingestellt werden wie Blockgröße und Anzahl der Blöcke. Eine Einstellung die es in Winrar nicht gibt und zu der ich auch ansonsten Online keine Informationen gefunden habe.
Warum hast Du hier nicht einfach beim Support angefragt?
 
KnolleJupp schrieb:
Wozu braucht man diese Information überhaupt?
Ich schließe mich der Frage an. Wozu?
Seit 56k-Zeiten kann ich mich nicht mehr an defekte Archive erinnern.
Selbst heute vergleiche ich nur alle Schaltjahr bei wichtigen Dateien die Prüfsummen - und auch da hatte noch nie ein Problem.
Also für was zum Geier braucht man das? :confused_alt:
 
KnolleJupp schrieb:
Wozu braucht man diese Information überhaupt?

Um ein Archiv zu splitten, brauche ich kein Zusatztool. Oder geht es hier um eine bessere Fehlertoleranz bei korrupten Dateien?
PAR-Dateien kenne ich nur aus der Warez-Szene...
Es geht hier nicht um das splitten von Archiven und auch nicht um Warez.

Ich persönlich nutze das RAR Format zum archivieren meiner Backups, teilweise von sehr wichtigen Unterlagen.
Für den Fall das ich meine Archive eines Tages tatsächlich wiederherstellen muss ist es besser zu wissen wie und das es funktioniert als nur blind darauf zu hoffen das es funktioniert.

Zudem kommt in Foren immer wieder die Frage auf wie viele Wiederherstellungsdaten in % man bei WinRAR einstellen soll. Dann gibt überlicherweise Antworten wie "ich nutze 3%, 5%, 10% ...". Aber keiner kann wirklich begründen, warum er wie viel % nutzt. Mit den obigen Formeln kannst du jetzt z.B. berechnen, wie viele Blöcke dein Archiv hat. Mal dem %satz an Wiederherstellungsdaten, wie viele Widerherstellungsblöcke erstellt werden, also an wie vielen Stellen das Archiv kaputt sein darf und trotzdem noch repariert werden kann. Und ich persönlich kann jetzt für mich daraus schließen, dass der WinRAR Standart%satz von 3% absolut ausreichend ist.

PS: Wiederherstellungsdaten schützen natürlich nicht vor einem Komplettausfall der Festplatte.

MORPEUS schrieb:
Selbst heute vergleiche ich nur alle Schaltjahr bei wichtigen Dateien die Prüfsummen - und auch da hatte noch nie ein Problem.
Die warscheinlichkeit das es zu Fehlern kommt ist heute natürlich nicht mehr so groß wie früher. Zu 100% ausschließen kannst du es trotzdem nicht. Falls deine Prüfsumme eines Tages doch nicht mehr stimmen sollte, könntest du froh sein, du hättest Wiederherstellungsdaten gehabt.

Aber ja, Wiederherstellungsdaten sind optional. Im Idealfall hat man keine defekten Daten und wird sie daher niemals brauchen.
 
greybit schrieb:
Par2 ist auf max. 32768 Blöcke beschränkt.
Auch ohne mich da nach Jahrzehnten wieder einzulesen: eine Datei, bei der mehr wie 32k Blöcke defekt sind, ist wohl vollkommen kaputt. Wenn ich mit sowas rechne, dann müsste man die PAR2-Daten auf anderen, zuverlässigeren Speichermedien sichern. Aber warum nutzt man diese (bekannt) zuverlässigeren dann nicht gleich für die Daten? Es wird wohl niemand hingehen und eine Blockgröße von einem Byte nutzen.

Kann WinRAR (oder gar UnRAR) transparent mit den Wiederherstellungsdaten umgehen und diese während dem Entpacken anwenden? Oder muss man da auch erst einmal das Archiv korrigieren lassen, wie es mit PAR2 zwingend der Fall ist?

greybit schrieb:
Du kannst RAR und Par2 nicht wirklich in einer Tabelle vergleichen, da du bei Par2 die Blockgröße und Blockmenge so einstellen kannst wie du willst, sofern du 32768 Blöcke nicht überschreitest.
Wenn ich 100% Redundanz haben will, nehme ich eher entsprechende Dateisysteme. Dass ein paar physikalische Sektoren des Datenträgers ausfallen, mag man ja noch als realistisch ansehen. Aber selbst bei den schlimmsten DVD-Rs war das bei mir nie mehr wie 5-10%, falls die DVD-R überhaupt noch lesbar war.

KnolleJupp schrieb:
Um ein Archiv zu splitten, brauche ich kein Zusatztool. Oder geht es hier um eine bessere Fehlertoleranz bei korrupten Dateien?
In der Regel geht es genau darum. Egal, ob die Archive auf DVD oder HDD gesichert werden. BitRot oder defekte Sektoren kann es immer geben.

MORPEUS schrieb:
Also für was zum Geier braucht man das?
Du brauchst es offensichtlich für nichts, da Du entweder keine Langzeit-Archive hast oder den redundanten Speichermedien zu 100% vertraust. Immerhin scheinst Du, im Gegensatz zu den allermeisten, die im Privatberecih über sowas schreiben, Prüfsummen Deiner Dateien zu haben. Bleibt zu hoffen, dass nicht die selbe Datei auf zwei Datenträgen unterschiedlich defekt ist und Dir das Dateisystem nicht sagt, welche Blöcke noch ok sind.
 
gymfan schrieb:
eine Datei, bei der mehr wie 32k Blöcke defekt sind, ist wohl vollkommen kaputt.
Die zu schützende Datei kann in max. 32k Blöcke unterteilt werden. Aber die Blockgröße bei par2 kann Größer als die 64kb sein, die WinRAR nutzt.
Beispiel für eine 51,6GB Datei:
Winrar = 821.600 Blöcke je 65536 Bytes
par2 / Multipar = 32.768 Blöcke je 1.693.692 Bytes

gymfan schrieb:
Kann WinRAR (oder gar UnRAR) transparent mit den Wiederherstellungsdaten umgehen und diese während dem Entpacken anwenden?
Nein, leider nicht. Das Archiv muss erst repariert werden. In einem Rutsch geht das nicht. Eine Reperatur ist mit WinRAR und RAR (cmd/Terminal Programm) möglich. UnRAR kann keine Archive reparieren.
 

Anhänge

  • multipar.PNG
    multipar.PNG
    46,5 KB · Aufrufe: 107
greybit schrieb:
Nein, leider nicht. Das Archiv muss erst repariert werden.
Was dann für mich (wie bei PAR2) noch ein Grund mehr wäre, nicht so riesige Archive zu nutzen. Gerade dort hätte sich WinRAR sehr positiv von der Lösung aus zwei Tools absetzen können.

greybit schrieb:
UnRAR kann keine Archive reparieren.
Immer noch nicht? Der Quelltext in GitHUB sah mir danach aus, als ob er RAR5 untertsützen würde. Das ist dann wohl nur eine Teilmenge der möglichen Features von RAR5, schade.

Aber gut, damit wäre WinRAR für mich völlig raus. Meine Archive muss ich mit quelloffenen Tools entpacken können. Wenn ich dann solche Features nuzte, müssen die auch unterstützt werden. Ich weiss heute nicht, ob ich in 5 Jahren noch ein lauffähiges Windows haben werden.
 
gymfan schrieb:
Immer noch nicht? Der Quelltext in GitHUB sah mir danach aus, als ob er RAR5 untertsützen würde.
RAR5 wird auch unterstützt. Allerdings nur die Funktionen die zum entpacken notwendig sind. UnRAR ist kein Community Projekt, sondern ein kostenloses Programm das vom WinRAR Entwickler zum entpacken bereitgestellt wird. Das Programm ist zwar open source, allerdings mit der Klausel, dass es nicht dazu genutzt werden darf um das RAR Format nachzubauen.
Dass das Feature zum reparieren nicht enthalten ist, ärgert auch mich, da es eigentlich im falle einer Beschädigung zum entpacken notwendig wäre.

gymfan schrieb:
Ich weiss heute nicht, ob ich in 5 Jahren noch ein lauffähiges Windows haben werden.
Open Source ist RAR zwar nicht, aber auf Windows angewiesen ist man auch nicht zwingend.

WinRAR x64 (64 bit) 6.11Graphical and command line
Trial​
3397 KB​
WinRAR x86 (32 bit) 6.11Graphical and command line
Trial​
3151 KB​
RAR for Android 6.20 build 112 local copyGraphical only
Free​
6025 KB​
RAR 6.12 for Linux x64Command line only
Trial​
590 KB​
RAR 6.12 for Linux x86Command line only
Trial​
602 KB​
RAR 6.12 for FreeBSD x64Command line only
Trial​
594 KB​
RAR 6.12 for FreeBSD x86Command line only
Trial​
552 KB​
RAR 6.12 for macOS ARMCommand line only
Trial​
549 KB​
RAR 6.12 for macOS x64Command line only
Trial​
585 KB​

Kopiert von rarlab.com

Edit: Wenn es auf keinen Fall Closed Source sein soll, dann würde wohl am ehesten .7z + .par2 in Frage kommen.
Vielleicht sogar par3 in Zukunft: https://parchive.github.io/doc/Parity_Volume_Set_Specification_v3.0.html
 
Zuletzt bearbeitet:
Zurück
Oben