Nowe posty

Autor Wątek: Kompresja bz2 i gz przez tar  (Przeczytany 4156 razy)

bomber4

  • Gość
Kompresja bz2 i gz przez tar
« dnia: 2014-02-02, 19:06:51 »
Witam

Czy jest jakaś różnica kompresując archiwum poprzez użycie komend:
  "tar -cjf" zamiast "bzip2 -c" oraz
  "tar -czf" zamiast "gzip -c" ?

Offline vanhelzing

  • Users
  • Prawie jak Guru
  • ****
  • Wiadomości: 314
    • Zobacz profil

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 3070
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
Kompresja bz2 i gz przez tar
« Odpowiedź #2 dnia: 2014-02-02, 21:27:20 »
TAR w tle odpala odpowiedni archiwizer (nie ma wbudowanych procedur kompresji) i karmi go potokiem.
Różnica jest taka, że przy jawnym potoku możesz dać własne opcje kompresora, przy potoku zrobionym przez TAR pakowanie robi się na defaultach.

czyli tar cjf plik.tar.bz2 katalog to to samo co tar -cf - katalog | bzip2 > plik.tar.bz2. Nie da się jednak zastąpić tar -cf - katalog | bzip2 -9 > plik.tar.bz2 samym tar z żadnymi parametrami (nie znalazłem, choć wydawało mi się, że był kiedyś jakiś parametr TAR do przekazania flag do kompresora).
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy

bomber4

  • Gość
Kompresja bz2 i gz przez tar
« Odpowiedź #3 dnia: 2014-02-02, 22:05:06 »
Dzięki. Ale jak ostatnio miałem za zadanie "Skompresować archiwum testowe.tar do formatu .bz2" i zrobiłem to za pomocą komendy "tar cjf plik.tar.bz2 testowe.tar". To jest źle?

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 3070
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
Kompresja bz2 i gz przez tar
« Odpowiedź #4 dnia: 2014-02-03, 09:05:42 »
Mylisz dwie rzeczy.

* TAR zawija wiele plików do jednego dużego. To, że kompresuje to taki dodatkowy feature.
* BZIP/GZIP/LZMA/LZOP/XZ kompresują jeden plik do jednego spakowanego.

Nie możesz zrobić "gołego" pliku bzip2 zawierającego więcej niż jeden spakowany plk. Dlatego, jeżeli trzeba skompresować więcej niż jeden plik, pierw wszystkie pliki pakuje się do archiwum TAR, a potem tej jeden wynikowy plik kompresuje się.

tar cjf plik.tar.bz2 testowe.tar zadziała, ale to nie jest to, o co chodziło w pytaniu. W wyniku tego polecenia otrzymasz skompresowane archiwum zawierające archiwum czegośtam. A miałeś uzyskać skompresowane archiwum czegośtam.

Masz [BZ2 ... [TAR [TAR [ oryginalne dane ]]]] a miałeś mieć [BZ2 ... [TAR [ oryginalne dane ]]].

Wynika to z tego, że  testowe.tar to już jest archiwum TAR, więc wystarczyło to spakować BZIPem i już. A ty zarchiwizowałeś to TARem jeszcze raz i dopiero wynik skompresowałeś.
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy

bomber4

  • Gość
Kompresja bz2 i gz przez tar
« Odpowiedź #5 dnia: 2014-02-04, 13:02:50 »
No to jeszcze ostatnie pytanie. Jak mam "Utworzyć skompresowane archiwum o nazwie testowe.tar.bz2 zawierające katalog testowy/"?

darkdancer

  • Gość
Kompresja bz2 i gz przez tar
« Odpowiedź #6 dnia: 2014-02-04, 14:52:24 »
Cytat: bomber4
No to jeszcze ostatnie pytanie. Jak mam "Utworzyć skompresowane archiwum o nazwie testowe.tar.bz2 zawierające katalog testowy/"?
To chyba powinno być pierwsze pytanie skoro mimo wszystkich tych tłumaczeń ciągle nie wiesz co robisz...