标签: xz

如何检查RPM包使用什么压缩类型?

我最近意识到 RPM 软件包几年前从 gzip 压缩转变为 xz 压缩。我需要检查我拥有的 RPM 包的压缩类型。我还需要检查我的系统在尝试解压 RPM 文件时考虑的压缩类型。

rpm gzip oracle-linux xz

4
推荐指数
1
解决办法
5569
查看次数

我怎么知道 tar 是否真的将 XZ_OPT 传递给 xz?

我在做什么:

XZ_OPT='-T0 -9 -vv' tar -vvcJf ~/backup.tar.xz ...FILES
Run Code Online (Sandbox Code Playgroud)

我怀疑是否tar真的通过了给定的选项,我已经尝试过这些事情:

  1. 我使用了-vvin XZ_OPT,但xz输出中没有消息,也没有--verbose
  2. 我也ps aux | grep xz用来查看是否tar会为spawn另一个进程xz,但我没有看到tar创建任何进程。

问题

  1. 请问XZ_OPT环境真的有用吗?如何验证?
  2. 为什么我xztar执行过程中找不到进程?难道tar真的产卵过程来压缩文件?

环境

$ xz --version
xz (XZ Utils) 5.2.5
liblzma 5.2.5
$ tar --version
bsdtar 3.3.2 - libarchive 3.3.2 zlib/1.2.11 liblzma/5.0.5 bz2lib/1.0.6
Run Code Online (Sandbox Code Playgroud)

tar xz

4
推荐指数
1
解决办法
451
查看次数

如何在没有中间文件的情况下将多个命令的结果和管道连接到另一个?

假设我有四个非常大的文本文件,都用 xz 压缩。

file1.log.xz
file2.log.xz
file3.log.xz
file4.log.xz
Run Code Online (Sandbox Code Playgroud)

我想做的是将这四个文件的未压缩内容连接成一个新文件file.xz。问题是,我希望不必通过中间文件。

这些文件是非常大的日志文件,大小为千兆字节。压缩后,它们小于 100MB,但如果我要扩展所有四个文件然后重新连接,我至少需要 30GB 的存储空间来存储未压缩的文件。当然,我可以将cat所有未压缩的文件xz重新压缩:

cat file1.log file2.log file3.log file4.log | xz -ve9 - > newfile.log.xz
Run Code Online (Sandbox Code Playgroud)

我知道如何在没有中间件的情况下在命令行中连接两个文件,假设一个未压缩,一个已压缩:

xz -d -c file2.log.xz | cat file1.log - | xz -ve9 - > files1and2.log.xz
Run Code Online (Sandbox Code Playgroud)

但这仅适用于一个文件,其中之一必须已经解压缩。

我不确定我是否可以cat将各种 .xz 文件放在一起 - 让我们假设它们可能已经用不同的参数进行了压缩。

在更高的层次上,可以问这个问题本身:您能否获取多个(超过两个)命令的输出,连接这些输出,并将它们通过管道传输到另一个进程而无需中间文件?(假设场景:假设我正在使用输出到 stdout 的脚本对所有四个非常大的文件进行某种处理,并希望将输出放入另一个压缩文件中。)

是否可以仅使用 shell 命令来执行此操作?

pipe shell-script xz

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

GNU 并行正确使用与 tar、xz、gpg 结合使用

我想加快我的归档操作,我通常会进行 23 GiB(一张蓝光)备份。

我发现了这个:How to do Large fileparallel Encryption using GnuPG and GNU parallel?


因为我根本不理解这段代码(从未使用过parallel):

tar --create --format=posix --preserve-permissions --same-owner --directory $BASE/$name --to-stdout . |
    parallel --pipe --recend '' --keep-order --block-size 128M "xz -9 --check=sha256 |
    gpg --encrypt --recipient $RECIPIENT;echo bLoCk EnD" |
    pv > $TARGET/$FILENAME
Run Code Online (Sandbox Code Playgroud)

我想问一下有没有人可以帮我解析一下。谢谢。

tar gpg xz gnu-parallel

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

如何在不使用 tar 的情况下 XZ 压缩目录?

我知道如何使用 tar 压缩带有 xz 的目录,但是是否可以使用 xz 而不使用 tar 来压缩目录?

如果我尝试:

xz -z myDir
Run Code Online (Sandbox Code Playgroud)

然后返回以下错误:

xz: myDir: Is a directory, skipping
Run Code Online (Sandbox Code Playgroud)

xz

0
推荐指数
1
解决办法
478
查看次数

标签 统计

xz ×5

tar ×2

gnu-parallel ×1

gpg ×1

gzip ×1

oracle-linux ×1

pipe ×1

rpm ×1

shell-script ×1