Rozpakuj plik skompresowany w .txz i .tar za pomocą jednego polecenia

13

Mam plik skompresowany w * .txz. Po rozpakowaniu otrzymałem plik * .tar. Czy jest jakiś sposób, aby rozpakować go dwukrotnie za pomocą jednego polecenia? Mam na myśli rozpakowanie pliku (* .tar) .txz za pomocą jednego polecenia?

Wiem, że robię to w ten sposób:

xz -d file.txz
tar xvf file.tar

Ale zastanawiam się, czy jest lepszy sposób.

Paweł Jaworowski
źródło

Odpowiedzi:

18
xz -d < file.tar.xz | tar xvf -

Tak samo jest z każdym skompresowanym archiwum. Nigdy nie powinieneś tworzyć nieskompresowanej kopii oryginalnego pliku.

Niektóre tarimplementacje, takie jak najnowsze wersje GNU, tarmają wbudowane opcje do xzsamodzielnego wywoływania .

Z GNU tarlub bsdtar:

tar Jxvf file.tar.xz

Chociaż, jeśli masz wersję, która ma -J, istnieje szansa, że ​​automatycznie wykryje xzpliki, więc:

tar xvf file.tar.xz

wystarczy.

Jeśli Twój GNU lub BSD tarjest za stary, aby go w xzszczególności obsługiwać , możesz skorzystać z --use-compress-programopcji:

tar --use-compress-program=xz -xvf file.tar.gz

Jedną z zalet tarwywołania narzędzia kompresora jest to, że może zgłosić awarię w stanie wyjścia.

Uwaga: jeśli tar.xzarchiwum zostało utworzone za pomocą pixz, pixzmogło tardo niego dodać indeks, który umożliwia indywidualne rozpakowywanie plików bez konieczności rozpakowywania całego archiwum:

pixz -x path/to/file/in/archive < file.tar.xz | tar xvf -
Stéphane Chazelas
źródło
Muszę użyć tego: tar --use-compress-program = xz -xvf file.tar.gz Dzięki!
Paweł Jaworowski
6

To powinna być droga tar Jxvf file.txz

UVV
źródło
Tak, w przypadku nowoczesnych tarmożesz użyć -Jlub--xz .
Cornstalks,
4

Rozpakowanie prawdopodobnie nie jest właściwą terminologią. Można rozpakować z xzi rozpakować z tar.

Strona podręcznika dla GNU tar( man tarGNU tar jest domyślnym w Debianie) określa, że ​​możesz użyć:

-I, --use-compress-program PROG
      filter through PROG (must accept -d)

i xzobsługuje tę -dopcję, dzięki czemu można użyć:

tar --use-compress-program xz xvf file.txz 

Co jest znacznie mniej oczywiste ze strony człowieka jest to, że -xzi -Jsą skróty dla --use-compress-program xzlub -I xz.

A na stronie podręcznika nie jest wcale określone to, co możesz zrobić

tar xvf file.txz 

w GNU tar i rozpozna plik tar jako skompresowany xz.

Anthon
źródło