我在使用 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
,通过打开通向这些程序的管道bzip2
,xz
通过管道将 tar 存档发送到压缩实用程序,压缩实用程序压缩从中读取的数据tar
并将结果写入tar
程序指定的文件名。
或者,tar
压缩实用程序可以是同一个程序。BSD tar 使用libarchive
(除了名称之外它们并没有真正不同)进行压缩。
进一步阅读:
错误消息bzip2: Cannot exec: No such file or directory
告诉您 tar 找不到 bzip2。很可能你没有安装它。
yum install bzip2
通过或apt-get install bzip2
或类似的方式安装它,具体取决于您的操作系统。