committed by
shypike
14 changed files with 2792 additions and 2456 deletions
@ -0,0 +1,336 @@ |
|||
par2cmdline is a PAR 2.0 compatible file verification and repair tool. |
|||
|
|||
To see the ongoing development see |
|||
https://github.com/BlackIkeEagle/par2cmdline |
|||
|
|||
The original development was done on Sourceforge but stalled. |
|||
For more information from the original authors see |
|||
http://parchive.sourceforge.net |
|||
Also for details of the PAR 2.0 specification and discussion of all |
|||
things PAR. |
|||
|
|||
WHAT EXACTLY IS PAR2CMDLINE? |
|||
|
|||
par2cmdline is a program for creating and using PAR2 files to detect |
|||
damage in data files and repair them if necessary. It can be used with |
|||
any kind of file. |
|||
|
|||
WHY IS PAR 2.0 better than PAR 1.0? |
|||
|
|||
* It is not necessary to split a single large file into many equally |
|||
size small files (although you can still do so if you wish). |
|||
|
|||
* There is no loss of efficiency when operating on multiple files |
|||
of different sizes. |
|||
|
|||
* It is possible to repair damaged files (using exactly the amount of |
|||
recovery data that corresponds to the amount of damage), rather than |
|||
requiring the complete reconstruction of the damaged file. |
|||
|
|||
* Recovery files may be of different sizes making it possible to |
|||
obtain exactly the amount of recovery data required to carry out |
|||
a repair. |
|||
|
|||
* Because damaged data files are still useable during the recovery |
|||
process, less recovery data is required to achieve a successful |
|||
repair. It is therefore not necessary to create as much recovery |
|||
data in the first place to achieve the same level of protection. |
|||
|
|||
* You can protect up to 32768 files rather than the 256 that PAR 1.0 |
|||
is limited to. |
|||
|
|||
* Damaged or incomplete recovery files can also be used during the |
|||
recovery process in the same way that damaged data files can. |
|||
|
|||
* PAR 2.0 requires less recovery data to provide the same level of |
|||
protection from damage compared with PAR 1.0. |
|||
|
|||
DOES PAR 2.0 HAVE ANY DISADVANTAGES? |
|||
|
|||
Yes, there is one disadvantage: |
|||
|
|||
* All PAR 2.0 program will take somewhat longer to create recovery |
|||
files than a PAR 1.0 program does. |
|||
|
|||
This disadvantage is considerably mitigated by the fact that you don't |
|||
need to create as much recovery data in the first place to provide the |
|||
same level of protection against loss and damage. |
|||
|
|||
COMPILING PAR2CMDLINE |
|||
|
|||
You should have received par2cmdline in the form of source code which |
|||
you can compile on your computer. You may optionally have received a |
|||
precompiled version of the program for your operating system. |
|||
|
|||
If you have only downloaded a precompiled executable, then the source |
|||
code should be available from the same location where you downloaded the |
|||
executable from. |
|||
|
|||
If you have MS Visual Studio .NET, then just open the par2cmdline.sln |
|||
file and compile. You should then copy par2cmdline.exe to an appropriate |
|||
location that is on your path. |
|||
|
|||
To compile on Linux and other Unix variants use the following commands: |
|||
|
|||
aclocal |
|||
automake --add-missing |
|||
autoconf |
|||
./configure |
|||
make |
|||
make check |
|||
make install |
|||
|
|||
See INSTALL for full details on how to use the "configure" script. |
|||
|
|||
USING PAR2CMDLINE |
|||
|
|||
The command line parameters for par2cmdline are as follow: |
|||
|
|||
par2 -h : show this help |
|||
par2 -V : show version |
|||
par2 -VV : show version and copyright |
|||
|
|||
par2 c(reate) [options] <par2 file> [files] |
|||
par2 v(erify) [options] <par2 file> [files] |
|||
par2 r(epair) [options] <par2 file> [files] |
|||
|
|||
Also: |
|||
|
|||
par2create [options] <par2 file> [files] |
|||
par2verify [options] <par2 file> [files] |
|||
par2repair [options] <par2 file> [files] |
|||
|
|||
Options: |
|||
|
|||
-a<file> : Set the main par2 archive name |
|||
required on create, optional for verify and repair |
|||
-b<n> : Set the Block-Count |
|||
-s<n> : Set the Block-Size (Don't use both -b and -s) |
|||
-r<n> : Level of Redundancy (%) |
|||
-r<c><n> : Redundancy target size, <c>=g(iga),m(ega),k(ilo) bytes |
|||
-c<n> : Recovery block count (don't use both -r and -c) |
|||
-f<n> : First Recovery-Block-Number |
|||
-u : Uniform recovery file sizes |
|||
-l : Limit size of recovery files (Don't use both -u and -l) |
|||
-n<n> : Number of recovery files (Don't use both -n and -l) |
|||
-m<n> : Memory (in MB) to use |
|||
-v [-v] : Be more verbose |
|||
-q [-q] : Be more quiet (-qq gives silence) |
|||
-p : Purge backup files and par files on successful recovery or |
|||
when no recovery is needed |
|||
-R : Recurse into subdirectories (only useful on create) |
|||
-N : No data skipping (find badly misspositioned data blocks) |
|||
-S<n> : Skip leaway (distance +/- from expected block position) |
|||
-- : Treat all remaining CommandLine as filenames |
|||
|
|||
If you wish to create par2 files for a single source file, you may leave |
|||
out the name of the par2 file from the command line. par2cmdline will then |
|||
assume that you wish to base the filenames for the par2 files on the name |
|||
of the source file. |
|||
|
|||
You may also leave off the .par2 file extension when verifying and repairing. |
|||
|
|||
CREATING PAR2 FILES |
|||
|
|||
With PAR 2.0 you can create PAR2 recovery files for as few as 1 or as many as |
|||
32768 files. If you wanted to create PAR1 recovery files for a single file |
|||
you were forced to split the file into muliple parts and RAR was frequently |
|||
used for this purpose. You do NOT need to split files with PAR 2.0. |
|||
|
|||
To create PAR 2 recovery files for a single data file (e.g. one called |
|||
test.mpg), you can use the following command: |
|||
|
|||
par2 create test.mpg.par2 test.mpg |
|||
|
|||
If test.mpg is an 800 MB file, then this will create a total of 8 PAR2 files |
|||
with the following filenames (taking roughly 6 minutes on a PC with a |
|||
1500MHz CPU): |
|||
|
|||
test.mpg.par2 - This is an index file for verification only |
|||
test.mpg.vol00+01.par2 - Recovery file with 1 recovery block |
|||
test.mpg.vol01+02.par2 - Recovery file with 2 recovery blocks |
|||
test.mpg.vol03+04.par2 - Recovery file with 4 recovery blocks |
|||
test.mpg.vol07+08.par2 - Recovery file with 8 recovery blocks |
|||
test.mpg.vol15+16.par2 - Recovery file with 16 recovery blocks |
|||
test.mpg.vol31+32.par2 - Recovery file with 32 recovery blocks |
|||
test.mpg.vol63+37.par2 - Recovery file with 37 recovery blocks |
|||
|
|||
The test.mpg.par2 file is 39 KB in size and the other files vary in size from |
|||
443 KB to 15 MB. |
|||
|
|||
These par2 files will enable the recovery of up to 100 errors totalling 40 MB |
|||
of lost or damaged data from the original test.mpg file when it and the par2 |
|||
files are posted on UseNet. |
|||
|
|||
When posting on UseNet it is recommended that you use the "-s" option to set |
|||
a blocksize that is equal to the Article size that you will use to post the |
|||
data file. If you wanted to post the test.mpg file using an article size |
|||
of 300 KB then the command you would type is: |
|||
|
|||
par2 create -s307200 test.mpg.par2 test.mpg |
|||
|
|||
This will create 9 PAR2 files instead of 8, and they will be capable of |
|||
correcting up to 134 errors totalling 40 MB. It will take roughly 8 minutes |
|||
to create the recovery files this time. |
|||
|
|||
In both of these two examples, the total quantity of recovery data created |
|||
was 40 MB (which is 5% of 800 MB). If you wish to create a greater or lesser |
|||
quantity of recovery data, you can use the "-r" option. |
|||
|
|||
To create 10% recovery data instead of the default of 5% and also to use a |
|||
block size of 300 KB, you would use the following command: |
|||
|
|||
par2 create -s307200 -r10 test.mpg.par2 test.mpg |
|||
|
|||
This would also create 9 PAR2 files, but they would be able to correct up to |
|||
269 errors totalling 80 MB. Since twice as much recovery data is created, it |
|||
will take about 16 minutes to do so with a 1500MHz CPU. |
|||
|
|||
The "-u" and "-n" options can be used to control exactly how many recovery |
|||
files are created and how the recovery blocks are distributed among them. |
|||
They do not affect the total quantity of recovery data created. |
|||
|
|||
The "-f" option is used when you create additional recovery data e.g. If |
|||
you have already created 10% and want another 5% then you migh use the |
|||
following command: |
|||
|
|||
par2 create -s307200 -r5 -f300 test.mpg.par2 test.mpg |
|||
|
|||
This specifies the same block size (which is a requirement for additional |
|||
recovery files), 5% recovery data, and a first block number of 300. |
|||
|
|||
The "-m" option controls how much memory par2cmdline uses. It defaults to |
|||
16 MB unless you override it. |
|||
|
|||
When creating PAR2 recovery files you might want to fill up a "medium" like a |
|||
DVD or a Blu-Ray. Therefore we can set the target size of the recovery files by |
|||
issuing the following command: |
|||
|
|||
par2 create -rm200 recovery.par2 * |
|||
|
|||
It makes no sense to set a insanely high recovery size. The command will make |
|||
that the resulting sum of the par2 files approaches the requested size. It is |
|||
an estimate so don't go to crazy. |
|||
|
|||
CREATING PAR2 FILES FOR MULTIPLE DATA FILES |
|||
|
|||
When creating PAR2 recovery files from multiple data files, you must specify |
|||
the base filename to use for the par2 files and the names of all of the data |
|||
files. |
|||
|
|||
If test.mpg had been split into multiple RAR files, then you could use: |
|||
|
|||
par2 create test.mpg.rar.par2 test.mpg.part*.rar |
|||
|
|||
The files filename "test.mpg.rar.par2" says what you want the par2 files to |
|||
be called and "test.mpg.part*.rar" should select all of the RAR files. |
|||
|
|||
VERIFYING AND REPAIRING |
|||
|
|||
When using par2 recovery files to verify or repair the data files from |
|||
which they were created, you only need to specify the filename of one |
|||
of the par2 files to par2cmdline. |
|||
|
|||
e.g.: |
|||
|
|||
par2 verify test.mpg.par2 |
|||
|
|||
This tells par2cmdline to use the information in test.mpg.par2 to verify the |
|||
data files. |
|||
|
|||
par2cmdline will automatically search for the other par2 files that were |
|||
created and use the information they contain to determine the filenames |
|||
of the original data files and then to verify them. |
|||
|
|||
If all of the data files are OK, then par2cmdline will report that repair |
|||
will not be required. |
|||
|
|||
If any of the data files are missing or damaged, par2cmdline will report |
|||
the details of what it has found. If the recovery files contain enough |
|||
recovery blocks to repair the damage, you will be told that repair is |
|||
possible. Otherwise you will be told exactly how many recovery blocks |
|||
will be required in order to repair. |
|||
|
|||
To carry out a repair use the following command: |
|||
|
|||
par2 repair test.mpg.par2 |
|||
|
|||
This tells par2cmdline to verify and if possible repair any damaged or |
|||
missing files. If a repair is carried out, then each file which is |
|||
repaired will be re-verified to confirm that the repair was successful. |
|||
|
|||
MISNAMED AND INCOMPLETE DATA FILES |
|||
|
|||
If any of the recovery files or data files have the wrong filename, then |
|||
par2cmdline will not automatically find and scan them. |
|||
|
|||
To have par2cmdline scan such files, you must include them on the command |
|||
line when attempting to verify or repair. |
|||
|
|||
e.g.: |
|||
|
|||
par2 r test.mpg.par2 other.mpg |
|||
|
|||
This tells par2cmdline to scan the file called other.mpg to see if it |
|||
contains any data belonging to the original data files. |
|||
|
|||
If one of the extra files specified in this way is an exact match |
|||
for a data file, then the repair process will rename the file so that |
|||
it has the correct filename. |
|||
|
|||
Because par2cmdline is designed to be able to find good data within a |
|||
damaged file, it can do the same with incomplete files downloaded from |
|||
UseNet. If some of the articles for a file are missing, you should still |
|||
download the file and save it to disk for par2cmdline to scan. If you |
|||
do this then you may find that you can carry out a repair in a situation |
|||
where you would not otherwise have sufficient recovery data. |
|||
|
|||
You can have par2cmdline scan all files that are in the current directory |
|||
using a command such as: |
|||
|
|||
par2 r test.mpg.par2 * |
|||
|
|||
WHAT TO DO WHEN YOU ARE TOLD YOU NEED MORE RECOVERY BLOCKS |
|||
|
|||
If par2cmdline determines that any of the data files are damaged or |
|||
missing and finds that there is insufficient recovery data to effect |
|||
a repair, you will be told that you need a certain number of recovery |
|||
blocks. You can obtain these by downloading additional recovery files. |
|||
|
|||
In order to make things easy, par2 files have filenames that tell you |
|||
exactly how many recovery blocks each one contains. |
|||
|
|||
Assuming that the following command was used to create recovery data: |
|||
|
|||
par2 c -b1000 -r5 test.mpg |
|||
|
|||
Then the recovery files that are created would be called: |
|||
|
|||
test.mpg.par2 |
|||
test.mpg.vol00+01.par2 |
|||
test.mpg.vol01+02.par2 |
|||
test.mpg.vol03+04.par2 |
|||
test.mpg.vol07+08.par2 |
|||
test.mpg.vol15+16.par2 |
|||
test.mpg.vol31+19.par2 |
|||
|
|||
The first file in this list does not contain any recovery data, it only |
|||
contains information to verify the data files. |
|||
|
|||
Each of the other files contains a different number of recovery blocks. |
|||
The number after the '+' sign is the number of recovery blocks and the |
|||
number preceding the '+' sign is the block number of the first recovery |
|||
block in that file. |
|||
|
|||
If par2cmdline told you that you needed 10 recovery blocks, then you would |
|||
need "test.mpg.vol01+02.par2" and "test.mpg.vol07+08.par". You might of course |
|||
choose to fetch "test.mpg.vol15+16.par2" instead (in which case you would have |
|||
an extra 6 recovery blocks which would not be used for the repair). |
|||
|
|||
REED SOLOMON CODING |
|||
|
|||
PAR2 uses Reed Solomon Coding to perform its calculations. For details of this |
|||
coding technique try the following link: |
|||
|
|||
``A Tutorial on Reed-Solomon Coding for Fault-Tolerance in RAID-like Systems'' |
|||
<http://web.eecs.utk.edu/~plank/plank/papers/CS-96-332.html> |
Binary file not shown.
Binary file not shown.
Loading…
Reference in new issue