PAR2
PAR1/PAR2 sind Dateiformate, die Vorwärtsfehlerkorrektur-Daten für eine oder mehrere Dateien enthalten. Damit kann der Empfänger mittels der eingeführten Redundanz die Originaldateien rekonstruieren, wenn durch Übertragungsfehler oder Fehler im Speichermedium die Dateien fehlerhaft geworden sind. Für die Erstellung sowie zur Prüfung wird der Reed-Solomon-Code benutzt, der beim Lesen oder Empfangen digitaler Daten Fehler erkennen und korrigieren kann.
Die Datei(en) mit Fehlerkorrektur-Daten kann(können) aus einer oder mehreren Ausgangsdateien erstellt werden. Diese werden dabei intern virtuell in so genannte Slices gestückelt. Die Fehlerkorrektur-Daten werden dann in derselben Weise wie bei PAR1 gebildet, allerdings nicht von den Dateien, sondern von den Slices. Anhand dieser zusätzlich zu den eigentlichen Daten übertragenen Prüfsummen(-datei(en)) können Programme wie Quickpar prüfen, ob die Ausgangsdateien fehlerfrei übermittelt wurden und notfalls fehlende Daten ersetzen oder auch verfälschte reparieren.
Beim Erstellen von PAR2-Dateien lässt sich die Größe der Slices sowie der Grad der Redundanz vorgeben. Wird ein zu geringer Grad gewählt (kleiner als ein Slice) kann keine spätere Reparatur mehr erfolgen. Die Gesamtlänge der PAR2-Datei(en) steht in keinem festen Verhältnis zu den Ausgangsdateien und richtet sich nach dem Grad der Redundanz. Es ist also möglich, eine 100 MB große Datei mittels einer nur 1 MB großen PAR2-Datei zu reparieren – vorausgesetzt, es treten nur in einem kleinen Bereich der Datei Fehler auf.
Bei einem festgestellten Übertragungsfehler in einer Ausgangsdatei muss mindestens ein Slice ersetzt werden, wozu der entsprechende Recoveryblock aus einer PAR2-Datei benötigt wird, die üblicherweise mehrere solcher Blöcke enthält.
Zur Reparatur wird eine gewisse Anzahl von ihnen benötigt. Die genaue Anzahl kann variieren, so dass man sich die passende Kombination von PAR2-Dateien gezielt herunterladen kann, die benötigt wird.
Die Dateinamenskonvention einer PAR2-Datei sieht so aus:
- dateiname.ext.volFFF+NNN.par2
FFF steht für den Startindex der in dieser Datei vorhandenen Recoveryblöcke, NNN für deren Anzahl. Wenn also 20 Recoveryblöcke benötigt werden, besteht die Möglichkeit, eine PAR2-Datei mit 20 Blöcken, oder zum Beispiel 20 PAR2-Dateien mit je einem Block zu verwenden.
Implementierungen
Quickpar ist ein Windowsprogramm, das die Erstellung, Prüfung und Reparatur von Archiv-Dateien mit PAR2 beherrscht.
MultiPar ist ebenfalls ein Windowsprogramm, bietet aber deutlich mehr Optionen als Quickpar und ist zudem multicore-fähig.
par2 ist die Open-Source-Implementierung im Paket par2cmdline. Es wird im Projekt parchive für Linux und Windows entwickelt. Eine Version mit Multi-Threading existiert.
Weblinks
- Quickpar
- Projekt parchive - Implementierung für Linux
- <templatestyles src="Webarchiv/styles.css" />{{#if:20080718214627
| {{#ifeq: 20080718214627 | *
| {{#if: parchive mit multithreading - par2cmdline 0.4 mit Intel Thread Building Blocks 2.0 | {{#invoke:WLink|getEscapedTitle|parchive mit multithreading - par2cmdline 0.4 mit Intel Thread Building Blocks 2.0}} | {{#invoke:Webarchiv|getdomain|http://chuchusoft.com/par2_tbb/index.html}} }} (Archivversionen)
| {{#iferror: {{#time: j. F Y|20080718214627}}
| {{#if: || }}Der Wert des Parameters {{#if: wayback | wayback | Datum }} muss ein gültiger Zeitstempel der Form YYYYMMDDHHMMSS sein!
| {{#if: parchive mit multithreading - par2cmdline 0.4 mit Intel Thread Building Blocks 2.0 | {{#invoke:WLink|getEscapedTitle|parchive mit multithreading - par2cmdline 0.4 mit Intel Thread Building Blocks 2.0}} | {{#invoke:Webarchiv|getdomain|http://chuchusoft.com/par2_tbb/index.html}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer }} vom {{#time: j. F Y|20080718214627}} im Internet Archive{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
}}
}}
| {{#if:
| {{#iferror: {{#time: j. F Y|{{{webciteID}}}}}
| {{#switch: {{#invoke:Str|len|{{{webciteID}}}}}
| 16= {{#if: parchive mit multithreading - par2cmdline 0.4 mit Intel Thread Building Blocks 2.0 | {{#invoke:WLink|getEscapedTitle|parchive mit multithreading - par2cmdline 0.4 mit Intel Thread Building Blocks 2.0}} | {{#invoke:Webarchiv|getdomain|http://chuchusoft.com/par2_tbb/index.html}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer }} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{{webciteID}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
| 9 = {{#if: parchive mit multithreading - par2cmdline 0.4 mit Intel Thread Building Blocks 2.0 | {{#invoke:WLink|getEscapedTitle|parchive mit multithreading - par2cmdline 0.4 mit Intel Thread Building Blocks 2.0}} | {{#invoke:Webarchiv|getdomain|http://chuchusoft.com/par2_tbb/index.html}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer}} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{#invoke:Expr|base62|{{{webciteID}}}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
| #default= Der Wert des Parameters {{#if: webciteID | webciteID | ID }} muss entweder ein Zeitstempel der Form YYYYMMDDHHMMSS oder ein Schüsselwert mit 9 Zeichen oder eine 16-stellige Zahl sein!{{#if: || }}
}}
| c|{{{webciteID}}}}} {{#if: parchive mit multithreading - par2cmdline 0.4 mit Intel Thread Building Blocks 2.0 | {{#invoke:WLink|getEscapedTitle|parchive mit multithreading - par2cmdline 0.4 mit Intel Thread Building Blocks 2.0}} | {{#invoke:Webarchiv|getdomain|http://chuchusoft.com/par2_tbb/index.html}} }} ({{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer}} vom {{#time: j. F Y|{{{webciteID}}}}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
}}
| {{#if:
| Vorlage:Webarchiv/Today
| {{#if:
| Vorlage:Webarchiv/Generisch
| {{#if: parchive mit multithreading - par2cmdline 0.4 mit Intel Thread Building Blocks 2.0 | {{#invoke:WLink|getEscapedTitle|parchive mit multithreading - par2cmdline 0.4 mit Intel Thread Building Blocks 2.0}} | {{#invoke:Webarchiv|getdomain|http://chuchusoft.com/par2_tbb/index.html}} }}
}}}}}}}}{{#if:
| Vorlage:Webarchiv/archiv-bot
}}{{#invoke:TemplatePar|check
|all = url=
|opt = text= wayback= webciteID= archive-is= archive-today= archiv-url= archiv-datum= ()= archiv-bot= format= original=
|cat = Wikipedia:Vorlagenfehler/Vorlage:Webarchiv
|errNS = 0
|template = Vorlage:Webarchiv
|format = *
|preview = 1
}}{{#ifexpr: {{#if:20080718214627|1|0}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}} <> 1
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Genau einer der Parameter 'wayback', 'webciteID', 'archive-today', 'archive-is' oder 'archiv-url' muss angegeben werden.|1}}
}}{{#if:
| {{#switch: {{#invoke:Webarchiv|getdomain|{{{archiv-url}}}}}
| web.archive.org =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von Internet Archive erkannt, bitte Parameter 'wayback' benutzen.|1}}
| webcitation.org =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von WebCite erkannt, bitte Parameter 'webciteID' benutzen.|1}}
| archive.today |archive.is |archive.ph |archive.fo |archive.li |archive.md |archive.vn =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von archive.today erkannt, bitte Parameter 'archive-today' benutzen.|1}}
}}{{#if:
| {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Wert des Parameter 'archiv-datum' ist ungültig oder hat ein ungültiges Format.|1}}
| }}
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Pflichtparameter 'archiv-datum' wurde nicht angegeben.|1}}
}}
| {{#if:
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Parameter 'archiv-datum' ist nur in Verbindung mit 'archiv-url' angebbar.|1}}
}}
}}{{#if:{{#invoke:URLutil|isHostPathResource|http://chuchusoft.com/par2_tbb/index.html}}
|| {{#if: || }}
}}{{#if: parchive mit multithreading - par2cmdline 0.4 mit Intel Thread Building Blocks 2.0
| {{#if: {{#invoke:WLink|isBracketedLink|parchive mit multithreading - par2cmdline 0.4 mit Intel Thread Building Blocks 2.0}}
| {{#if: || }}
}}
| {{#if: || }}
}}{{#switch:
|addlarchives|addlpages= {{#if: || }}{{#if: 1 |}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: enWP-Wert im Parameter 'format'.|1}}
}}{{#ifeq: {{#invoke:Str|find|http://chuchusoft.com/par2_tbb/index.html%7Carchiv}} |-1
|| {{#ifeq: {{#invoke:Str|find|{{#invoke:Str|cropleft|http://chuchusoft.com/par2_tbb/index.html%7C4}}%7Chttp}} |-1
|| {{#switch: {{#invoke:Webarchiv|getdomain|http://chuchusoft.com/par2_tbb/index.html }}
| abendblatt.de | daserste.ndr.de | inarchive.com | webcitation.org =
| #default = {{#if: || }}{{#if: 1 |}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Archiv-URL im Parameter 'url' anstatt URL der Originalquelle. Entferne den vor der Original-URL stehenden Mementobestandteil und setze den Archivierungszeitstempel in den Parameter 'wayback', 'webciteID', 'archive.today' oder 'archive-is' ein, sofern nicht bereits befüllt.|1}}
}}
}}
}}
- <templatestyles src="Webarchiv/styles.css" />{{#if:20141212202746
| {{#ifeq: 20141212202746 | *
| {{#if: parchive mit multithreading - par2cmdline 0.4 mit Intel Thread Building Blocks 2.0 *Wayback-Archive-Version* | {{#invoke:WLink|getEscapedTitle|parchive mit multithreading - par2cmdline 0.4 mit Intel Thread Building Blocks 2.0 *Wayback-Archive-Version*}} | {{#invoke:Webarchiv|getdomain|http://chuchusoft.com/par2_tbb/download.html}} }} (Archivversionen)
| {{#iferror: {{#time: j. F Y|20141212202746}}
| {{#if: || }}Der Wert des Parameters {{#if: wayback | wayback | Datum }} muss ein gültiger Zeitstempel der Form YYYYMMDDHHMMSS sein!
| {{#if: parchive mit multithreading - par2cmdline 0.4 mit Intel Thread Building Blocks 2.0 *Wayback-Archive-Version* | {{#invoke:WLink|getEscapedTitle|parchive mit multithreading - par2cmdline 0.4 mit Intel Thread Building Blocks 2.0 *Wayback-Archive-Version*}} | {{#invoke:Webarchiv|getdomain|http://chuchusoft.com/par2_tbb/download.html}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer }} vom {{#time: j. F Y|20141212202746}} im Internet Archive{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
}}
}}
| {{#if:
| {{#iferror: {{#time: j. F Y|{{{webciteID}}}}}
| {{#switch: {{#invoke:Str|len|{{{webciteID}}}}}
| 16= {{#if: parchive mit multithreading - par2cmdline 0.4 mit Intel Thread Building Blocks 2.0 *Wayback-Archive-Version* | {{#invoke:WLink|getEscapedTitle|parchive mit multithreading - par2cmdline 0.4 mit Intel Thread Building Blocks 2.0 *Wayback-Archive-Version*}} | {{#invoke:Webarchiv|getdomain|http://chuchusoft.com/par2_tbb/download.html}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer }} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{{webciteID}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
| 9 = {{#if: parchive mit multithreading - par2cmdline 0.4 mit Intel Thread Building Blocks 2.0 *Wayback-Archive-Version* | {{#invoke:WLink|getEscapedTitle|parchive mit multithreading - par2cmdline 0.4 mit Intel Thread Building Blocks 2.0 *Wayback-Archive-Version*}} | {{#invoke:Webarchiv|getdomain|http://chuchusoft.com/par2_tbb/download.html}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer}} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{#invoke:Expr|base62|{{{webciteID}}}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
| #default= Der Wert des Parameters {{#if: webciteID | webciteID | ID }} muss entweder ein Zeitstempel der Form YYYYMMDDHHMMSS oder ein Schüsselwert mit 9 Zeichen oder eine 16-stellige Zahl sein!{{#if: || }}
}}
| c|{{{webciteID}}}}} {{#if: parchive mit multithreading - par2cmdline 0.4 mit Intel Thread Building Blocks 2.0 *Wayback-Archive-Version* | {{#invoke:WLink|getEscapedTitle|parchive mit multithreading - par2cmdline 0.4 mit Intel Thread Building Blocks 2.0 *Wayback-Archive-Version*}} | {{#invoke:Webarchiv|getdomain|http://chuchusoft.com/par2_tbb/download.html}} }} ({{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer}} vom {{#time: j. F Y|{{{webciteID}}}}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
}}
| {{#if:
| Vorlage:Webarchiv/Today
| {{#if:
| Vorlage:Webarchiv/Generisch
| {{#if: parchive mit multithreading - par2cmdline 0.4 mit Intel Thread Building Blocks 2.0 *Wayback-Archive-Version* | {{#invoke:WLink|getEscapedTitle|parchive mit multithreading - par2cmdline 0.4 mit Intel Thread Building Blocks 2.0 *Wayback-Archive-Version*}} | {{#invoke:Webarchiv|getdomain|http://chuchusoft.com/par2_tbb/download.html}} }}
}}}}}}}}{{#if:
| Vorlage:Webarchiv/archiv-bot
}}{{#invoke:TemplatePar|check
|all = url=
|opt = text= wayback= webciteID= archive-is= archive-today= archiv-url= archiv-datum= ()= archiv-bot= format= original=
|cat = Wikipedia:Vorlagenfehler/Vorlage:Webarchiv
|errNS = 0
|template = Vorlage:Webarchiv
|format = *
|preview = 1
}}{{#ifexpr: {{#if:20141212202746|1|0}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}} <> 1
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Genau einer der Parameter 'wayback', 'webciteID', 'archive-today', 'archive-is' oder 'archiv-url' muss angegeben werden.|1}}
}}{{#if:
| {{#switch: {{#invoke:Webarchiv|getdomain|{{{archiv-url}}}}}
| web.archive.org =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von Internet Archive erkannt, bitte Parameter 'wayback' benutzen.|1}}
| webcitation.org =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von WebCite erkannt, bitte Parameter 'webciteID' benutzen.|1}}
| archive.today |archive.is |archive.ph |archive.fo |archive.li |archive.md |archive.vn =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von archive.today erkannt, bitte Parameter 'archive-today' benutzen.|1}}
}}{{#if:
| {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Wert des Parameter 'archiv-datum' ist ungültig oder hat ein ungültiges Format.|1}}
| }}
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Pflichtparameter 'archiv-datum' wurde nicht angegeben.|1}}
}}
| {{#if:
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Parameter 'archiv-datum' ist nur in Verbindung mit 'archiv-url' angebbar.|1}}
}}
}}{{#if:{{#invoke:URLutil|isHostPathResource|http://chuchusoft.com/par2_tbb/download.html}}
|| {{#if: || }}
}}{{#if: parchive mit multithreading - par2cmdline 0.4 mit Intel Thread Building Blocks 2.0 *Wayback-Archive-Version*
| {{#if: {{#invoke:WLink|isBracketedLink|parchive mit multithreading - par2cmdline 0.4 mit Intel Thread Building Blocks 2.0 *Wayback-Archive-Version*}}
| {{#if: || }}
}}
| {{#if: || }}
}}{{#switch:
|addlarchives|addlpages= {{#if: || }}{{#if: 1 |}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: enWP-Wert im Parameter 'format'.|1}}
}}{{#ifeq: {{#invoke:Str|find|http://chuchusoft.com/par2_tbb/download.html%7Carchiv}} |-1
|| {{#ifeq: {{#invoke:Str|find|{{#invoke:Str|cropleft|http://chuchusoft.com/par2_tbb/download.html%7C4}}%7Chttp}} |-1
|| {{#switch: {{#invoke:Webarchiv|getdomain|http://chuchusoft.com/par2_tbb/download.html }}
| abendblatt.de | daserste.ndr.de | inarchive.com | webcitation.org =
| #default = {{#if: || }}{{#if: 1 |}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Archiv-URL im Parameter 'url' anstatt URL der Originalquelle. Entferne den vor der Original-URL stehenden Mementobestandteil und setze den Archivierungszeitstempel in den Parameter 'wayback', 'webciteID', 'archive.today' oder 'archive-is' ein, sofern nicht bereits befüllt.|1}}
}}
}}
}}
- phpar2 - par2cmdline Weiterentwicklung mit multithreading und hochoptimiertem Assemblercode
- MacPAR deLuxe - Programm für Mac OS X zur Erstellung, Prüfung und Reparatur von Archiv-Dateien mit PAR2