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

30

Acabei de aprender sobre .rev arquivos com o WinRAR - onde, se você tiver um volume RAR de 10 partes, por exemplo, mais um volume .rev (recuperação) - o volume .rev poderá " corrija "qualquer um corrompido .rar volume.

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

Eu acho que talvez seja possível, em vez de os volumes não serem quebrados "linearmente", como eu imagino, onde cada volume RAR armazena arquivos individuais distintos do todo; mas, talvez, .rev repair seja possível quando os volumes RAR são vistos como um arquivo contínuo de bits e bytes, por assim dizer, e que talvez haja algum feitiço CRC (ah hem, "trabalho de conserto") envolvido para consertar bytes corrompidos.

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

    
por Coldblackice 18.11.2012 / 23:47

2 respostas

53

Vamos dar uma ideia muito 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 conterá 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 único bit 1 .

Agora, digamos que o volume 1 falhe.

Se nós XOR os 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 , já que é o resultado da equação.

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

1 XOR 1 XOR 1 XOR 1 = 0
      ^

Então sabemos que o volume 2 continha 0 , já que é o resultado da equação.

Se o volume 3 ou 4 falhasse, ambos produziriam 1 nessa 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.

    
por 19.11.2012 / 00:14
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 que falta.

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

Digamos que você tenha 20 e esteja faltando o 43. 13 + 88 + 17 + 20 = 138. O único número de dois dígitos que você pode adicionar para fazer um número que termine em 81 é 43.

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

    
por 19.11.2012 / 01:19