hstar
hstar is a command-line tool like tar, with several more features.
Use
To generate bash shell completions:
hstar --bash-completion-script hstar
Features
Unlike other tar implementations, hstar has the sanitize subcommand which converts a file into a pax-compatible archive and the lint subcommand which points out suspicious archives.
hstar can change the compression based on command-line flags, like bsdtar and arc (this feature is missing from GNU tar, busybox tar, and seemingly Schily tar).
Compression
hstar has near-parity with other command-line tar implementations with respect to compression support.
Benchmarks run on Linux. Performance should be near GNU tar, bsdtar, or Schily tar.
| Program | Compression | Command | Time |
| bsdtar | zstd | bsdtar -xf sparc64-linux-dist.tar.zst | 61.28 ms |
| hstar | zstd | hstar unpack sparc64-linux-dist.tar.zst | 69.63 ms |
| GNU tar | zstd | tar xf sparc64-linux-dist.tar.zst | 303.8 ms |
| Schily tar | zstd | star xf sparc64-linux-dist.tar.zst | 291.0 ms |
| bsdtar | lzip | bsdtar -xf sparc64-linux-dist.tar.lz | 345.3 ms |
| hstar | lzip | hstar unpack sparc64-linux-dist.tar.lz | 433.2 ms |
| GNU tar | lzip | tar xf sparc64-linux-dist.tar.lz | 456.8 ms |
| Schily tar | lzip | star xf sparc64-linux-dist.tar.lz | 440.0 ms |
| busybox tar | lzip | lzip -cd sparc64-linux-dist.tar.lz | busybox tar xf - | 481.0 ms |
| busybox tar | zstd | zstd -cd sparc64-linux-dist.tar.zst | busybox tar xf - | 319.0 ms |
| python3 tar | gzip | python3 -m tarfile -e sparc64-linux-dist.tar.gz | 245.3 ms |
| bsdtar | gzip | bsdtar -xf sparc64-linux-dist.tar.gz | 122.8 ms |
| hstar | gzip | hstar unpack sparc64-linux-dist.tar.gz | 172.4 ms |
| GNU tar | gzip | tar xf sparc64-linux-dist.tar.gz | 233.9 ms |
| Schily tar | gzip | star xf sparc64-linux-dist.tar.gz | 234.8 ms |
| arc | gzip | arc -overwrite unarchive sparc64-linux-dist.tar.gz | 362.0 ms |
| python3 tar | lzma | python3 -m tarfile -e sparc64-linux-dist.tar.xz | 414.9 ms |
| bsdtar | lzma | bsdtar -xf sparc64-linux-dist.tar.xz | 349.4 ms |
| hstar | lzma | hstar unpack sparc64-linux-dist.tar.xz | 360.6 ms |
| GNU tar | lzma | tar xf sparc64-linux-dist.tar.xz | 364.3 ms |
| Schily tar | lzma | star xf sparc64-linux-dist.tar.xz | 353.6 ms |
| arc | lzma | arc -overwrite unarchive sparc64-linux-dist.tar.xz | 1.191 s |
| python3 tar | bzip2 | python3 -m tarfile -e sparc64-linux-dist.tar.bz2 | 1.242 s |
| bsdtar | bzip2 | bsdtar -xf sparc64-linux-dist.tar.bz2 | 1.149 s |
| hstar | bzip2 | hstar unpack sparc64-linux-dist.tar.bz2 | 1.136 s |
| GNU tar | bzip2 | tar xf sparc64-linux-dist.tar.bz2 | 1.092 s |
| Schily tar | bzip2 | star xf sparc64-linux-dist.tar.bz2 | 1.103 s |
| arc | bzip2 | arc -overwrite unarchive sparc64-linux-dist.tar.bz2 | 2.544 s |
| busybox tar | gzip | busybox tar xzf sparc64-linux-dist.tar.gz | 307.5 ms |
| busybox tar | bzip2 | busybox tar xjf sparc64-linux-dist.tar.bz2 | 1.018 s |
| busybox tar | lzma | busybox tar xJf sparc64-linux-dist.tar.xz | 385.6 ms |
| bsdtar | lz4 | bsdtar -xf sparc64-linux-dist.tar.lz4 | 40.69 ms |
| hstar | lz4 | hstar unpack sparc64-linux-dist.tar.lz4 | 49.87 ms |
| busybox tar | lz4 | lz4 -cd sparc64-linux-dist.tar.lz4 | busybox tar xf - | 56.00 ms |
| GNU tar | lz4 | lz4 -cd sparc64-linux-dist.tar.lz4 | tar xf - | 39.19 ms |
| Schily tar | lz4 | lz4 -cd sparc64-linux-dist.tar.lz4 | star xf - | 30.88 ms |