ZSTD(1) ZSTD(1) zstd - zstd, zstdmt, unzstd, zstdcat - .zst zstd [] [-|] [-o ] zstdmt zstd -T0 unzstd zstd -d zstdcat zstd -dcf zstd gzip(1) xz(1) LZ77 FSE huff0 zstd > 200 MB/s > 500 MB/s zstd gzip o --rm o zstd -q o zstd -q o zstd stdin stdin o zstd zstd file files file - zstd zstd zstd --stdout -o files file o .zst o .zst .zst .zst zstd .zst KiB 1,0242^10KiK KB KiB MiB 1,048,5762^20MiM MB MiB -z, --compress unzstd --decompress -d, --decompress, --uncompress -t, --test files --decompress --stdout > /dev/null -b# # BENCHMARK --train FILES FILES > 100 DICTIONARY BUILDER -l, --list zstd -v o -# # [1-19]3 2 o --ultra 20 22 o --fast[=#] =# 1 --fast o -T#, --threads=# # CPU 1 4 ZSTD_NBTHREADS # 0 CPU ZSTDMT_NBWORKERS_MAX 32 64 64 256 zstd o --single-thread I/O I/O 32 1 2 -T1 1 I/O -T1 o --auto-threads={physical,logical} (default: physical) -T0 o --adapt[=min=#,max=#]zstd I/O -v min max --long --single-thread 8 MiB wlog --adapt >=2 o --long[=#] windowLog # # 27windowLog windowLog 27 --long=windowLog --memory=windowSize o --max 32 o -D DICT DICT o --patch-from FILE zstd windowSize > srcSize -D chainLog < fileLogfileLog windowLog --long 15 --single-thread --patch-from 15 "--single-thread" 19 --zstd=targetLength= 4096 --zstd=chainLog= o --rsyncablezstd rsync --rsyncable --single-thread o -C, --[no-]check o --[no-]content-size/ --content-size o --no-dictID ID o -M#, --memory=#zstd 128 MiB --patch-from= 128 MiB 2 GiB zstd o --stream-size=# o --size-hint=#zstd o --target-compressed-block-size=#"" 1 10% o -f, --force stdout stdout o -c, --stdout --rm o -o FILE FILE -c o --[no-]sparse/ I/O stdout stdout o --[no-]pass-through/ stdout -f o --rm stdout -o -f o -k, --keep o -r shell o --filelist FILE FILE ls o --output-dir-flat DIR DIR DIR -f o --output-dir-mirror DIR --output-dir-flat DIR DIR ".." "/var/tmp/abc" "output-dir/var/tmp/abc" --output-dir-flat o --format=FORMATzstd zstdgzipxzlzma lz4 zstd o -h/-H, --help/ o -V, --version -V -vV -vvV POSIX -qV o -v, --verbose o -q, --quiet o --no-progress o --show-default-cparams o --exclude-compressed o ---- gzip gzip zstd gzip -n, --no-name --best -9 ZSTD_CLEVEL ZSTD_NBTHREADS ZSTD_CLEVEL 1 19 "" ZSTD_CLEVEL ZSTD_CLEVEL 3 ZSTD_NBTHREADS zstd ZSTD_NBTHREADS ZSTD_NBTHREADS max(1, min(4, nbCores/4)) ZSTDMT_NBWORKERS_MAX==200 zstd -# -T# zstd 22 --show-default-cparams --zstd[=options]: options options strategy=strat, strat=strat 9 1 91=ZSTD_fast, 2=ZSTD_dfast, 3=ZSTD_greedy, 4=ZSTD_lazy, 5=ZSTD_lazy2, 6=ZSTD_btlazy2, 7=ZSTD_btopt, 8=ZSTD_btultra, 9=ZSTD_btultra2 windowLog=wlog, wlog=wlog wlog 101 KiB 32 301 GiB 64 312 GiB windowLog 27 --long=windowLog --memory=windowSize hashLog=hlog, hlog=hlog hlog 664 / 256 B 3010 / 4 GiB chainLog=clog, clog=clog strategy ZSTD_fast strategy clog 664 / 256 B 32 295.12 / 2 GiB 64 3010 / 4 GiB searchLog=slog, slog=slog slog 1 "windowLog" - 1 minMatch=mml, mml=mml mml 3 7 targetLength=tlen, tlen=tlen ZSTD_btoptZSTD_btultra ZSTD_btultra2 targetLength ZSTD_fast > 0 targetLength tlen 0 128 KiB overlapLog=ovlog, ovlog=ovlog overlapSize ovlog 0 91 ""9 "" windowSize ovlog 1 8 "windowSize/2"6 "windowSize/8" 0 ""ovlog zstd ovlog 6 9 strat ldmHashRateLog=lhrlog, lhrlog=lhrlog 4 7 strategy ldmHashLog=lhlog, lhlog=lhlog lhlog 6 30windowLog - ldmHashRateLog ldmMinMatch=lmml, lmml=lmml lmml 4 409632 64 strategy ldmBucketSizeLog=lblog, lblog=lblog lblog 1 84 8 strategy 256 KB 19 --zstd=wlog=23,clog=23,hlog=22,slog=6,mml=3,tlen=48,strat=6 -B#: 4 * windowSize-B# 512 KB overlapSize zstd zstd dictionary -D dictionaryFileName --train FILEs FILEs > 100 100 100 KB 10 MB--train -r shell 128 KiB zstd --train --train-fastcover --train-legacy --train-cover cover --train --train-fastcover=d=8,steps=4 -o FILE FILE dictionary --maxdict=# 112640 KB MB -# # -B# # -M#, --memory=# 2 GB2 GB CLI --dictID=# ID IDzstd 4 ID ID ID ID < 256 1 ID < 65536 2 4 RFC8878 32768 2^31 ID --train-cover[=k#,d=#,steps=#,split=#,shrink[=#]] cover d d = 6 d = 8 k [50, 2000] steps steps 40 split split <= 0 100 d <= k shrink shrinkDict 0 shrink shrinkDictMaxRegression 1 k d d [6, 8] 16 d <= 8 k [2 * d, 2000] split 100 d k zstd shrink shrinkDictMaxRegression% zstd --train-cover FILEs zstd --train-cover=k=50,d=8 FILEs zstd --train-cover=d=8,steps=500 FILEs zstd --train-cover=k=50 FILEs zstd --train-cover=k=50,split=60 FILEs zstd --train-cover=shrink FILEs zstd --train-cover=shrink=2 FILEs --train-fastcover[=k#,d=#,f=#,steps=#,split=#,accel=#] cover f accel split split split = 75 f f = 20 0 < f < 32 accel accel = 1 0 < accel <= 10 d = 6 d = 8 f d [0,2^f - 1] f zstd --train-fastcover FILEs zstd --train-fastcover=d=8,f=15,accel=2 FILEs --train-legacy[=selectivity=#] selectivity9selectivity --train-legacy=s=# zstd --train-legacy FILEs zstd --train-legacy=selectivity=8 FILEs zstd zstd -b [FILE(s)] zstd -r DIRECTORY FILE lorem ipsum I/O max(1, min(4, nbCores/4)) o -b# # o -e# -b# -e# o -d zstd o -i#3 o -B#, --block-size=# # o -S o -D dictionary o --priority=rtWindows -T#--zstd=###-D dictionary #: -> (), , / 1 / zstdgrep(1), zstdless(1), gzip(1), xz(1) zstandard Y. Collet "Zstandard Compression and the `application/zstd' Media Type"https://www.ietf.org/rfc/rfc8878.txt RFC 88782021 2 BUGS https://github.com/facebook/zstd/issues Yann Collet man man https://github.com/man-pages-zh/manpages- zh zstd 1.5.7 2025 ZSTD(1)