次のスクリプト
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 +圧縮と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/言語/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。
@Sergey Poznyakov <グレー>:
「これはtarアーカイブのようには見えません。」はエラーではなく警告です。このエラーは、特に tar が署名のファイル形式を判別できず、ファイルサイズが tar ブロックサイズより小さい場合に発生します。署名認識が失敗した場合、tarはサフィックスでファイル形式を決定しようとします。この場合、成功してファイルを抽出しました。
xz生成LZMAファイルを認識するために、次の修正をインストールしました。
http://git.savannah.gnu.org/cgit/tar.git/commit/?id=02f9af1b8df67e55ceb19ea1465d210a2fa1f02c
PS:解凍するには--auto-compressオプションは必要ありません。