Come è possibile che WinRAR possa riparare qualsiasi volume con un solo file .rev?


31

Ho appena imparato a conoscere .revi file con WinRAR - dove se si dispone di un volume RAR 10-parte, per esempio, più uno .rev(recupero) del volume - il .revvolume di sarà in grado di "fissare" ogni uno danneggiato .rarvolume.

Com'è possibile? Non capisco come un volume possa avere tutti i dati per riparare tutti / tutti i volumi individualmente rotti.

Immagino che sia forse possibile al posto dei volumi non suddivisi "linearmente", come sto immaginando, in cui ogni volume RAR contiene file distinti e individuali del tutto racchiuso all'interno; ma piuttosto, forse, .revla riparazione è possibile quando i volumi RAR sono visti come un unico file continuo di bit e byte, per così dire, e che forse c'è qualche stregoneria CRC'ish (ah hem, "lavori di riparazione") coinvolti per risolvere byte danneggiato.

Ma non capisco come puoi avere 9 volumi di lavoro con 1 danneggiato, ma ho un volume di recupero che può riparare uno qualsiasi dei volumi. In che modo un volume è in grado di contenere i dati di "tutti" i volumi?


3
Codici di correzione della cancellazione. Confronta con en.wikipedia.org/wiki/Parchive
Dan D.

Risposte:


55

Prendiamo un caso davvero semplice.

Hai quattro volumi e un volume di recupero, ciascuno con 1 bit di informazioni al suo interno:

         ========================================================
Volumes: = Volume 1 = Volume 2 = Volume 3 = Volume 4 = Recovery =
         =----------=----------=----------=----------=----------=
   Bits: =    1     =    0     =    1     =    1     =     1    =
         ========================================================

Il volume di recupero conterrebbe il risultato di ciascuno di questi bit XOR d insieme:

1 XOR 0 XOR 1 XOR 1 = 1

Quindi, il nostro volume di recupero contiene il singolo bit 1.


Ora, diciamo che il volume 1 fallisce.

Se eseguiamo l'XOR dei restanti volumi 2, 3 e 4 con il bit di ripristino al posto del volume non riuscito otteniamo:

1 XOR 0 XOR 1 XOR 1 = 1
^

Quindi, questo ci dice che il volume 1 conteneva 1, poiché è il risultato dell'equazione.

Facciamo finta che il volume 2 sia invece morto, quindi sostituiamo il suo valore nell'equazione con il bit di recupero:

1 XOR 1 XOR 1 XOR 1 = 0
      ^

Quindi sappiamo che il volume 2 conteneva 0, poiché è il risultato dell'equazione.

Se il volume 3 o 4 fallisse, entrambi produrrebbero 1in questa equazione.


Pertanto, se uno qualsiasi dei volumi ha esito negativo, è possibile utilizzare il volume di recupero per ricostruire i dati in base ai volumi rimanenti. Questa è probabilmente la forma più semplice di correzione degli errori che puoi avere. Se due volumi falliscono, non è possibile recuperare nulla.


4
Per essere chiari, ci sono schemi che ti consentono di recuperare da errori di più volumi.
Dietrich Epp,

Funziona solo se sai quale dispositivo non funziona, vero?
heinrich5991,

1
@ heinrich5991 lo sai dal CRC interno del volume
maniaco del cricchetto

21

Per un modo davvero semplice per capire come potrebbe essere, immagina se il volume di recupero contenesse la somma degli altri volumi. Con un elenco di numeri, uno mancante e la loro somma, è sempre possibile ricostruire il numero mancante.

Ad esempio, considera questi numeri a due cifre, 13, 88, 17, 43. Se sapessi che c'era un numero mancante e le ultime due cifre della somma di tutti i numeri erano 81, potresti trovare il numero mancante. 13 + 88 + 17 + 43 = 161. L'unico numero a due cifre che puoi aggiungere a quello per creare un numero che termina in 81 è 20.

Supponiamo che tu abbia il 20 e che manchi il 43. 13 + 88 + 17 + 20 = 138. L'unico numero a due cifre che puoi aggiungere a quello per fare un numero che termina in 81 è 43.

Pertanto, il numero di recupero consente di trovare un numero mancante.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.