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


Maintainer's Corner

For package maintainers and hackage trustees


  • No Candidates
Versions [RSS],,,,,
Change log CHANGELOG.md
Dependencies base (>=4.11 && <5), brotli, bytestring, bz2 (>=, composition-prelude, dir-traverse (>=, libarchive (>=, lz4-hs (>=, lzlib (>=, lzma, 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
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 2020-10-11T22:55:08Z
Distributions NixOS:
Executables hstar
Downloads 975 total (14 in the last 30 days)
Rating 2.0 (votes: 1) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs not available [build log]
All reported builds failed as of 2021-05-30 [all 2 reports]

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