Zstandard(zstd)压缩
首先,使用使用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
如果咩咩的文章对你有帮助,您可以 请我喝牛奶