How can I decompress an archive file having .zst or tar.zst?
CompressionArchiveZstdCompression Problem Overview
I do not know how I can decompress a file having .zst or tar.zst extension . The full filename :- file.pkg.tar.zst or file.xz.tar.zst
Compression Solutions
Solution 1 - Compression
The extention .zst means that the archive is compressed by zstd.
The tar command has an option -I (--use-compress-program) to specify a command for compression/decompression.
You can use it as follows.
$ tar --use-compress-program=unzstd -xvf archive.tar.zst
Solution 2 - Compression
Decompress it in Terminal.
unzstd yourfilename.zst
I know there aren't many resources available but I found this here: http://manpages.org/zstd
Solution 3 - Compression
If you have a standard cmake + gcc build stack:
git clone https://github.com/facebook/zstd.git
cd zstd/build/cmake
cmake .
make
./programs/zstd -d /path/to/file.zst
Solution 4 - Compression
On macOS Mojave 10.14.3, I was unable to specify the compression algorithm using the -I flag. Doing it this way worked for me;
Install zstd using brew if you don't already have it installed.
- Decompress from .zst:
unzstd filename.tar.zst
orzstd -d filename.tar.zst
.filename.tar
will be created. - List compressed archive:
tar tf filename.tar
. - Extract the compressed archive:
tar xf filename.tar
.
Hope this helps.
Solution 5 - Compression
I found some of these files in the Anaconda downloads. After I installed Anaconda, I was downloading additional packages. The downloaded packages in my Anaconda download directory were zip files (without the .zip extension), but they had these .tar.zst
files inside them. That led me to stackoverflow to figure out what they were, which led me to this question. If you're in the same boat, then Anaconda also supplies the answer.
It turns out that the zstd
and unzstd
executables are also installed by the Anaconda installer, so they should be available at the command line if you're in your Anaconda environment.
Solution 6 - Compression
Download the Python library and then you can use Python like following:
import zstandard as zstd
dctx = zstd.ZstdDecompressor()
with open(submission_path_read, 'rb') as ifh, open(submission_path_save, 'wb') as ofh:
dctx.copy_stream(ifh, ofh, write_size=65536)