¿Cómo es posible que WinRAR pueda reparar cualquier volumen con un archivo .rev?


31

Acabo de aprender acerca de .revlos archivos con WinRAR - donde si usted tiene un volumen RAR de 10 capítulos, por ejemplo, más uno .rev(recuperación) de volumen - el .revvolumen a ser capaz de "solución" todo un corrupto .rarvolumen.

¿Cómo es esto posible? No entiendo cómo un volumen podría tener todos los datos para arreglar alguno / todos los volúmenes rotos individualmente.

Supongo que tal vez sea posible en lugar de que los volúmenes no se dividan "linealmente", como me imagino, donde cada volumen RAR contiene archivos distintos e individuales de todo el paquete; sino más bien, tal vez la .revreparación sea posible cuando los volúmenes RAR se ven como un archivo continuo de bits y bytes, por así decirlo, y que tal vez haya algo de brujería CRC'ish (ah hem, "trabajo de reparación") para reparar bytes corruptos.

Pero simplemente no entiendo cómo puede tener 9 volúmenes de trabajo con 1 dañado, sin embargo, tener un volumen de recuperación que pueda reparar cualquiera de los volúmenes. ¿Cómo puede un volumen contener datos de "todos" los volúmenes?


3
Códigos de corrección de borrado. Compare con en.wikipedia.org/wiki/Parchive
Dan D.

Respuestas:


55

Tomemos un caso realmente simple.

Tiene cuatro volúmenes y un volumen de recuperación, cada uno con 1 bit de información:

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

El volumen de recuperación contendría el resultado de cada uno de estos bits XOR d juntos:

1 XOR 0 XOR 1 XOR 1 = 1

Entonces, nuestro volumen de recuperación contiene un solo bit 1.


Ahora, digamos que el volumen 1 falla.

Si aplicamos XOR a los volúmenes restantes 2, 3 y 4 con el bit de recuperación en lugar del volumen fallido, obtenemos:

1 XOR 0 XOR 1 XOR 1 = 1
^

Entonces, esto nos dice que el volumen 1 contenía 1, ya que es el resultado de la ecuación.

Supongamos que el volumen 2 murió, por lo que reemplazamos su valor en la ecuación con el bit de recuperación:

1 XOR 1 XOR 1 XOR 1 = 0
      ^

Entonces sabemos que el volumen 2 contenía 0, ya que es el resultado de la ecuación.

Si el volumen 3 o 4 fallara, ambos producirían 1en esta ecuación.


Entonces, si alguno de los volúmenes falla, el volumen de recuperación se puede usar para reconstruir los datos en función de los volúmenes restantes. Esta es probablemente la forma más simple de corrección de errores que puede tener. Si fallan dos volúmenes, no puede recuperar nada.


44
Para ser claros, hay esquemas que le permiten recuperarse de múltiples fallas de volumen.
Dietrich Epp

Esto solo funciona si sabes qué dispositivo falló, ¿no?
heinrich5991

1
@ heinrich5991 que conoce por el CRC interno del volumen
fanático del trinquete

21

Para una manera realmente simple de entender cómo podría ser esto, imagine si el volumen de recuperación contiene la suma de los otros volúmenes. Con una lista de números, uno faltante y su suma, siempre puede reconstruir el número faltante.

Por ejemplo, considere estos números de dos dígitos, 13, 88, 17, 43. Si supiera que falta un número y los dos últimos dígitos de la suma de todos los números fueron 81, puede encontrar el número que falta. 13 + 88 + 17 + 43 = 161. El único número de dos dígitos que puede agregar para hacer un número que termina en 81 es 20.

Digamos que tenía el 20 y le faltaba el 43. 13 + 88 + 17 + 20 = 138. El único número de dos dígitos que puede agregar a eso para hacer un número que termine en 81 es 43.

Por lo tanto, el número de recuperación le permite encontrar cualquier número faltante.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.