Libarchive is a programming library that can create and read several different streaming archive formats, including most popular TAR variants and several CPIO formats. It can also write SHAR archives.