Główna » jak » Jaka jest dziś korzyść z używania formatu pliku Tar?

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


    Format archiwizacji tar jest w czasach obliczu prawdziwym Metuselahem, ale wciąż jest intensywnie wykorzystywany dzisiaj. Co sprawia, że ​​format tar 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, opartego na społecznościach grupowania witryn 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 archiwum, które łączą pliki i kompresują w tym samym logicznym formacie pliku.

    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órych nie mają inne formaty plików, takie jak .7z i .zip?
    • Ponieważ tar jest takim starym formatem plików, a nowsze formaty plików istnieją 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 czasami 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 dysku blah.tar.gz czyli 1 GB danych skompresowanych gzipem, które po nieskompresowaniu zajmują 2 GB (czyli współczynnik kompresji 50%).

    Sposób, w jaki to zrobiłbyś, gdybyś osobiście archiwizował i kompresował, byłby następujący:

    tar cf blah.tar files ... 

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

    Wtedy byś zrobił

    gzip blah.tar 

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

    Teraz rozpuśćmy się!

    Droga 1

    Ty masz blah.tar.gz, tak, czy inaczej.

    Decydujesz się uruchomić:

    gunzip blah.tar.gz 

    To będzie

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

    Teraz masz blah.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 pliku kilka bajtów większa niż suma wszystkich danych pliku.

    Biegasz:

    tar xvf blah.tar 

    To będzie

    • ODCZYTUJ 2 GB nieskompresowanej zawartości danych blah.tar i smoł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 na potrzeby 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ść danych CZYTAĆ z dysku w tym procesie było 1 GB (dla gunzip) + 2 GB (dla tar) = 3 GB.

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

    Way 2

    Ty masz blah.tar.gz, tak, czy inaczej.

    Decydujesz się uruchomić:

    tar xvzf blah.tar.gz 

    To będzie

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

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

    Łączna ilość danych WROTE 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ść dysków we / wy w Way 2 jest identyczny do dysku I / O wykonanego przez, powiedzmy, Zamek błyskawiczny lub7-Zip programy, dostosowując się do wszelkich różnic w stopniu kompresji.

    A jeśli chodzi o stopień kompresji, użyj opcji Xz sprężarka do hermetyzacji smoła, i masz archiwum TAR LZMA2, które jest tak samo wydajne jak najbardziej zaawansowany algorytm dostępny 7-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 może być konieczne przesłanie wielu plików pojedynczy plik lub strumień, ale niekoniecznie go kompresuje (chociaż kompresja jest przydatna i często używana).

    Część 3: Kompatybilność

    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 zmniejszone. Nawet oprogramowanie układowe Androida ma dostęp do tych narzędzi.

    Nowe projekty ukierunkowane 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.