Utworzyć archiwum tar z kompresją xz?

3

Chciałbym utworzyć tarball za pomocą narzędzia do kompresji xz. Według Google, od 10.10 jest nieudokumentowany przełącznik „--xz” dla tar, ale nie mogę go uruchomić. W systemie Linux jest przełącznik „-J”, który umożliwia kompresję xz, ale nie jest obsługiwany bezpośrednio w systemie OS X.

Strona man dla tar odwołuje się do kompresji xz, ale nie pokazuje działającego przykładu jej użycia. Moje pozostałe wyszukiwania skutkują czymś podobnym do:

    tar cf - some_dir | xz -1 > some_dir.txz

Jednak dekompresja tego z wiersza poleceń jest mniej niż intuicyjna i wymaga xz do obsługi dekompresji przed przekazaniem pliku do tar.

Więc jaki jest „aktualny stan techniki” w stosowaniu kompresji xz bezpośrednio z tar?

Chuck Remes
źródło

Odpowiedzi:

6

Patrząc na kod źródłowy dla libarchive pakietu od firmy Apple Open Source dla OS X 10.8.5, 10.9, 10.10 oraz MacOS 10.12.3, które zawiera kod źródłowy dla bsdtar , obejmuje możliwość korzystania xz kompresję bezpośrednio tar, jednak nie został zaimplementowany w czasie kompilacji do OS X 10.9.0 i późniejszych. Chociaż strona podręcznika bsdtar.1 nie pokazuje -J, --xz opcji, mimo że znajduje się w kodzie źródłowym bsdtar.c .

Aby utworzyć xzskompresowane tararchiwum w systemie OS X 10.9 lub nowszym, użyj następujących przykładów składni:

tar -cJf filename.tar.xz /path/to/folder_or_file ...

Lub:

tar --xz -cf filename.tar.xz /path/to/folder_or_file ...

Przykład:

tar -cJf Documents.tar.xz "$HOME/Documents"

Lub:

tar --xz -cf Documents.tar.xz "$HOME/Documents"

Sprawdziłem także Documents.tar.xzplik po jego utworzeniu w edytorze heksadecymalnym i miał on odpowiedni nagłówek, który zawierał oczekiwaną 7zXZczęść podpisu.

użytkownik3439894
źródło
1
Fantastyczny. Podejrzewam, że nauczyło mnie to NIE ufać stronom man, ponieważ przełącznika -J nie ma na liście (w moim systemie operacyjnym 10.11.6). Czy istnieje mechanizm odsłonięty przez tar, aby zwiększyć liczbę wątków wykorzystywanych przez xz do kompresji? Najbliższe, jakie mogę znaleźć, to używanie XZ_OPT do przekazywania opcji, ale prawdopodobnie nie działa, ponieważ tar ma własną wewnętrzną implementację xz i nie wywołuje osobnego programu xz. Aby użyć wątków, wróciłem do używania potoków, RE: tar -cv / path / to | xz -T0> tarball.txz
Chuck Remes