Skip to content

Feature Request: Support the optional "Input File Slice" packet format #160

@EmperorArthur

Description

@EmperorArthur

The ability to store the actual input file in Par2 would be extremely useful. As such, I propose that par2cmdline implement this optional packet type.

Original message

Hello,

I know @mdnahas is considering what to do with the future of Par2. I would like to throw my hat into the ring, and suggest two changes.

The first is relatively minor, but would have a major impact as far as using par2 as a recovery /transfer medium. Instead of creating multiple files, or dealing with chunk size mismatch (see #159), just add the option to include the original file in the archive. Call each chunk an "ORIGINALBLOCKPACKET". With recovery set at or over 100%, the system can already do this, but this formalizes Par2 as a basic packetized archival program.

The second, leverages existing technology to solve @mdnahas issue of what metadata to store, and how to store it. A "TARHEADERPACKET" with a single byte enum for the header type* followed by a tar file header would work perfectly, and would be extremely easy to implement.

With both of these changes, Par2 (or whatever it is called) would become a fully fledged archival program with all the power of Tar. At worst, it would have some sleight overhead and would be the best archive format for anything that needs to be split.
After all, right now, even if every single name of every single Par2 file is mangled a simple cat *.par2 > good.par2 will create something that works perfectly. Extending that to archival needs means that the dangers of file name mangling when working with split archives goes away.

I would love to hear other's thoughts on the issue. For example, this may provide some of the functionality @mkruer was thinking about.

* As python calls them:

  • USTAR_FORMAT
  • GNU_FORMAT
  • PAX_FORMAT
  • Any future format that may exist

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions