If-Koubou

Jaka jest dziś korzyść z używania formatu pliku Tar?

Jaka jest dziś korzyść z używania formatu pliku Tar? (Jak)


Format archiwizacji tar jest w czasach obliczeniowych prawdziwym Metuselahem, ale wciąż jest intensywnie wykorzystywany dzisiaj. Co sprawia, że ​​format tara jest tak użyteczny długo po jego powstaniu?

Dzisiejsza sesja pytań i odpowiedzi przychodzi do nas dzięki uprzejmości SuperUser - poddziału Stack Exchange, społecznościowego forum z pytaniami i odpowiedziami.

Pytanie

Czytnik SuperUser MarcusJ jest ciekawy formatu tar i dlaczego używamy go po tylu latach:

Wiem, że tar został stworzony do archiwizacji taśm w ciągu dnia, ale dziś mamy formaty plików archiwalnych, które zarówno agregują pliki, jak i kompresują w tym samym formacie pliku logicznego.

Pytania:

  • Czy podczas etapów agregacji / kompresji / dekompresji jest stosowana kara za wydajność w przypadku użycia pakietu zamkniętego w gzip lub bzip2, w porównaniu z użyciem formatu pliku, który agreguje i kompresuje w tej samej strukturze danych? Załóżmy, że czas pracy porównywalnej kompresora jest identyczny (np. Gzip i Deflate są podobne).
  • Czy istnieją funkcje formatu pliku tar, którego nie mają inne formaty plików, takie jak .7z i .zip?
  • Ponieważ tar jest tak starym formatem plików, a nowsze formaty plików istnieją już dzisiaj, dlaczego tar (czy to w gzipie, bzip2, czy nawet w nowym xz) jest tak powszechnie używany dzisiaj na GNU / Linux, Android, BSD i innych takich UNIX systemy operacyjne, do przesyłania plików, źródła programów i plików binarnych, a czasem nawet jako format menedżera pakietów?

To zupełnie rozsądne pytanie; tak wiele zmieniło się w świecie komputerów w ciągu ostatnich trzydziestu lat, ale wciąż używamy formatu tar. Jaka jest historia?

Odpowiedź

Uczestnik SuperUser Allquixotic oferuje wgląd w długowieczność i funkcjonalność formatu tar:

Część 1: Wydajność

Oto porównanie dwóch oddzielnych przepływów pracy i ich działań.

Masz plik na dyskublah.tar.gz czyli 1 GB danych skompresowanych gzipem, które po nieskompresowaniu zajmują 2 GB (czyli współczynnik kompresji 50%).

Sposób, w jaki byś to zrobił, gdybyś wykonywał archiwizowanie i kompresowanie osobno, byłby następujący:

tar cf blah.tar files ... 

To skutkowałobybla.tar który jest zwykłą agregacjąpliki… w nieskompresowanej formie.

Wtedy byś zrobił

gzip blah.tar 

To odczytałoby zawartośćbla.tar z dysku, skompresuj je za pomocą algorytmu kompresji gzip, zapisz zawartość nablah.tar.gz, a następnie odłącz (usuń) plikbla.tar.

Teraz, rozpakujmy!

Droga 1

Ty maszblah.tar.gz, tak, czy inaczej.

Decydujesz się uruchomić:

gunzip blah.tar.gz 

To będzie

  • PRZECZYTAJ zawartość skompresowanych danych 1 GBblah.tar.gz.
  • PRZETWARZANIE skompresowanych danych poprzezgzip dekompresor w pamięci.
  • Gdy bufor pamięci zapełni się wartością "bloku", WRITE spakuj dane do plikubla.tar na dysku i powtarzaj, aż wszystkie skompresowane dane zostaną odczytane.
  • Odłącz (usuń) plikblah.tar.gz.

Teraz maszbla.tar na dysku, który jest nieskompresowany, ale zawiera jeden lub więcej plików w nim, z bardzo niskim obciążeniem strukturą danych. Prawdopodobnie rozmiar plikukilka bajtów większa niż suma wszystkich danych pliku.

Uciekasz:

tar xvf blah.tar 

