Files
vim-ale/crabz/README.md
2023-10-28 15:53:54 -06:00

117 lines
3.2 KiB
Markdown

---
title: Crabz
homepage: https://github.com/sstadick/crabz
tagline: |
crabz: multi-threaded gzip (like pigz, but in Rust)
---
To update or switch versions, run `webi crabz@stable` (or `@0.8`, `@beta`, etc).
## Cheat Sheet
> `crabz` brings the power of multi-core compression to gzip and deflate. \
> (and a few other formats + other useful features)
gzip, faster.
```sh
crabz -I ./example.json
crabz -d -I ./example.json.gz
```
```text
Compressing (gzip) with 8 threads at compression level 6.
Decompressing (gzip) with 8 threads available.
```
## Table of Contents
- Files
- Tar
- Other Formats
### Files
These are the files/directories that are created and/or modified with this
install:
```text
~/.config/envman/PATH.env
~/.local/bin/crabz
```
#### How to Optimize
| Flag | Value | Comments |
| ----------------------------- | ----- | ------------------------------------------ |
| `-l`, `--compression-level` | 1-9 | higher is slower |
| `-p`, `--compression-threads` | 8 | set to the number of available cores |
| | | (but no more than 4 for decompression) |
| `-P`, `--pin-at` | 0 | pin to physical cores, starting at N |
| | | (so 4 threads starting at 0 is 0, 1, 2, 3) |
```sh
crabz -l 9 -p 8 -I ./example.tar
crabz -d -p 4 -I ./example.tar.gz
```
#### How to use with Tar
Tar and then compress:
```sh
tar cv ./example/ | crabz -o ./example.tar.gz
```
Or decompress and then untar:
```sh
crabz -d ./example.tar.gz | tar xv
```
#### How to use with other formats
`crabz` supports most of the _LZ77 with Huffman coding_ compression formats:
| Format | Extension | Notes |
| ---------------- | --------- | ------------------------------------ |
| `gzip` | `.gz` | of GNU fame |
| [`bgzf`][bgzf] | `.gz` | supports random-access decompression |
| [`mgzip`][mgzip] | `.gz` | of python fame |
| `zlib` | `.zz` | of PNG fame, also `.z` |
| [`snap`][snap] | `.sz` | of LevelDB and MongoDB fame |
| `deflate` | `.gz` | the O.G. LZ77 |
```sh
crabz --format mgzip -I ./example.tar
```
```sh
# DO NOT decompress in-place
crabz --format mgzip -d ./example.tar.gz -o ./example.tar
# verify before removing the original
tar tf ./example.tar
```
⚠️ **Warnings**:
- DO NOT deflate in-place with non-standard formats: \
Although `gunzip` will work correctly on files compressed with `mgzip` or
`bgzf`, some combinations (ex: decompressing from `mgzip` with `bgzf`) could
result in corruption!
- `tar xvf` and `gzip -l` may report incorrect information, even though `gunzip`
will work
See also:
- https://dev.to/biellls/compression-clearing-the-confusion-on-zip-gzip-zlib-and-deflate-15g1
(p.s. `zip` isn't in the list because it's a container format like `tar`, not a
zip format)
[snap]: https://github.com/google/snappy/blob/main/format_description.txt
[bgzf]: https://samtools.github.io/hts-specs/SAMv1.pdf
[mgzip]: https://pypi.org/project/mgzip/