Próbuję utworzyć .tar.xz
skompresowane archiwum jednym poleceniem. Jaka jest specyficzna składnia tego?
Próbowałem tar cf - file | xz file.tar.xz
, ale to nie działa.
compression
archive
tar
xz
George K.
źródło
źródło
v
do polecenia przełączników (tar -cJvf
), aby były pełne, pokazuje pliki dodawane do archiwum.f
ostatnią, nawet bez myślnika.tar
w systemie macOS wydaje się obsługiwać,-J
ale funkcja nie jest podana na stronie podręcznika. Musiałem to sprawdzić tutaj. Chociaż wspominają o XZ w sekcji o--options
...Przełącznik
-J
działa tylko w nowszych systemach. Uniwersalne polecenie to:Aby utworzyć archiwum .tar.xz
Wyjaśnienie
tar cf - directory
czyta katalog / i zaczyna umieszczać go w formacie TAR. Wynik tej operacji jest generowany na standardowym wyjściu.|
przesyła standardowe wyjście na wejście innego programu ...... co tak się dzieje
xz -z -
. XZ jest skonfigurowany do kompresji (-z
) archiwum ze standardowego wejścia (-
).Przekierowujesz dane wyjściowe z
xz
dotar.xz
pliku.źródło
-f
nie oznacza „z pliku” po przekazaniu doxz
. Zamiast tego jest skrótem od--force
(szczegóły w xz (1) ) i najlepiej go nie używać, chyba że jest to potrzebne.tar cf - directory/ | xz -z -T0 - > directory.tar.xz
-1 -T0
lub-0 -T0
jako opcjami, które zwykle dają mniejszy plik niż gzip w porównywalnym lub szybszym czasie, podczas gdy domyślny-6
jest znacznie wolniejszy niż gzip.Jeśli podoba ci się tryb rur, jest to najbardziej czyste rozwiązanie:
Nie jest konieczne umieszczanie tej
f
opcji, aby zajmować się plikami, a następnie użycie-
do określenia, że plik jest standardowym wejściem. Nie trzeba też określać-z
opcji dlaxz
, ponieważ jest ona domyślna.Działa z
gzip
ibzip2
też:lub
Dekompresja jest również dość prosta:
Jeśli masz tylko
tar
archiwum, możesz użyćcat
:Jeśli chcesz wyświetlić tylko pliki, użyj
tar t
.źródło
Korzystanie z opcji kompresji xz
Jeśli chcesz użyć opcji kompresji dla
xz
lub jeśli używasztar
w systemie MacOS, prawdopodobnie chcesz uniknąćtar -cJf
składni.Zgodnie z
man xz
tym sposobem na to jest:tar cf - baz | xz -4e > baz.tar.xz
Bo podobał mi się format Wojciecha Adama Koszka , ale nie informacja:
c
tworzy nowe archiwum dla określonych plików.f
czyta z katalogu (najlepiej umieścić to na sekundę, ponieważ-cf
! =-fc
)-
wyjścia na standardowe wyjście|
potokuje wyjście do następnego poleceniaxz -4e
połączeniaxz
z-4e
opcją kompresji. (równe-4
--extreme
)> baz.tar.xz
kieruje tarowany i skompresowany plik dobaz.tar.xz
gdzie
-4e
jest, użyj własnych opcji kompresji. Często używam-k
do--keep
oryginalnego pliku i-9
do naprawdę dużej kompresji.-z
ręcznie ustawićxz
na zip, chociaż domyślnie jest to kompresowanie, jeśli nie jest to zalecane.Aby zdekompresować i rozpakować
Aby powtórzyć Rafael van Horn , aby zdekompresować i rozpakować (patrz uwaga poniżej):
Uwaga: w przeciwieństwie do odpowiedzi Rafaela użyj
xz -dc
zamiastcatxz
. Dokumenty zalecają to w przypadku, gdy używasz tego do pisania skryptów. Najlepiej mieć nawyk używania-d
lub--decompress
zamiast tegounxz
. Jeśli jednak musisz, użycie tych poleceń z wiersza poleceń jest w porządku.źródło
tar -cJf
składni w systemie MacOS? Po prostu ciekawy, ponieważ właśnie to robiłem i wydawało się, że działa.Spróbuj tego:
tar -cf file.tar file-to-compress ; xz -z file.tar
Uwaga:
|
ponieważ powoduje to jednoczesne uruchamianie poleceń. Używanie;
lub&
wykonywanie poleceń jedno po drugim.źródło
J
opcji, ale to działa. Myślę, że potrzebujesz RHEL6.tar -c file-to-compress | xz -z > file.tar.xz
.&
nie spowoduje uruchomienia poleceń jedno po drugim. Zamiast tego uruchomi pierwszy jako proces w tle.