Como é possível que o WinRAR possa reparar qualquer volume com um arquivo .rev?


31

Eu só aprendi sobre .revarquivos com o WinRAR - onde se você tem um volume RAR 10-parte, por exemplo, mais um .rev(recuperação) de volume - o .revvolume será capaz de "corrigir" qualquer um corrompido .rarvolume.

Como isso é possível? Não entendo como um volume pode ter todos os dados para corrigir um / todos os volumes individualmente quebrados.

Eu acho que talvez seja possível, em vez de os volumes não serem divididos "linearmente", como eu estou imaginando, onde cada volume RAR contém arquivos individuais distintos do todo compactados; mas sim, talvez o .revreparo seja possível quando os volumes RAR forem vistos como um arquivo contínuo de bits e bytes, por assim dizer, e que talvez haja alguma feitiçaria do CRC (ah hem, "trabalho de reparo") envolvida para corrigir bytes corrompidos.

Mas eu simplesmente não entendo como você pode ter 9 volumes de trabalho com 1 danificado, e ainda assim um volume de recuperação que pode reparar qualquer um dos volumes. Como um volume é capaz de armazenar dados de "todos" os volumes?


3
Códigos de correção de apagamento. Compare com en.wikipedia.org/wiki/Parchive
Dan D.

Respostas:


55

Vamos pegar um caso realmente simples.

Você tem quatro volumes e um volume de recuperação, cada um com 1 bit de informação:

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

O volume de recuperação conteria o resultado de cada um desses bits XOR d juntos:

1 XOR 0 XOR 1 XOR 1 = 1

Portanto, nosso volume de recuperação contém o bit único 1.


Agora, digamos que o volume 1 falhe.

Se fizermos o XOR dos volumes restantes 2, 3 e 4 com o bit de recuperação no lugar do volume com falha, obtemos:

1 XOR 0 XOR 1 XOR 1 = 1
^

Então, isso nos diz que o volume 1 continha 1, pois é o resultado da equação.

Vamos fingir que o volume 2 morreu, então substituímos seu valor na equação pelo bit de recuperação:

1 XOR 1 XOR 1 XOR 1 = 0
      ^

Portanto, sabemos que o volume 2 continha 0, pois é o resultado da equação.

Se o volume 3 ou 4 falhasse, ambos produziriam 1nesta equação.


Portanto, se algum dos volumes falhar, o volume de recuperação poderá ser usado para reconstruir os dados com base nos volumes restantes. Esta é provavelmente a forma mais simples de correção de erros que você pode ter. Se dois volumes falharem, você não poderá recuperar nada.


4
Para ser claro, existem esquemas que permitem recuperar de várias falhas de volume.
precisa

Isso funciona apenas se você souber qual dispositivo falhou, não é?
precisa

1
@ heinrich5991 você sabe pelo CRC interna do volume
aberração catraca

21

Para uma maneira realmente simples de entender como isso poderia ser, imagine se o volume de recuperação continha a soma dos outros volumes. Com uma lista de números, faltando um deles, e sua soma, você sempre pode reconstruir o número ausente.

Por exemplo, considere esses números de dois dígitos, 13, 88, 17, 43. Se você soubesse que havia um número ausente e os dois últimos dígitos da soma de todos os números eram 81, poderia encontrar o número ausente. 13 + 88 + 17 + 43 = 161. O único número de dois dígitos que você pode adicionar a ele para formar um número que termina em 81 é 20.

Digamos que você tivesse os 20 e não tivesse os 43. 13 + 88 + 17 + 20 = 138. O único número de dois dígitos que você pode adicionar a ele para formar um número que termina em 81 é 43.

Assim, o número de recuperação permite encontrar qualquer número ausente.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.