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.
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?
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 byś to zrobił, gdybyś wykonywał archiwizowanie i kompresowanie osobno, byłby następujący:
tar cf blah.tar files ...
To skutkowałoby
bla.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 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 pliku
bla.tar
na dysku i powtarzaj, aż wszystkie skompresowane dane zostaną odczytane.- Odłącz (usuń) plik
blah.tar.gz
.Teraz masz
bla.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 danych
bla.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 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ędzierura dane, w pamięci, 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
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 opcji
Xz
sprężarka do hermetyzacjismoła
i 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.