无法使用 tar 通过 bzip2 压缩运行存档

Osc*_*ion 12 tar compression

我在使用 tar 使用 bzip 压缩存档时遇到了困难。我拥有的存档是 user-logs.tar。

我正在尝试运行这个:

tar -jf user-logs.tar
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

tar: You must specify one of the `-Acdtrux' or `--test-label'  options
Try `tar --help' or `tar --usage' for more information.
Run Code Online (Sandbox Code Playgroud)

我还尝试使用 -c 创建一个带有 bzip 文件扩展名的新文件,但没有成功。

# tar -cvjf user-logs.tar.gz user-logs.tar
user-logs.tar
tar (child): bzip2: Cannot exec: No such file or directory
tar (child): Error is not recoverable: exiting now
Run Code Online (Sandbox Code Playgroud)

Tho*_*key 15

错误消息告诉该怎么做:您可能需要添加-c(用于create),例如,

tar -jcf user-logs.tar  myargs
Run Code Online (Sandbox Code Playgroud)

以及一些参数myargs(放入user-logs.tar存档的东西)。

在第二种情况下,问题是您没有bzip2安装。tar 程序依赖这个外部程序进行压缩。

如果您有一个 tar 存档并且只想压缩它,您可以这样做:

bzip2 user-logs.tar
Run Code Online (Sandbox Code Playgroud)

这(如果您 bzip2安装)会将文件更改为user-logs.tar.bz2(通常会使其更小)。

对于安装bzip2,这取决于您使用的系统。例如,对于 Ubuntu,这将是

sudo apt-get install bzip2
Run Code Online (Sandbox Code Playgroud)

而 Fedora 可能(也许dnf):

sudo yum install bzip2
Run Code Online (Sandbox Code Playgroud)

GNUtar程序不知道如何压缩现有文件,例如user-logs.tar(bzip2这样做)。该tar程序可以使用外部压缩程序gzip,通过打开通向这些程序的管道bzip2xz通过管道将 tar 存档发送到压缩实用程序,压缩实用程序压缩从中读取的数据tar并将结果写入tar程序指定的文件名。

或者,tar压缩实用程序可以是同一个程序。BSD tar 使用libarchive(除了名称之外它们并没有真正不同)进行压缩。

进一步阅读:


rvs*_*rvs 5

错误消息bzip2: Cannot exec: No such file or directory告诉您 tar 找不到 bzip2。很可能你没有安装它。

yum install bzip2通过或apt-get install bzip2或类似的方式安装它,具体取决于您的操作系统。