Back to README
Why keep PAR2 on a different storage device:
- Reduces single-disk failure impact: bitrot on the archive disk does not affect the parity.
- Easier offsite rotation: you can sync only the PAR2 sets to a different failure domain.
Redundancy guidance:
- FULL backups: 10% is a practical default for larger data sets and longer retention.
- DIFF/INCR: 5% is often enough because the delta is smaller and easier to re-create.
- Increase the ratio if the storage is flaky or the backup is hard to re-run.
Rule of thumb table:
| Backup type | Suggested PAR2 ratio | Notes |
|---|---|---|
| FULL | 10% | Longer retention, larger data set |
| DIFF | 5% | Smaller delta |
| INCR | 5% | Smaller delta |
For large, contiguous archives on reliable local storage, 7–8% has proven sufficient in practice; 10% remains a conservative default.
Cloud sync / air-gap note:
- Syncing PAR2 sets to a different device or remote store protects against bitrot and small corruption, but it cannot recover a completely lost archive.
- An air-gapped PAR2 store is useful when the archive disk is exposed to ransomware or accidental deletion.
If PAR2 files are stored next to the archives (legacy per-slice behavior), you can verify like this:
for file in <archive>*.dar.par2; do
par2 verify "$file"
doneif there are problems with a slice, try to repair it like this:
par2 repair <archive>.<slice number>.dar.par2See docs on disk layout matters
Test case proving this flow:
If you have merged archives, you will need to create the .par2 redundency files manually. Here is an example
for file in <some-archive>_FULL_yyyy-mm-dd.*; do
par2 c -r5 -n1 "$file"
donewhere "c" is create, -r5 is 5% redundency and -n1 is 1 redundency file
If you want to create a single parity set for all slices in an archive:
par2 create -B <archive_dir> -r5 <par2_dir>/<archive_base>.par2 <archive_dir>/<archive_base>.*.darOBSERVE docs on disk layout matters
This dar benchmark page has an interesting note on the slice size.
Slice size should be smaller than available RAM, apparently a large performance hit can be avoided keeping the par2 data in memory.