Jaka jest różnica między .tar.gz i .gz, lub .tar.7z i .7z?


158

Ostatnio tworzyłem kopie zapasowe wielu moich danych i zauważyłem, że mogę zapisać pliki jako .gzlub .tar.gz, .7zi .tar.7z, itp. Jakie są różnice między normalnym a .tar.*wariantem? Który z nich jest zalecany przy tworzeniu kopii zapasowych?

Odpowiedzi:


183

Jeśli pochodzisz z systemu Windows, możesz znać formaty zip i rar. Są to archiwa wielu plików skompresowanych razem.

W systemach Unix i systemach uniksopodobnych (takich jak Ubuntu) archiwizacja i kompresja są osobne.

tar umieszcza wiele plików w jednym pliku (tar).

gzip kompresuje jeden plik (tylko).

Aby uzyskać skompresowane archiwum, należy połączyć oba, najpierw użyć tarlub, paxaby zebrać wszystkie pliki w jeden plik (archive.tar), a następnie gzip(Archive.tar.gz). Jeśli masz tylko jeden plik do skompresowania (notes.txt), nie potrzebujesz tar, więc po prostu zrób to, gzip notes.txtco spowoduje notes.txt.gz. Istnieją inne rodzaje ucisku, takie jak compress, bzip2i xzktóre działają w taki sam sposób, jak gzip (poza wykorzystaniem różnych rodzajów kompresji oczywiście)


6
To ma sens, ale dlaczego mogę tworzyć .7zarchiwum z wielu plików, a .tar.7zarchiwum z wielu plików?
Przyspieszenie-G

3
@ Exeleration-G 7zip nie przestrzega tego schematu. To bardziej jak zip i rar. Nie jestem pewien, po co używać tar w połączeniu z 7zip, ponieważ sam nie używałem 7zip.
geirha

42
@ Exeleration-G Po przeczytaniu innych odpowiedzi widzę, że SaultDon odpowiada na to; 7zip nie przechowuje własności uniksowej i uprawnień do zarchiwizowanych plików (wydaje się, że jest głównie ukierunkowany na Windows, taki jak zip i rar), więc warto połączyć go z tar, aby uzyskać własność i uprawnienia.
geirha

@geirha Oznacz pytanie jako rozwiązane, jeśli znajdziesz odpowiednią odpowiedź.
Ravi

1
Z mojego doświadczenia wynika, że ​​7z jest znacznie lepszy w kompresji niż zip. Kiedy testowałem, zaoszczędziło mi to około 40% więcej
Eoin

49

To zależy od tego, czego szukasz ... Kompresja czy archiwizacja?

Kiedy mówię o archiwizacji, mam na myśli zachowanie uprawnień, struktury katalogów itp.

Kompresja może zignorować większość tego i po prostu umieścić pliki w mniejszych pakietach.

Aby zachować uprawnienia do plików, użyj tar:

tar cpvf backup.tar folder

Flaga p zapisze uprawnienia do plików. Użyj flagi z do kompresji gzip lub flagi j do kompresji bzip.

tar czpvf backup.tar.gz folder #backup.tgz is acceptable as well
tar cjpvf backup.tar.bz2 folder #backup.tbz2 works too

Jeśli chcesz mieć plik tar, możesz „zaktualizować” pakiet tar za pomocą flagi P:

tar cpPvf backup.tar folder

Następnie, aby zaktualizować, zamień „c” na „u”, a podczas rozpakowywania możesz użyć „k”, aby zachować pliki, które już istnieją.

tar upPvf backup.tar folder #updating a tar file
tar xpPkvf backup.tar #extracting a tar with permissions(p) and not extracting(k) files that exist on disk already

Flaga P zapisuje pliki z pełnymi ścieżkami, więc - / home / nazwa użytkownika vs home / nazwa użytkownika (zauważ wiodący ukośnik).

Kompresja 7z zapewnia lepszą kompresję, ale nie zachowuje własności plików, uprawnień itp. Rzip to kolejne narzędzie do kompresji, które oferuje również kompresję porównywalną z 7z.

Wydaje mi się, że plik backup.tar.7z jest tylko plikiem tar (z uprawnieniami) skompresowanym przez plik 7z, chociaż nie zdziwiłbym się, gdyby nastąpiła niewielka kompresja, ponieważ 7z może nie być w stanie zrzucić metadanych pliku. 7z jest w stanie wykluczyć metadane pliku, które może zaoferować doskonałą kompresję (między innymi oczywiście).

Kompresja zależy również całkowicie od typu danych. Niektóre pliki nie kompresują się dobrze, ponieważ mogą być już skompresowane w inny sposób (np. .Mp3, .jpg, .tiff / with lzma, .rpm itp.).


11

gzip lub bzip2 nie wie o file system- nazwie pliku, katalogu lub strukturze drzewa. Po prostu kompresuje strumień wejściowy, a następnie wyniki wyjściowe. Nawet gzip lub bzip2 nie mogą samodzielnie archiwizować katalogów, dlatego zwykle łączy się je z tar.

tar (archiwizator) - po prostu zarchiwizuj strukturę pliku. gzip, bzip2 (kompresor) - wystarczy skompresować wejście.

Myślę, że ta strategia wywodzi się z filozofii uniksowej „rób jedną rzecz dobrze” . Smoła działa dobrze? Pozostaw to tak, jak jest. Potrzebujesz większego stopnia kompresji niż gzip? Oto bzip2 lub 7zip.


W rzeczywistości 7zip może archiwizować jak zip lub rar.
Mait

8

różne style kompresji, sama tar jest po prostu archiwizowana (kompresja mało lub wcale). tar.gz to archiwum tar, ale zawartość jest kompresowana przez gzip (umiarkowana kompresja), dlatego pliki .gz i tar.7z są kompresowane za pomocą 7zip (zwykle bardzo wysoka kompresja)

podczas tworzenia kopii zapasowej polecam tar.7z, ponieważ ma najwyższy współczynnik kompresji, oszczędzając miejsce, ale używa dodatkowego programu (7zip). .tar.gz będą większe pliki i wykonują tę samą pracę, możesz również użyć bzip (.tar.bz / bz2), chociaż nie jestem pewien, czy bardziej by ci to odpowiadało, ponieważ używam gzip lub 7zip


4

zazwyczaj pliki * .tar to tylko pliki tar utworzone przez program tar, * .gz programy są tworzone przez gzip, * .tar.gz (kiedyś także * .tgz) to pliki tar spakowane gzip, a * .7z są tworzone przez 7zip.

Jednak w Linuksie / Uniksie i tak można nazwać plik tak, jak chce, więc to całkowicie zależy od twórcy plików.


3

Tar (Tape Archiver) był tradycyjnie używany jako kontener w systemach Unix / Linux do pakowania plików do przenoszenia. Pakowuje strukturę pliku i zachowuje atrybuty pliku, ale nie kompresuje plików.

Programy kompresujące kompresują plik, aby go zmniejszyć, ale mogą nie obsługiwać wielu plików i / lub mogą nie obsługiwać atrybutów plików niezbędnych w systemie Linux. Ponieważ tar już istnieje i jest dobrze obsługiwany, nie ma powodu, aby programy archiwizujące powielały tę funkcję, która jest specyficzna dla platformy (re, inna dla Windows i Linux). Ponadto różne programy kompresujące mogą działać różnie na różnych typach plików, dlatego pożądany jest wybór więcej niż jednego.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.