WinRAR'ın bir .rev dosyasıyla herhangi bir birimi onarabilmesi nasıl mümkün olabilir?


31

.revWinRAR'lı dosyaları yeni öğrendim - nerede 10 parçalı bir RAR hacminiz varsa, örneğin bir artı .rev(kurtarma) hacminiz varsa, .revbirim bozuk herhangi bir hatayı "düzeltebilir" .rar.

Bu nasıl mümkün olabilir? Bir birimin ayrı ayrı ayrılmış ciltlerin herhangi birini / tümünü düzeltmek için tüm verilere nasıl sahip olduğunu anlamıyorum.

Sanırım, hayal ettiğim gibi, her bir RAR biriminin ayrı, içinde yer alan tek tek tüm dosyaları ayrı tuttuğu; ama daha doğrusu, belki de .revtamir etmek, RAR hacimlerinin sürekli bir bit ve bayt dosyası olarak görülmesi durumunda mümkündür, tabiri caizse, ve belki de bozuk baytları düzeltmek için bazı CRC'ish büyücülüğü (ah hem, "onarım çalışmaları") vardır.

Ancak, 1 hasarlı 9 çalışma hacmine nasıl sahip olabileceğinizi anlamıyorum, ancak birimlerden herhangi birini onarabilecek bir kurtarma hacmine sahip olabilirsiniz . Bir cilt "tüm" birimlerin verilerini nasıl tutabilir?


3
Silme düzeltme kodları. En.wikipedia.org/wiki/Parchive
Dan D.

Yanıtlar:


55

Hadi basit bir dava ele alalım.

Her biri 1 bit bilgi içeren dört birim ve bir kurtarma biriminiz vardır:

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

Kurtarma hacmi, bu XOR d bitlerinin her birinin sonucunu birlikte içerecektir :

1 XOR 0 XOR 1 XOR 1 = 1

Yani, kurtarma hacmimizde tek bit var 1.


Şimdi, cilt 1'in başarısız olduğunu söyleyelim.

Kalan 2, 3 ve 4 numaralı birimleri XOR olarak alırsak, kurtarma bitinin yerine başarısız bit birimini koyarız:

1 XOR 0 XOR 1 XOR 1 = 1
^

Dolayısıyla, bu bize 1denklemin sonucu olduğu için cilt 1'in içerdiğini söyler .

2. cildin öldüğünü iddia edelim, bu yüzden denklemdeki değerini kurtarma biti ile değiştirelim:

1 XOR 1 XOR 1 XOR 1 = 0
      ^

Böylece, hacim 2'nin içerdiğini biliyoruz 0, çünkü denklemin sonucu.

Hacim 3 veya 4 başarısız olursa, ikisi de 1bu denklemde üretilir.


Bu nedenle, herhangi bir birimden biri başarısız olursa, geri kalan birim, kalan birimleri temel alan verileri yeniden yapılandırmak için kullanılabilir. Bu muhtemelen sahip olabileceğiniz en basit hata düzeltme şeklidir. İki cilt başarısız olursa, hiçbir şeyi kurtaramazsınız.


4
Açık olmak gerekirse, birden fazla cilt hacminden kurtulmanızı sağlayan şemalar var.
Dietrich Epp 19:12

Bu sadece hangi cihazın arıza yaptığını biliyorsanız işe yarar, değil mi?
heinrich5991

1
@ heinrich5991, birimin dahili CRC'sini biliyor
cırcır ucube

21

Bunun nasıl olabileceğini anlamanın gerçekten basit bir yolu için, kurtarma hacminin diğer hacimlerin toplamını içerdiğini hayal edin. Bunlardan birini ve sayıları özen sayılar listesiyle, eksik sayıları her zaman yeniden yapılandırabilirsiniz.

Örneğin, bu iki basamaklı sayıları, 13, 88, 17, 43 düşünün. Bir eksik sayı olduğunu ve tüm sayıların toplamının son iki basamağının 81 olduğunu biliyorsanız, eksik sayıyı bulabilirsiniz. 13 + 88 + 17 + 43 = 161. 81 ile biten bir sayı elde etmek için ekleyebileceğiniz tek iki basamaklı sayı 20'dir.

20'ye sahip olduğunuzu ve 43'ü kaçırdığınızı söyleyin. 13 + 88 + 17 + 20 = 138. 81 ile biten bir sayı oluşturmak için buna ekleyebileceğiniz tek iki basamaklı sayı 43'tür.

Böylece kurtarma numarası eksik olan herhangi bir numarayı bulmanıza izin verir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.