Zwykle zakładałem, że tar
to narzędzie do kompresji, ale nie jestem pewien, czy faktycznie kompresuje pliki, czy jest to po prostu plik ISO, plik do przechowywania plików?
Komentarze
- Również w SuperUser .
Odpowiedź
Tar to narzędzie do archiwizacji (Tape ARchive), to gromadzi tylko pliki i ich metadane razem i tworzy jeden plik. Jeśli chcesz później skompresować ten plik, możesz użyć gzip / bzip2 / xz. Dla wygody tar dostarcza argumenty do automatycznej kompresji archiwum. Sprawdź stronę podręcznika tar , aby uzyskać więcej informacji.
Komentarze
- Drobne wyjaśnienie odpowiedzi. To GNU tar dostarcza dodatkowe argumenty kompresji. Na przykład, Solaris tar nie dostarcza argumentów do kompresji.
- oooh, że ' jest powodem, dla którego ciągle widzę
thing.tar.7z
- BSD tar również dostarcza argumentu za kompresją, chociaż akceptuje tylko
z
i określa metodę kompresji w oparciu o rozszerzenie, podczas gdy GNU tar ma oddzielnezZjJ
argumenty dla różnych metod kompresji. - Po prostu przeczytaj stronę podręcznika tar BSD i okazuje się, że się pomyliłem, tar BSD używa oddzielnego
zZjJ
do kompresji tak jak GNU tar. Jednak automatycznie wykrywa kompresję podczas dekompresji, podczas gdy GNU tar oczekujezZjJ
także wtedy. - @wingedsubmariner: no; nowoczesne wersje GNU
tar
dekompresują się automatycznie bez konieczności stosowania opcji-zZjJ
.
Odpowiedź
tar
tworzy archiwa; kompresja to osobna funkcja. Jednak sam tar
może zmniejszyć zużycie miejsca, gdy jest używany do dużej liczby małych plików, które są mniejsze niż rozmiar klastra systemu plików. Jeśli system plików zajmuje 1 KB klastry, nawet plik zawierający jeden bajt zajmie 1kb (plus i-węzeł). Archiwum tar
nie ma tego narzutu.
Przy okazji, ISO plik nie jest tak naprawdę „plikiem do przechowywania plików” – jest w rzeczywistości obrazem całego systemu plików (takiego, który został pierwotnie zaprojektowany do użytku na płytach CD), a zatem jego struktura jest znacznie bardziej złożona.
Komentarze
- W rzeczywistości pusty plik nie zajmie 1kb. Plik 1-1023 bajtów będzie.
- @psusi, więc dla pliku o rozmiarze 1-1023 zawsze zajmie 1024, co skutkuje marnotrawstwem 1023-1 bajtów.
Odpowiedź
Oryginalne polecenie tar systemu UNIX nie kompresowało archiwów. Jak wspomniano w komentarzu, tar Solaris nie kompresuje. HP-UX, ani AIX, FWIW. Zgodnie z konwencją nieskompresowane archiwa kończą się na .tar
.
Z GNU / Linuksem otrzymujesz GNU tar. (Możesz zainstalować GNU tar w innych systemach UNIX.) Domyślnie nie kompresuje; jednakże kompresuje powstałe archiwum za pomocą gzip (także przez GNU), jeśli podasz -z
. Konwencjonalny przyrostek dla plików spakowanych gzipem to .gz
, więc „będziesz często widzieć tarballe (slang dla tar archiwum, co zwykle oznacza, że zostało skompresowane), które kończą się na .tar.gz
. To zakończenie oznacza, że został uruchomiony tar, a następnie gzip, np. tar cf - .|gzip -9v > archive.tar.gz
. Znajdziesz także archiwa kończące się na .tgz
, np. tar czf archive.tgz .
.
Edytuj: www.linfo.org/tar.html przypomniał mi, że GNU tar obsługuje znacznie więcej funkcji niż zwykłe kompresowanie za pomocą gzip i przypomniało mi, że przyrostki to coś więcej niż zwykłe konwencje. Mają wbudowaną semantykę. Obsługuje również bzip2 (-j
dla .bz2
) i stary kompres (-Z
dla .Z
). Potem przejrzałem stronę podręcznika i przypomniano mi, że -a
automatycznie mapuje twoją pożądaną metodę kompresji na podstawie przyrostka.
Jeszcze jedna nitka. Jak mówi strona man Linux tar, GNU tworzy strony informacyjne, a nie strony man, więc aby dowiedzieć się wszystkiego o GNU tar, uruchom info tar
.
Komentarze
- Tar GNU nadal nie ' sam obsługuje kompresję, po prostu potokuje do / z gzip, bzip2, compress i innych.
- Przyjrzałem się źródłu . GNU tar obsługuje kompresję! Implementacja korzysta z ponownego wykorzystania kodu i solidnych zasad architektury przestrzeni użytkownika systemu UNIX. " Tylko potoki " zaniżają sposób, w jaki kompresja jest ściśle zintegrowana z narzędziem.Fakt, że zdarza się to w programach pomocniczych fork, jest kwestią techniczną. Jeśli chcesz chronić " tylko potoki, " zacytuj nazwy plików i numery wierszy i pozwól ' widzi, po której stronie stoi społeczność.
- Może minąć kilka dni, zanim będę mógł sprawdzić to źródło.
Odpowiedź
narzędzie tar nie kompresuje, dopóki nie podasz odpowiedniego argumentu [nazwa pliku tar -z].