hstar: Haskell version of tar CLI utility

[ archive, bsd3, codec, program, tar ] [ Propose Tags ]

Haskell implementation of the tar utility, backed by libarchive.

[Skip to Readme]


Automatic Flags

Enable brotli compression support


Enable snappy support


Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info


Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees


Versions [RSS],,,,,,
Change log CHANGELOG.md
Dependencies base (>=4.11 && <5), brotli, bytestring, bz2 (>=, composition-prelude, dir-traverse (>=, libarchive (>=, lz4-hs (>=, lzlib (>=, lzma-static, lzo (>=, optparse-applicative, process (>=, snappy-lazy, zlib, zstd [details]
License BSD-3-Clause
Copyright Copyright: (c) 2019-2020 Vanessa McHale
Author Vanessa McHale
Maintainer vamchale@gmail.com
Revised Revision 2 made by vmchale at 2024-04-28T19:13:20Z
Category Codec, Tar, Archive
Bug tracker https://github.com/vmchale/archive-backpack/issues
Source repo head: git clone https://github.com/vmchale/archive-backpack(hstar)
Uploaded by vmchale at 2024-04-13T16:30:48Z
Executables hstar
Downloads 1241 total (21 in the last 30 days)
Rating 2.0 (votes: 1) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs pending
Build status unknown [no reports yet]

Readme for hstar-

[back to package description]


hstar is a command-line tool like tar, with several more features.


To generate bash shell completions:

hstar --bash-completion-script hstar


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).


hstar has near-parity with other command-line tar implementations with respect to compression support.

Program lzop lzip lzma gzip bzip2 zstd lz4 brotli snappy lrzip grzip
bsdtar x x x x x x x x x
hstar x x x x x x x x x ½
arc x x x x ½ x
Schily tar x x x x x x
busybox tar x x x
python3 tar module x x x
GNU tar x x x x x x


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