标签: zstd

apt/dpkg 不支持 zst 压缩

我正在运行 Debian,即:

# uname -A
Linux martlins2 5.10.0-8-amd64 #1 SMP Debian 5.10.46-4 (2021-08-03) x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)

一段时间以来,我看到一些错误,表明某些某些部分在执行. 特别是,问题的原因在于:apt updatedpkg

# apt update
(...)
# apt upgrade
(...)
dpkg-deb: error: archive '/var/cache/apt/archives/libdrm-amdgpu1_2.4.107+git2109030500.d201a4~oibaf~i_amd64.deb' uses unknown compression for member 'control.tar.zst', giving up
Traceback (most recent call last):
  File "/usr/share/apt-listchanges/DebianFiles.py", line 124, in readdeb
    output = subprocess.check_output(command)
  File "/usr/lib/python3.9/subprocess.py", line 424, in check_output
    return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
  File "/usr/lib/python3.9/subprocess.py", line 528, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: …
Run Code Online (Sandbox Code Playgroud)

debian dpkg apt zstd

14
推荐指数
2
解决办法
4万
查看次数

如何在 btrfs 文件系统碎片整理中设置非默认 zstd 压缩级别?

# btrfs filesystem defragment -r -v -czstd:15 /
ERROR: unknown compression type zstd:15
# btrfs filesystem defragment -r -v -czstd_15 /
ERROR: unknown compression type zstd_15
# btrfs filesystem defragment -r -v -czstd15 /
ERROR: unknown compression type zstd15
Run Code Online (Sandbox Code Playgroud)

BTRFS手册没有给出关于如何选择一个压缩级别的线索:

-c[算法]

在碎片整理时压缩文件内容。可选参数选择压缩算法、zlib(默认)、lzo 或 zstd。目前无法选择不压缩。另见示例部分。

如何选择非默认 zstd 压缩级别来重新压缩现有的 btrfs 文件系统?



注意:btrfs filesystem defragment快照上可能会导致更大的磁盘空间消耗

警告:使用 Linux 内核版本 < 3.9 或 ? 3.14-rc2 以及 Linux 稳定内核版本?3.10.31,?3.12.12 还是?3.13.4将分解 COW 数据的 ref-links(例如使用 cp --reflink 复制的文件、快照或去重数据)。根据断开的引用链接,这可能会导致空间使用量的显着增加 …

btrfs zstd

12
推荐指数
2
解决办法
1万
查看次数

压缩和解压缩 dd 图像 - zstd 而不是 gzip

早些时候我使用 fsarchiver 创建压缩分区映像。由于一些奇怪的行为,我选择用dd.

但是,我喜欢 fsarchiver 用zstd压缩的方式

所以,我学习了,

这些基本上说的是,我必须使用以下命令进行备份

dd if=/dev/sda2 status=progress | gzip -c > /media/mint/Data/_Fsarchiver/MintV1.img.gz
Run Code Online (Sandbox Code Playgroud)

和以下命令来恢复

gunzip -c /media/mint/Data/_Fsarchiver/MintV1.img.gz | dd of=/dev/sda2 status=progress
Run Code Online (Sandbox Code Playgroud)

现在我想更换gzip -cgunzip -czstdzstd -d

我想出的命令是

压缩

sudo dd if=/dev/sda2 status=progress | zstd -16vT6 > /media/mint/Data/_Fsarchiver/MintV1.zst
Run Code Online (Sandbox Code Playgroud)

解压

zstd -vdcfT6 /media/mint/Data/_Fsarchiver/MintV1.zst | dd of=/dev/sda2 status=progress
Run Code Online (Sandbox Code Playgroud)

尝试这些命令是否安全,还是我做错了什么?

command-line compression dd zstd

7
推荐指数
1
解决办法
1万
查看次数

有任意大字典的压缩工具吗?

我正在寻找具有任意大字典(和“块大小”)的压缩工具。让我通过例子来解释。

首先让我们创建 32MB 的随机数据,然后将其连接到自身以制作长度为 64MB 的两倍长度的文件。

head -c32M /dev/urandom > test32.bin
cat test32.bin test32.bin > test64.bin
Run Code Online (Sandbox Code Playgroud)

当然test32.bin不可压缩,因为它是随机的,但前半部分和后半部分test64.bin是一样的,所以应该可以压缩大约 50%。

首先让我们尝试一些标准工具。test64.bin 的大小正好是 67108864。

  • gzip -9。压缩大小 67119133。
  • bzip2 -9。压缩大小 67409123。(开销很大!)
  • xz -7。压缩大小 67112252。
  • xz -8。压缩大小 33561724。
  • zstd --ultra -22。压缩大小 33558039。

我们从中了解到 gzip 和 bzip2 永远不能压缩这个文件。然而,使用足够大的字典 xz 和 zstd 可以压缩文件,在这种情况下, zstd 做得最好。

但是,现在尝试:

head -c150M /dev/urandom > test150.bin
cat test150.bin test150.bin > test300.bin
Run Code Online (Sandbox Code Playgroud)

test300.bin 的大小正好是 314572800。让我们在最高设置下再次尝试最佳压缩算法。

  • xz -9。压缩尺寸 314588440
  • zstd --ultra -22。压缩尺寸 314580017

在这种情况下,两个工具都不能压缩文件。

有没有一个工具可以有任意大的字典大小,所以它可以压缩像 test300.bin 这样的文件?


感谢评论和回答,结果证明 zstd 和 …

compression gzip bzip2 xz zstd

7
推荐指数
1
解决办法
741
查看次数

zstd for zram 实际上在 Linux 4.15 中可用吗?

我在zstd中找到/drivers/block/zram/zcomp.c,但在 中找不到任何与 zstd 相关的内容/crypto。那么 zstd for zram 是否真的在 Linux 4.15 中可用?

linux kernel zram zstd

3
推荐指数
1
解决办法
1293
查看次数

标签 统计

zstd ×5

compression ×2

apt ×1

btrfs ×1

bzip2 ×1

command-line ×1

dd ×1

debian ×1

dpkg ×1

gzip ×1

kernel ×1

linux ×1

xz ×1

zram ×1