Compression

7z 命令創建 XZ 文件

  • September 22, 2021

手冊頁說 7z 工具支持7z、LZMA2、XZ、ZIP、Zip64、CAB、RAR、ARJ、GZIP、BZIP2、TAR、CPIO、RPM、ISO、大多數文件系統映像和DEB格式。

它說我們可以將類型傳遞為-t{Type}. 下面的命令是成功的。

7z a -tzip archive.zip dir1 dir2 file1 file2

但是我無法.xz使用以下命令將文件存檔。

7z a -txz archive.zip dir1 dir2 file1 file2
$ 7z a -txz archive.xz dir1 dir2 file1 file2

7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=en_GB.UTF-8,Utf16=on,HugeFiles=on,64 bits,4 CPUs Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz (806E9),ASM,AES-NI)

Scanning the drive:
2 folders, 7 files, 196192711 bytes (188 MiB)

Creating archive: archive.xz

Items to compress: 9



System ERROR:
E_INVALIDARG

我在這裡做錯什麼了嗎?如何使用命令創建.xz文件?7z

編輯: 以下命令成功。

7z a -txz archive archive.tar

這是否意味著我們可以使用-txz-tbzip2僅存檔文件,因為我們不能在不先存檔文件的情況下直接對文件使用壓縮?

與 gzip ( .gz) 和 bzip2 ( .bz2) 類似,但與 zip 和 rar 不同的是,xz 是一種壓縮格式,而不是存檔格式。您可以壓縮一個文件:

7z a -txz foo.xz foo

這相當於xz foo.

通常,要製作壓縮存檔,您需要製作 tar 存檔並對其進行壓縮。您可以使用 7z 製作壓縮存檔,但據我所知,您不能一步完成:您必須先創建 tar,然後再壓縮。(7z 確實知道如何直接從壓縮存檔中讀取。)您可以在管道中執行此操作。

set -o pipefail
7z a -ttar -so archive.tar.xz dir1 dir2 file1 file2 | 7z a -txz -si archive.tar.xz

據我所知,archive.tar.xz左側命令被忽略(-so告訴 7z 寫入標準輸出),但它仍然是必要的。

對於管道,請注意在 sh 中,如果 tar 創建失敗,例如因為無法讀取文件,則管道命令不會失敗。Ksh、bash 和 zsh 可以選擇pipefail使整個命令失敗。

直接呼叫就簡單多了tar。大多數現代 tar 實現可以創建 gz、bz2 和 xz 壓縮檔案。

tar -cJf archive.tar.xz dir1 dir2 file1 file2

引用自:https://unix.stackexchange.com/questions/670151