Bagaimana mungkin WinRAR dapat memperbaiki volume apa pun dengan satu file .rev?

31

Aku hanya belajar tentang .revfile dengan WinRAR - di mana jika Anda memiliki volume RAR 10-bagian, misalnya, ditambah satu .rev(pemulihan) Volume - yang .revvolume yang akan dapat "memperbaiki" setiap satu rusak .rarvolume.

Bagaimana ini mungkin? Saya tidak mengerti bagaimana satu volume dapat memiliki semua data untuk memperbaiki setiap / semua volume yang rusak secara individual.

Saya kira itu mungkin sebagai pengganti volume yang tidak dipecah "linear", seperti yang saya bayangkan, di mana setiap volume RAR menyimpan file individual yang berbeda dari keseluruhan yang dikemas di dalamnya; tetapi, mungkin .revperbaikan dimungkinkan ketika volume RAR dipandang sebagai satu file terus menerus dari bit dan byte, sehingga untuk berbicara, dan bahwa mungkin ada beberapa sihir CRC'ish (ah hem, "pekerjaan perbaikan") yang terlibat untuk memperbaiki byte yang rusak.

Tapi saya tidak mengerti bagaimana Anda dapat memiliki 9 volume kerja dengan 1 rusak, namun memiliki volume pemulihan yang dapat memperbaiki salah satu volume. Bagaimana satu volume dapat menyimpan data "semua" volume?

Coldblackice
sumber
3
Menghapus kode koreksi. Bandingkan dengan en.wikipedia.org/wiki/Parchive
Dan D.

Jawaban:

55

Mari kita ambil kasus yang sangat sederhana.

Anda memiliki empat volume dan volume pemulihan, masing-masing dengan 1 bit informasi di dalamnya:

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

Volume pemulihan akan berisi hasil dari masing-masing bit ini XOR d bersama-sama:

1 XOR 0 XOR 1 XOR 1 = 1

Jadi, volume pemulihan kami berisi bit tunggal 1.


Sekarang, katakanlah volume 1 gagal.

Jika kita XOR volume yang tersisa 2, 3 dan 4 dengan bit pemulihan di tempat volume gagal kita dapatkan:

1 XOR 0 XOR 1 XOR 1 = 1
^

Jadi, ini memberitahu kita bahwa jilid 1 berisi 1, karena itu adalah hasil dari persamaan.

Sebagai gantinya, kami berpura-pura volume 2 mati, jadi kami mengganti nilainya dalam persamaan dengan bit pemulihan:

1 XOR 1 XOR 1 XOR 1 = 0
      ^

Jadi kita tahu bahwa volume 2 berisi 0, karena itu adalah hasil dari persamaan.

Jika volume 3 atau 4 gagal, keduanya akan menghasilkan 1dalam persamaan ini.


Jadi, jika salah satu volume gagal, volume pemulihan dapat digunakan untuk merekonstruksi data berdasarkan volume yang tersisa. Ini mungkin bentuk koreksi kesalahan paling sederhana yang bisa Anda miliki. Jika dua volume gagal, Anda tidak dapat memulihkan apa pun.

Paul
sumber
4
Agar jelas, ada skema yang memungkinkan Anda untuk memulihkan dari beberapa kegagalan volume.
Dietrich Epp
Ini hanya berfungsi jika Anda tahu perangkat mana yang gagal, bukan?
heinrich5991
1
@ heinrich5991 Anda tahu oleh CRC internal volume
ratchet freak
21

Untuk cara yang sangat sederhana untuk memahami bagaimana hal ini bisa terjadi, bayangkan jika volume pemulihan berisi jumlah dari volume lainnya. Dengan daftar angka, salah satu dari mereka, dan jumlahnya, Anda selalu dapat merekonstruksi nomor yang hilang.

Misalnya, perhatikan dua angka ini, 13, 88, 17, 43. Jika Anda tahu ada satu nomor yang hilang dan dua digit terakhir dari jumlah semua angka itu adalah 81, Anda bisa menemukan nomor yang hilang itu. 13 + 88 + 17 + 43 = 161. Satu-satunya angka dua digit yang dapat Anda tambahkan untuk membuat angka yang berakhiran 81 adalah 20.

Katakanlah Anda memiliki 20 dan kehilangan 43. 13 + 88 + 17 + 20 = 138. Satu-satunya angka dua digit yang dapat Anda tambahkan untuk membuat angka yang berakhiran 81 adalah 43.

Dengan demikian nomor pemulihan memungkinkan Anda menemukan satu nomor yang hilang.

David Schwartz
sumber