首先,使用使用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用于指定输出到标准输出,将内容交给后面的|>,否则依然会输出到当前目录下
解压用上面的
在win上除了最后一个都没用,或者先tar -cvf打包完再用zst去压缩,不知是什么原因win下的tar调用zstd压大文件会卡住不动

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

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