无损压缩 zstd 体验
![无损压缩 zstd 体验](/content/images/size/w960/2024/05/screenshot-20240531-094734.png)
压缩单文件
$ 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