无损压缩 zstd 体验

压缩单文件

$ zstd --compress 文件名
$ zstd 文件名
$ zstd --rm 文件名                  // 压缩完成后同时删除源文件
提示:自动生成一个以zst结尾的文件

压缩单文件高阶用法

$ zstd --compress --threads=4 --rm -19 文件名

参数注解:

threads: 使用4个线程,默认为1个线程

--rm: 删除原始源文件

-19: 使用压缩级别19(最高级别)

压缩目录

export ZSTD_CLEVEL=10
export ZSTD_NBTHREADS=4
tar --create --zstd --file 文件名.zst 目录名称
提示:压缩级别的范围1~19,不加参数级别为3

另一种姿势:

COMPRESSION_LEVEL=19
NUM_THREADS=$(nproc --all)

$ tar \
  --use-compress-program "zstd --threads=$NUM_THREADS -$COMPRESSION_LEVEL"\
  --create \
  --file 文件名.zst 目录名称

文件解压

以下方式皆可以实现解压:

$ zstd --decompress 文件名.zst
$ zstd --uncompress 文件名.zst
$ zstd -d 文件名.zst

多线程解压:

$ export ZSTD_NBTHREADS=4
$ tar --extract --zstd --file myFolder.tar.zst

示例

MySQL数据库备份压缩

$ xtrabackup  --user=用户名 --password=密码 --backup --compress=zstd  --compress-threads=2 --target-dir=/data/backup/zstd
提示:XtraBackup 版本8.0.30-23新增zstd压缩。

数据恢复

// 数据解压
$ xtrabackup --parallel=4 --decompress --parallel=16 --remove-original --target-dir=/data/backup/zstd

// 恢复数据
$ xtrabackup  --user=backup --password=123 --prepare --target-dir=/data/backup/zstd
$ xtrabackup  --defaults-file=/etc/my.cnf --user=用户 --password=密码 --port=3306 --datadir=/data/dbs/mysql --copy-back --target-dir=/data/backup/zstd

延伸