Odpowiedzi:
Użyj -Jopcji kompresji dla xz. I pamiętaj o man tar:)
tar cfJ <archive.tar.xz> <files>
Edycja 2015-08-10:
Jeśli przekazujesz argumenty tar z myślnikami (np .: tar -cfw przeciwieństwie do tar cf), to -fopcja musi być ostatnia , ponieważ określa nazwę pliku (dzięki @ABB za wskazanie tego!). W takim przypadku polecenie wygląda następująco:
tar -cJf <archive.tar.xz> <files>
fostatnią, nawet bez myślnika.
tarw systemie macOS wydaje się obsługiwać, -Jale funkcja nie jest podana na stronie podręcznika. Musiałem to sprawdzić tutaj. Chociaż wspominają o XZ w sekcji o --options...
Przełącznik -Jdziała tylko w nowszych systemach. Uniwersalne polecenie to:
Aby utworzyć archiwum .tar.xz
tar cf - directory/ | xz -z - > directory.tar.xz
Wyjaśnienie
tar cf - directoryczyta 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 xzdo tar.xzpliku.
-fnie oznacza „z pliku” po przekazaniu do xz. 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 -T0lub -0 -T0jako opcjami, które zwykle dają mniejszy plik niż gzip w porównywalnym lub szybszym czasie, podczas gdy domyślny -6jest znacznie wolniejszy niż gzip.
Jeśli podoba ci się tryb rur, jest to najbardziej czyste rozwiązanie:
tar c some-dir | xz > some-dir.tar.xz
Nie jest konieczne umieszczanie tej fopcji, aby zajmować się plikami, a następnie użycie -do określenia, że plik jest standardowym wejściem. Nie trzeba też określać -zopcji dla xz, ponieważ jest ona domyślna.
Działa z gzipi bzip2też:
tar c some-dir | gzip > some-dir.tar.gz
lub
tar c some-dir | bzip2 > some-dir.tar.bz2
Dekompresja jest również dość prosta:
xzcat tarball.tar.xz | tar x
bzcat tarball.tar.bz2 | tar x
zcat tarball.tar.gz | tar x
Jeśli masz tylko tararchiwum, możesz użyć cat:
cat archive.tar | tar x
Jeśli chcesz wyświetlić tylko pliki, użyj tar t.
Jeśli chcesz użyć opcji kompresji dla xzlub jeśli używasz tarw systemie MacOS, prawdopodobnie chcesz uniknąć tar -cJfskładni.
Zgodnie z man xztym 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. fczyta z katalogu (najlepiej umieścić to na sekundę, ponieważ -cf! = -fc)- wyjścia na standardowe wyjście| potokuje wyjście do następnego poleceniaxz -4epołączenia xzz -4eopcją kompresji. (równe -4 --extreme)> baz.tar.xz kieruje tarowany i skompresowany plik do baz.tar.xz gdzie -4ejest, użyj własnych opcji kompresji. Często używam -kdo --keeporyginalnego pliku i -9do naprawdę dużej kompresji. -zręcznie ustawić xzna zip, chociaż domyślnie jest to kompresowanie, jeśli nie jest to zalecane.
Aby powtórzyć Rafael van Horn , aby zdekompresować i rozpakować (patrz uwaga poniżej):
xz -dc baz.tar.xz | tar x
Uwaga: w przeciwieństwie do odpowiedzi Rafaela użyj xz -dczamiast catxz. Dokumenty zalecają to w przypadku, gdy używasz tego do pisania skryptów. Najlepiej mieć nawyk używania -dlub --decompresszamiast tego unxz. Jeśli jednak musisz, użycie tych poleceń z wiersza poleceń jest w porządku.
tar -cJfskł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.Jopcji, 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.
vdo polecenia przełączników (tar -cJvf), aby były pełne, pokazuje pliki dodawane do archiwum.