以下脚本
mkdir test && cd test
mkdir files
touch files/{1,2,3}
tar --create --file "test.lzma" files/{1,2,3} --auto-compress
mkdir extracted_files
tar --extract --file "test.lzma" --directory extracted_files --auto-compress
产生以下错误:
tar:这看起来不像 tar 存档
但实际上 tar+compress 和 uncompress+untar 确实发生了(文件就位)。为什么会发生这种情况?这是某种错误吗tar
?
在我的系统上:
xz --version
xz (XZ Utils) 5.2.7
liblzma 5.2.7
tar --version
tar (GNU tar) 1.34
file test/test.lzma
test/test.lzma: LZMA compressed data, streamed
ls test/extracted_files/
files
您也可以将其复制到https://replit.com/languages/bash(与xz (XZ Utils) 5.2.2
和tar (GNU tar) 1.34
)。但不是在https://www.onlinegdb.com/online_bash_shell(与xz (XZ Utils) 5.2.4
和tar (GNU tar) 1.30
)。
答案1
固定在上游。查看https://savannah.gnu.org/bugs/index.php?63250。
@谢尔盖·波兹尼亚科夫<灰色>:
“这看起来不像 tar 存档”不是错误,而是警告。特别是当 tar 无法通过签名确定文件格式并且文件大小小于 tar 块大小时,会产生此错误。当签名识别失败时,tar会尝试通过后缀来确定文件格式。在这种情况下,它成功并提取了文件。
我已安装以下修复程序来识别 xz 生成的 LZMA 文件:
http://git.savannah.gnu.org/cgit/tar.git/commit/?id=02f9af1b8df67e55ceb19ea1465d210a2fa1f02c
PS:解压时不需要--auto-compress选项。