Archive Tester

Thursday, April 28, 2022

Contents

Archive Tester facilitates semi-automated testing of RAR and 7z archives, with or without PAR2 parity files. It is built with data integrity in mind.

It supports detection of many useful statuses - such as parity mismatch, repairable damage, non-repairable damage, and more.

It is particularly useful when you have large folders containing many archives, and you want to find and test them all without having to wait around and keep clicking the next one, and verify that your data is intact.

The intent is to run the program on a regular basis, and simply drop your storage volumes into the app. It will find your archives.

Archive Tester's main page, before testing begins.

After starting tests, Archive Tester provides gradual status updates.

The password management page. Passwords are required to process encrypted archives.

Why Test Archives?

Keeping RAR or 7z archives is one method of helping to verify data integrity, as they use self-updating checksums. Any disk error could cause a corruption, in which case the archive must be restored from a backup or repaired using the recovery record. If we have many archives, how do we know which ones require repairs/replacement?

Additionally, how do we know that we are not propagating corrupt archives through our backups?

This program helps to solve that by finding and testing archives.

Recovery/Parity Data

To protect against corruptions, recovery data can be kept with or inside of archives. In the case of RAR format archives, a recovery record can be added. When altering the archive, such as by adding or removing files, WinRAR automatically updates this record to keep the recovery data in sync.

An alternate form of recovery data is PAR2, where parity files are generated for an archive. These are stored next to the archive as .par2 files. These are functionally similar to the RAR recovery record, but are not automatically kept in sync. If the archive is updated and the user forgets to update the parity, then the parity data is now useless. To help protect against this, Archive Tester reports a parity mismatch, informing the user that the parity needs updating.

Additionally, if a multipart archive has parity data, Archive Tester reports a parity mismatch if any parts are not covered by the parity.

Parity file functionality depends on MultiPar. Archive Tester is capable of installing it.

Operation

Simply drag folders into the drop zone, and all archives within will be displayed. The program can then automatically test all archives, leaving you to do something else. Status updates are shown as each archive is tested.

Testing archives can be computationally expensive. If necessary, the program can be paused and resumed. Pausing takes effect once finishing the current archive.

At program launch, it will check for an update. It won't update unless you agree to it, and versions can be skipped.

An embedded version of 7Zip is used for testing. Where parity files are detected, MultiPar is used for testing if present on the system.

If you notice any bugs, please use the Contact form in the navigation bar at the top of this page, or the in-app Feedback button.

System Requirements

Archive Tester is a WPF app using WebView2 and .NET 6.

  • Minimum OS Version: Windows 8.1
    • Should also run on Windows 7 SP1 ESU

A user need not install .NET 6 or WebView2. Archive Tester will handle this, but if WebView2 is missing, an internet connection will be required to fetch it from a Microsoft server.

MultiPar is an optional dependency. It is required for working with PAR2 parity files, and Archive Tester will offer to install it if parity files are found.

Future Development

Potential future changes include:

  • Command-line usage.
  • CPU priority settings.
  • An overall count of passed/failed e.t.c. archives.
  • A button to only test untested or invalid archives, in the case that more archives are added post-testing.

Update History

1.0.2.0 (2022-04-28)

  • Initial Release

1.1.0.0 (2022-04-29)

  • Optimized the CPU performance of the UI. It should now be a lot lower during testing. I've found it to spend a lot of time near and at 0% (8700k). The UI CPU consumption is taken by the WebView2 sub-processes.
  • The loading spinners have been replaced with loading bars, and they update in real-time to show how far each archive is through testing.
  • Added "remove" buttons next to each archive. These only work before or after testing.

1.2.7.0 (2022-05-27)

  • 7z archives are now supported.
  • PAR2 parity files are now supported for both 7z and RAR archives.
    • PAR2 support requires MultiPar. Archive Tester will offer to install it if parity files are detected. There's also a button in the Settings to install it.
      • Archive Tester will first attempt to find MultiPar on the system. It will succeed if MultiPar was installed to the default location, or if the user has associated it with PAR2 files.
    • When PAR2 files are detected, verification is performed with MultiPar rather than 7Zip. This is much faster.
    • Detection of mismatched parity, damaged parity, archive damaged + enough parity to repair, archive damaged + not enough parity to repair.
      • MultiPar searches for neighbouring and nested files which can be used for recovery. Due to this, parity mismatch can sometimes show when there are neighbouring or nested files of high similarity.
  • The Status column now includes expanded helpful information when hovered.
  • The Archive Name column now includes the full file name when hovered.
  • Added Settings page, including a link to the Manage Passwords page, and buttons to open this webpage, and to email me with feedback.
  • Memory and CPU optimizations
  • Resolved issues when directories containing restricted files/folders are dropped into Archive Tester.
  • Support for dropping entire volumes into Archive Tester.
  • An overall progress bar is now shown, including bytes processed and total bytes.
  • Archives are now processed in alphabetical order.
  • Improved status output for header damaged RAR archives.
  • Archive names can now be clicked to navigate to them in Explorer.
  • When single files are dropped (rather than directories or volumes), their containing folder is searched, restricted to the file name and the top level, to find other parts of multipart archives and to find parity files.

 

Back to Blog