首先,使用使用zstd压缩非常块,压缩后的文件也很小,压缩等级为1-19,默认是3,并且支持多线程压缩(gzip需要装pigz)
但是文本文件(比如日志)使用gzip压缩后可以直接使用vim打开并且编辑,zip也是一样的道理

举个例子,5G的系统盘tf卡的dd备份,使用gzip压缩后大小为1.9G,使用zstd压缩得到的文件是1.7G
关于压缩等级,建议设置成9,因为经过测试,像nas的j1900和3.5寸监控机械硬盘,在使用15的时候压缩挺慢的,9则挺快,默认的3由于硬盘速度其实也块不到哪去,而15与9的压缩后的大小差距不到50m,超过15会非常占cpu(ssd用16,12代i9,24线程占满,15则占不满)

压缩命令

zstd -T0 -9 文件名

解压命令

zstd -d 文件名

不会像gzip那样自动删除文件,还支持管道,gzip不支持管道解压,但是支持管道压缩,导致还原的时候需要先gzip -dk 文件名解压出来后再使用,对于硬盘有一定的压力
如果需要操作完自动删除原文件,需要加上 --rm参数,如果ram非常充足,还可以使用 --ultra -22来提高压缩比(压缩等级最高22)

在多个文件时,可以使用tar进行压缩

tar -cavf 压缩包.tar.zst 要压缩的内容用空格隔开

解压

tar -xavf 压缩包.tar

或者使用这种方法来指定压缩参数,使文件更小,--long=31将使用2G的运行内存作为缓存协助压缩,--long=27则为128M

tar --use-compress-program="zstd -9 -T0 --long=31" -cvf 压缩包.tar.zst 要压缩的内容用空格隔开
tar -cvf - 要压缩的内容用空格隔开 | zstd -9 -T0 --long=31 -c > 压缩包.tar.zst

其中 - -c用于指定输出到标准输出,将内容交给后面的|>,否则依然会输出到当前目录下
解压用上面的

在Windows下,情况比较特殊
Win10 (其中zstd.exe需自备,tar系统自带):

tar -cvf 要压缩的内容用空格隔开 | zstd > 压缩包.tar.zst

解压

zstd -d 1.tar.zst | tar -xvf -

Win11:

tar --zstd -cvf 压缩包.tar.zst 要压缩的内容用空格隔开

解压

tar --zstd -xvf 压缩包.tar.zst

配合dd使用,备份硬盘或者分区

dd if=/dev/mmcblk0 bs=100M | zstd -9 -T0 --long=27 -c > ddBackup.img.zst

还原

zstd -d ddBackup.img.zst | dd of=/dev/mmcblk0 bs=100M