To będzie

  • PRZECZYTAJ 2 GB nieskompresowanej zawartości danychbla.tar ismoła struktury danych formatu pliku, w tym informacje o uprawnieniach do plików, nazwach plików, katalogach itp.
  • NAPISZ na dysku 2 GB danych plus metadane. Obejmuje to: tłumaczenie informacji o strukturze danych / metadanych w celu tworzenia nowych plików i katalogów na dysku, lub przepisanie istniejących plików i katalogów z nową zawartością danych.

Łączna ilość danychCZYTAĆ z dysku w tym procesie było 1 GB (dla gunzip) + 2 GB (dla tar) = 3 GB.

Łączna ilość danychWROTE na dysku w tym procesie było 2 GB (dla gunzip) + 2 GB (dla tar) + kilka bajtów dla metadanych = około 4 GB.

Way 2

Ty maszblah.tar.gz, tak, czy inaczej.

Decydujesz się uruchomić:

tar xvzf blah.tar.gz 

To będzie

  • PRZECZYTAJ zawartość skompresowanych danych 1 GBblah.tar.gz, blok na raz, do pamięci.
  • PRZETWARZANIE skompresowanych danych poprzezgzip dekompresor w pamięci.
  • Gdy bufor pamięci zapełni się, będzierura dane, w pamięci, dosmoła analizator składni plików, który odczyta informacje o metadanych itp. oraz nieskompresowane dane pliku.
  • Ponieważ bufor pamięci zapełnia się wsmoła parsera plików, rozkaże nieskompresowane dane na dysk, tworząc pliki i katalogi i wypełniając je nieskompresowaną zawartością.

Łączna ilość danychCZYTAĆ z dysku w tym procesie było 1 GB skompresowanych danych, kropka.

Łączna ilość danychWROTE na dysk w tym procesie było 2 GB nieskompresowanych danych + kilka bajtów dla metadanych = około 2 GB.

Jeśli zauważysz, ilość we / wy dysku wWay 2 jestidentyczny na dysk I / O wykonane przez, powiedzmy,Zamek błyskawiczny lub7-Zip programy, dostosowując się do wszelkich różnic w współczynniku kompresji.

A jeśli chodzi o stopień kompresji, użyj opcjiXz sprężarka do hermetyzacjismołai masz archiwum TAR LZMA2, które jest tak samo wydajne jak najbardziej zaawansowany algorytm dostępny7-Zip :-)

Część 2: Funkcje

smoła przechowuje uprawnienia UNIX w swoich metadanych plików i jest bardzo dobrze znany i przetestowany pod kątem pomyślnego upakowania katalogu z różnymi rodzajami różnych uprawnień, dowiązań symbolicznych itp.Jest więcej niż kilka przypadków, w których trzeba by zgrupować kilka plików w jednym pliku lub strumieniu, ale niekoniecznie go skompresować (chociaż kompresja jest przydatna i często używana).

Część 3: Zgodność

Wiele narzędzi jest rozprowadzanych w źródłowej lub binarnej formie, takich jak .tar.gz lub .tar.bz2, ponieważ jest to format plików "najniższy wspólny mianownik": podobnie jak większość użytkowników systemu Windows ma dostęp do dekompresorów .zip lub .rar, większość instalacji Linuksa, nawet najbardziej podstawowy, będzie miał dostęp do przynajmniej smoły i gunzipów, bez względu na to, ile mają lat, czy zmniejszono. Nawet oprogramowanie układowe Androida ma dostęp do tych narzędzi.

Nowe projekty kierowane na odbiorców z nowoczesnymi dystrybucjami mogą bardzo dobrze dystrybuować w bardziej nowoczesnym formacie, takim jak .tar.xz (przy użyciu formatu kompresji Xz (LZMA), który kompresuje lepiej niż gzip lub bzip2), lub .7z, który jest podobny do formatów plików Zip lub Rar, ponieważ kompresuje i określa układ enkapsulacji wielu plików w jeden plik.

Nie widzisz .7z częściej używanych z tego samego powodu, dla którego muzyka nie jest sprzedawana z internetowych sklepów z plikami do pobrania w zupełnie nowych formatach, takich jak Opus, lub wideo w WebM. Zgodność z osobami używającymi systemów starożytnych lub bardzo podstawowych.

Czy masz coś do dodania do wyjaśnienia? Dźwięk w komentarzach. Chcesz przeczytać więcej odpowiedzi od innych użytkowników Stack Exchange, którzy znają się na technologii? Sprawdź cały wątek dyskusji tutaj.