Wiem, że tar
zostało to zrobione dla archiwów taśmowych w przeszłości, ale dzisiaj mamy formaty archiwów, które zarówno agregują pliki, jak i wykonują kompresję w tym samym logicznym formacie plików.
Pytania:
Czy występuje utrata wydajności podczas etapów agregacji / kompresji / dekompresji za użycie
tar
enkapsulacji wgzip
lubbzip2
, w porównaniu z użyciem formatu pliku, który agreguje i kompresuje w tej samej strukturze danych? Załóżmy, że czas działania porównywanej sprężarki jest identyczny (np. Gzip i Deflate są podobne).Czy istnieją funkcje tego
tar
formatu plików, których inne formaty plików, takie jak.7z
i.zip
nie mają?Ponieważ
tar
jest to tak stary format pliku, a nowsze formaty plików istnieją dzisiaj, dlaczegotar
(bez względu na to, czy jest on enkapsulowanygzip
,bzip2
czy nawet nowyxz
) jest nadal tak szeroko stosowany w systemach GNU / Linux, Android, BSD i innych takich systemach operacyjnych UNIX, dla plików transfery, źródła programów i pliki binarne, a czasem nawet jako format menedżera pakietów?
tar xvzf
trudniej jest7z -x
...tar xvzf
, nieskompresowane dane nie są zapisywane na dysku twardym w.tar
formacie! Masz rację, że jeśli uruchomiłeś,gunzip blah.tar.gz
a następnietar xf blah.tar
zapisałby dane dwa razy na dysku (raz jako .tar i ponownie jako pliki w systemie plików), ale tak naprawdę nikt tego nie robi. Dotar xzf
używa UNIX rurowe (w zasadzie kopia pamięci) do przesyłania danych nieskompresowanych zgzip
(lub cokolwiek) do sprężarkitar
, więc dane nie zapisane na dysku w.tar
formacie.tar
(szczególnie skompresowane) zachowuje się okropnie, jeśli chodzi o uszkodzenie danych. Małe dane nadmiarowości / odzyskiwania dodane przez nowoczesne formaty są warte złotaOdpowiedzi:
Część 1: Wydajność
Oto porównanie dwóch oddzielnych przepływów pracy i ich działań.
Na dysku
blah.tar.gz
znajduje się plik, który, powiedzmy, 1 GB danych skompresowanych gzip, który po rozpakowaniu zajmuje 2 GB (a więc współczynnik kompresji 50%).Sposób, w jaki to utworzyłbyś, gdybyś osobno archiwizował i kompresował, to:
Spowodowałoby
blah.tar
to po prostu agregacjęfiles ...
nieskompresowanej formy.Wtedy byś zrobił
Odczytuje to zawartość
blah.tar
dysku, kompresuje je za pomocą algorytmu kompresji gzip, zapisuje zawartośćblah.tar.gz
, a następnie rozłącza (usuwa) plikblah.tar
.Teraz dekompresujmy!
Sposób 1
Masz
blah.tar.gz
, tak czy inaczej.Zdecydowałeś się uruchomić:
To będzie
blah.tar.gz
.gzip
dekompresor w pamięci.blah.tar
na dysku i powtarzaj, aż wszystkie skompresowane dane zostaną odczytane.blah.tar.gz
.Teraz masz
blah.tar
na dysku, który jest nieskompresowany, ale zawiera jeden lub więcej plików, z bardzo niskim narzutem struktury danych. Rozmiar pliku jest prawdopodobnie o kilka bajtów większy niż suma wszystkich danych pliku.Biegniesz:
To będzie
blah.tar
itar
struktur danych formatu pliku, w tym informacje o uprawnieniach do plików, nazwach plików, katalogach itp.Całkowita ilość danych, które ODCZYTALIŚMY z dysku w tym procesie wyniosła 1 GB (dla gunzip) + 2 GB (dla tar) = 3 GB.
Całkowita ilość danych, które WROTE zapisaliśmy na dysk w tym procesie, wyniosła 2 GB (dla gunzip) + 2 GB (dla tar) + kilka bajtów dla metadanych = około 4 GB.
Sposób 2
Masz
blah.tar.gz
, tak czy inaczej.Zdecydowałeś się uruchomić:
To będzie
blah.tar.gz
, blok na raz.gzip
dekompresor w pamięci.tar
parsera formatu pliku, który odczyta informacje o metadanych itp. I nieskompresowanych danych pliku.tar
analizatorze plików, NAPISUJE nieskompresowane dane na dysk, tworząc pliki i katalogi i wypełniając je nieskompresowaną zawartością.Łączna ilość danych, które odczytaliśmy z dysku w tym procesie, wyniosła 1 GB skompresowanych danych, okres.
Łączna ilość danych, które WROTE zapisaliśmy na dysk w tym procesie, wyniosła 2 GB nieskompresowanych danych + kilka bajtów dla metadanych = około 2 GB.
Jeśli zauważysz, ilość dyskowych I / O w Way 2 jest identyczna z dyskowymi I / O wykonywanymi przez, powiedzmy, programy
Zip
lub 7-Zip , dostosowując się do wszelkich różnic w stopniu kompresji.A jeśli Twoim problemem jest współczynnik kompresji, użyj
Xz
kompresora do enkapsulacjitar
, a masz archiwum TAR LZMA2 , które jest tak samo wydajne, jak najbardziej zaawansowany algorytm dostępny dla 7-Zip :-)Część 2: Funkcje
tar
przechowuje uprawnienia uniksowe w obrębie metadanych plików i jest bardzo dobrze znany i przetestowany pod kątem skutecznego pakowania katalogu z różnego rodzaju uprawnieniami, symbolicznymi linkami itp. Istnieje więcej niż kilka przypadków, w których można potrzebować spakować kilka plików do jednego pliku lub strumienia, ale niekoniecznie kompresuj go (chociaż kompresja jest przydatna i często używana).Część 3: Kompatybilność
Wiele narzędzi jest rozpowszechnianych w formie źródłowej lub binarnej jako .tar.gz lub .tar.bz2, ponieważ jest to format pliku „najniższego wspólnego mianownika”: 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 co najmniej tar i gunzip, bez względu na to, ile ma lat lub jest zredukowany. Nawet oprogramowanie układowe na Androida ma dostęp do tych narzędzi.
Nowe projekty skierowane do odbiorców korzystających z nowoczesnych dystrybucji mogą bardzo dobrze rozpowszechniać 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 formaty plików ZIP lub RAR , ponieważ zarówno kompresuje, jak i określa układ kapsułkowania wielu plików w jednym pliku.
Nie widać częstszego używania .7z z tego samego powodu, dla którego muzyka nie jest sprzedawana w internetowych sklepach z plikami do pobrania w nowych formatach, takich jak Opus , lub wideo w WebM . Kompatybilność z osobami korzystającymi ze starożytnych lub bardzo podstawowych systemów.
źródło
tar
pasuje do ekosystemu archiwizacji (tj. Do agregowania plików razem, zapewniając wzrost wydajności i inne korzyści, takie jak oszczędzanie uprawnień), ale nie odnosi się do tego, dlaczego nowoczesne alternatywy, takie jakdar
te, nie są stosowane. Innymi słowy, ta odpowiedź uzasadnia użycie agregatorów plików, ale nie samegotar
oprogramowania.To zostało odebrane na przepełnienie stosu .
Wiele narzędzi jest rozpowszechnianych w formie źródłowej lub binarnej jako .tar.gz lub .tar.bz2, ponieważ jest to format pliku „najniższego wspólnego mianownika”: podobnie jak większość użytkowników systemu Windows ma dostęp do dekompresorów .zip lub .rar, większość instalacji Linuksa , nawet te najbardziej podstawowe, będą miały dostęp do co najmniej
tar
igunzip
bez względu na to, ile mają lat lub są zmniejszone. Nawet oprogramowanie układowe na Androida ma dostęp do tych narzędzi.Nowe projekty skierowane do odbiorców korzystających z nowoczesnych dystrybucji 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 ZIP lub RAR formaty plików, ponieważ zarówno kompresuje, jak i określa układ kapsułkowania wielu plików w jednym pliku.Nie widać częstszego używania .7z z tego samego powodu, dla którego muzyka nie jest sprzedawana w internetowych sklepach z plikami do pobrania w nowych formatach, takich jak Opus , lub wideo w WebM . Ważna jest zgodność z osobami korzystającymi ze starożytnych lub bardzo podstawowych systemów.
źródło
tar.Z
(kompresuj / dekompresuj). Postęp narzędzi był ciągłym strumieniem (bez zamierzonej gry słów) zmian i ulepszeń: Z => zip => gz => bz2 => 7z => xz (lub w dowolnej innej kolejności). Jeśli chodzi o rolę tar, niektóre narzędzia tylko wyłączają / kompresują i nadal wymagają tar do spakowania hierarchii plików.Tar ma bogaty zestaw operacji i modyfikatorów, które wiedzą wszystko o systemach plików Unix. Wie o uprawnieniach Unixa, różnych czasach związanych z plikami, o twardych dowiązaniach, o softlinkach (oraz o możliwości, że dowiązania symboliczne mogą wprowadzać cykle na grafie systemu plików) i pozwala określić kilka różnych sposobów zarządzania wszystkimi tymi danymi .
Czy chcesz, aby wyodrębnione dane zachowały czasy dostępu do plików? Tar może to zrobić. Aby zachować uprawnienia? Tar może to zrobić.
Czy chcesz zachować dowiązania symboliczne jako dowiązania symboliczne? Tar domyślnie to robi. Chcesz zamiast tego skopiować cel? Tar może to zrobić.
Czy chcesz mieć pewność, że dane z dowiązaniami są przechowywane tylko raz (to znaczy, aby zrobić to dobrze)? Tar to robi.
Czy chcesz dobrze obsługiwać rzadkie pliki? Tar może to zrobić.
Czy chcesz nieskompresowane dane (dlaczego?)? Tar może to zrobić. Aby skompresować za pomocą gzip? Tar może to zrobić. Z bzip2? Tar może to zrobić. Z dowolnymi zewnętrznymi programami kompresji? Tar może to zrobić.
Czy chcesz pisać lub odzyskiwać dane na surowym urządzeniu? Format Tar dobrze sobie z tym radzi.
Czy chcesz dodać pliki do istniejącego archiwum? Tar może to zrobić. Aby różnicować dwa archiwum, aby zobaczyć, co się zmieniło? Tar może to zrobić. Aby zaktualizować tylko te części archiwum, które uległy zmianie? Tar może to zrobić.
Czy chcesz mieć pewność, że nie archiwizujesz w więcej niż jednym systemie plików? Tar może to zrobić.
Czy chcesz pobierać tylko pliki nowsze niż ostatnia kopia zapasowa? Tar może to zrobić.
Czy chcesz zachować nazwy lub numery użytkowników i grup? Tar może zrobić jedno z nich.
Czy musisz zachować węzły urządzeń (takie jak pliki w
/dev
), aby po rozpakowaniu system działał poprawnie? Tar może to zrobić.Tar od dziesięcioleci ewoluuje, aby obsługiwać wiele przypadków użycia i naprawdę dużo wie o tym, co ludzie chcą robić z systemami plików Unix.
źródło
f -
i potokował go do kompresora.tar
Bardzo często używam do kopiowania drzewa systemu plików z jednego miejsca do drugiego i zachowania uprawnień itp., A kompresja w tym przypadku zajmuje tylko dodatkowe cykle procesora. Nptar cf - * | tar xf - -C /somewhere
.Mylisz dwa odrębne procesy archiwizacji i kompresji .
Powody korzystania z archiwizatora
Jednym z powodów korzystania z archiwizacji bez kompresji jest na przykład skopiowanie kilku plików z jednego hosta na drugi. Polecenie podobne do następującego
może znacznie przyspieszyć. Jeśli wiem, że plików nie można skompresować lub jeśli SSH jest skonfigurowany z kompresją, może zaoszczędzić sporo czasu procesora. Jasne, można użyć bardziej nowoczesnego narzędzia do kompresji z funkcją archiwizacji i wyłączyć kompresję. Zaletą
tar
jest to, że mogę oczekiwać, że będzie dostępny w każdym systemie.Powody używania archiwizatora z kompresją gzip
Jednym z powodów, że mogę korzystać
tar
zgzip
to: prędkość! Jeśli chcę przenieść kilka GiB plików tekstowych z jednego miejsca do drugiego, nie obchodzi mnie wyciskanie ostatnich bajtów, ponieważ kompresja jest używana tylko do przesyłania, a nie do przechowywania długoterminowego. W tych przypadkach używamgzip
, co nie maksymalizuje procesora (na przykład w przeciwieństwie do 7-Zip ), co oznacza, że jestem ponownie związany we / wy, a nie związany z procesorem. I znowu:gzip
można uznać, że jest dostępny wszędzie.Powody korzystania
tar
na korzyśćscp
,rsync
itpTo bije,
scp
jeśli masz dużo małych plików do skopiowania (na przykład katalogi poczty ze setkami tysięcy plików).rsync
, choć jest niesamowite, może nie być dostępne wszędzie. Co więcej,rsync
naprawdę się opłaca tylko wtedy, gdy część plików - lub starsza wersja - jest już obecna w miejscu docelowym. Początkowa kopiatar
jest najszybsza, z kompresją lub bez, w zależności od rzeczywistych danych.źródło
tar cf - . | (cd ~/somewhere; tar xvf -)
. Naprawdę przydaje się nie czekać na zapisanie indeksu centralnego (jak na przykład w pliku zip).Dodając do innych dobrych odpowiedzi tutaj, wolę kombinację
tar
+gzip|bzip2|xz
głównie dlatego, że te skompresowane pliki są jak strumienie i można je łatwo potokować.Muszę rozpakować plik dostępny w Internecie. Albo
zip
czyrar
formatów muszę go pobrać, a następnie rozpakować go. Dziękitar.{gz,bz2,xz}
mogę pobierać i rozpakowywać w tym samym kroku, bez konieczności fizycznego przechowywania skompresowanego archiwum na dysku:Spowoduje to pozostawienie nieskompresowanych plików na moim dysku i przyspieszy cały proces, ponieważ nie czekam na pobranie pierwszego pliku, a po zakończeniu pobierania rozpakuję go. Zamiast tego rozpakowuję go podczas pobierania. Nie możesz tego zrobić za pomocą
zip
lubrar
plików.źródło
funzip
po prostu wypakowuje pierwszy plik z pliku zip, nie wszystkie.tar zc /some/folder | ssh user@host "cd /other/folder && tar zx"
Istnieje kilka powodów, aby trzymać się Tar (GNU).
To jest:
Jeśli twoja wołowina polega na „dekompresji” tarballa przed przeczytaniem zawartości, prawdopodobnie masz rację. WinRAR i 7-Zip robią to automatycznie. Istnieją jednak proste obejścia tego problemu, takie jak dokumentowanie zawartości archiwum w nieskompresowanej formie.
źródło
Formaty plików, takie jak .zip, wymagają, aby oprogramowanie najpierw odczytało koniec pliku, aby odczytać katalog nazw plików. I odwrotnie, tar przechowuje te informacje w skompresowanym strumieniu.
Zaletą metody tar jest to, że można dekompresować dane podczas odczytywania ich z niewidocznego potoku, takiego jak gniazdo sieciowe.
Zaletą metody zip jest to, że w przypadku pliku statycznego na dysku można przeglądać zawartość i metadane bez wcześniejszej dekompresji całego archiwum.
Oba mają swoje zastosowania, w zależności od tego, co robisz.
źródło
Wydaje się, że istnieje pewna niechęć do bezpośredniej odpowiedzi na wszystkie pytania, z widoczną preferencją wykorzystania pytania jako punktu wyjścia do pontyfikacji. Więc dam temu szansę.
Nie. W rzeczywistości, ponieważ tar i gzip są zwykle dwoma procesami, zyskujesz nawet odrobinę wielordzeniowej korzyści prędkości, której nie zapewnia archiwizator taki jak zip Info-ZIP. Pod względem współczynnika kompresji tar + gzip zwykle robi zauważalnie lepiej niż zip z deflate, ponieważ ten pierwszy może skorzystać z korelacji między plikami, podczas gdy drugi kompresuje pliki osobno. Ta korzyść z kompresji przekłada się na przyspieszenie podczas wyodrębniania, ponieważ bardziej skompresowane archiwum rozpakowuje się w krótszym czasie.
Tak, tar został zaprojektowany dla Uniksa i ewoluował przez lata, aby móc dokładnie rejestrować i przywracać każdy dziwny zakątek systemów plików Unix, nawet bardziej skomplikowany system plików Mac OS X Unix. zip jest w stanie zachować wiele metadanych, takich jak uprawnienia, czasy, właściciele, grupy i linki symboliczne, ale nadal nie wszystko. Jako przykład, ani zip, ani 7z nie mogą rozpoznać lub skorzystać z rzadkich plików, ani nie są świadomi ani nie mogą przywracać twardych łączy.
Tutaj jest wiele innych dobrych odpowiedzi. Najlepsze jest to, że po prostu działa i możesz aktualizować go do lepszych formatów kompresji (np. Xz) i nadal używać tego samego formatu tar, a nawet tego samego skompilowanego narzędzia tar. Jeśli chcesz po prostu spakować kilka rzeczy, a następnie rozpakować wszystko z drugiej strony, to nie ma powodu, aby używać czegokolwiek poza jednym z najstarszych, najbardziej kompletnych i najczęściej debugowanych programów.
Jeśli chcesz dostępu losowego, częściowych aktualizacji lub innych rzeczy, które muszą poradzić sobie z zawartością fragmentarycznie, lub chcesz móc dowiedzieć się, co się w niej znajduje bez przeczytania całości, to możesz użyć innego formatu.
źródło
Występ
Duża różnica polega na tym, że kolejność kompresji i archiwizacji jest wykonywana w.
tar
Archiwa, a następnie może opcjonalnie wysłać archiwum do kompresora,zip
buduje archiwum i kompresuje dane pliku we fragmentach o wielkości 32 KB podczas wstawiania do archiwum. Dzieląc dane pliku na małe fragmenty i kompresując je osobno, pozwala on wyodrębnić określone pliki lub części plików bez konieczności rozpakowywania wszystkiego w archiwum przed nim. Zapobiega również tworzeniu przez kompresor bardzo dużego słownika przed jego ponownym uruchomieniem. Oznacza to, że kompresja przebiega szybciej, ale nie daje tak dobrego współczynnika, jak kompresja całego pliku przy użyciu większego rozmiaru słownika.Można to wyobrazić, myśląc o dwóch plikach, w których pierwsze 500 bajtów drugiego pliku jest takich samych, jak ostatnich 500 bajtów pierwszego pliku. Dzięki tej
zip
metodzie kompresor jest uruchamiany ponownie dla drugiego pliku, więc nie pamięta, że pierwszy plik zakończył się tymi samymi danymi, więc nie może usunąć duplikatów danych z drugiego pliku.Popularność
Istnieje wiele innych formatów, które mają wiele zalet
tar
. 7-Zip nie przechowuje uprawnień do plików uniksowych, aledar
robi izip
może, a wszystkie trzy przechowują indeks, który pozwala na szybkie przeglądanie, ekstrakcję podzbioru plików i aktualizację plików w archiwum. Mogą także używać do kompresji wielordzeniowych procesorów.Powodem, dla którego wszyscy nadal korzystają,
tar
jest ten sam powód, dla którego wszyscy nadal korzystają z systemu Windows i Flash : ludzie nie lubią zmian. Bez wyraźnego powodu do zmiany ludzie trzymają się tego, co wiedzą.dar
nie zapewnia wystarczającej korzyści, aby uzasadnić publikowanie plików w formacie, gdy większość ludzi jużtar
zainstalowała, a niewielu wie o tymdar
, więc prosta bezwładność utrzymuje nas na starym standardzie.źródło
Tar został stworzony do tworzenia pełnych kopii zapasowych systemu plików, a nie tylko do przesyłania plików. Jako takie, narzędzie tar jest najbardziej kompletnym narzędziem do tworzenia archiwum, które zachowuje wszystko, co ważne w strukturze systemu plików.
Dotyczy to wszystkich tych funkcji, których brakuje w jednym lub kilku konkurencyjnych narzędziach:
Posiada również
--one-file-system
opcję, która jest niezwykle przydatna podczas tworzenia kopii zapasowych.Za każdym razem, gdy nowa funkcja jest dodawana do systemu plików, obsługa jest dodawana jako
tar
pierwsza (lub nawet wyłącznie). Jest to więc nadal najbardziej zgodny sposób zapisywania plików.źródło
Mamy dzisiaj wiele skompresowanych plików, MP3, JPG, wideo, pliki tar.gz, pakiety JAR, RPM, DEB i tak dalej. Jeśli chcesz spakować kilka z nich w jeden plik do przesłania, warto mieć narzędzie „tar”, które pakuje tylko pliki bez próby ich skompresowania.
Próba kompresji skompresowanego pliku nie tylko marnuje czas i energię elektryczną, ale często powoduje, że plik jest większy niż oryginał.
Innym zastosowaniem jest poprawa współczynników kompresji. Na przykład, jeśli „tarujesz” pakiet plików dziennika, a następnie gzipujesz wynik, prawdopodobnie znajdziesz mniejszy plik niż po skompresowaniu, a następnie w pakiecie z „tar”. I oczywiście, używając tar, możesz wybrać dowolny algorytm kompresji i określić opcje optymalizacji kompresji dla konkretnego przypadku użycia.
Uważam, że smoła jest dziś bardzo istotna i wolę używać ZIP. W naszym biurze każdy z Windows ma zainstalowany 7-zip, więc dla nas pliki tar są w pełni kompatybilne z wieloma platformami.
źródło
tar
plików i jest ku temu powód.tar
używa bardzo dużych fragmentów, co oznacza, że na końcu plików jest dużo wypełnienia. Aby pozbyć się tych zer, prawie zawsze opłaca się je używaćgzip
bez zastanowienia się.Być może powinniśmy się zastanawiać, dlaczego takie „nowe” formaty plików, wykonujące zarówno kompresję, jak i agregację (i dodałbym szyfrowanie), nie były od samego początku budowane na tar zamiast zupełnie innych narzędzi.
Rozumiem, że istnieją przyczyny historyczne (związane z historią systemu operacyjnego, „ochroną” patentów, możliwością sprzedaży narzędzi przez sprzedawców oprogramowania itp.).
Teraz, jak wskazała inna odpowiedź, nawet teraz tar nie jest wyraźnie gorszy od innych rozwiązań i może być lepszy w innych aspektach, takich jak zdolność do pracy ze strumieniami lub zarządzanie prawami Unix.
Jeśli czytasz artykuł w Wikipedii o tar , możesz zobaczyć kolejny interesujący fakt. Artykuł potwierdza pewne niedociągnięcia tar ... ale nie sugeruje używania zip zamiast tego (naprawdę format zip nie rozwiązuje tych niedociągnięć), ale DAR.
Zakończę osobistym akcentem. Kilka razy temu musiałem utworzyć format pliku do przechowywania zaszyfrowanych danych. Przydało się użycie tar jako podstawy (inni dokonali tego samego wyboru, na przykład tar jest wewnętrznym formatem agregacji pakietów .deb). Było dla mnie oczywiste, że próba kompresji danych po szyfrowaniu była całkowicie bezużyteczna, musiałem wykonać kompresję jako niezależny krok przed szyfrowaniem i nie byłem gotowy na użycie szyfrowania zip (chciałem szyfrowania dwoma kluczami za pomocą klucza publicznego i prywatnego) . Używając smoły działało to jak wiatr.
źródło
Dziwię się, że nikt o tym nie wspominał, ale jednym z powodów - nie tak naprawdę zaletą, ale koniecznością - jest zgodność wsteczna. Od dziesięcioleci istnieje wiele systemów z oprogramowaniem, które mogą wymagać
tar
archiwizacji. Zatrudnianie kogoś do „naprawy” wszystkich starych systemów nie jest opłacalne.źródło
tar to UNIX, ponieważ UNIX to tar
Moim zdaniem powodem tego, że wciąż go używam,
tar
jest to, że jest to jeden z (prawdopodobnie rzadkich) przypadków, w których podejście UNIX od samego początku idealnie go tworzyło.Przyglądając się bliżej etapom tworzenia archiwów, mam nadzieję, że zgodzisz się, że sposób, w jaki zachodzi tutaj rozdział różnych zadań, jest filozofią UNIX w najlepszym wydaniu:
jedno narzędzie (
tar
aby nadać mu nazwę tutaj) specjalizujące się w przekształcaniu dowolnego wyboru plików, katalogów i dowiązań symbolicznych, w tym wszystkich istotnych metadanych, takich jak znaczniki czasu, właściciele i uprawnienia w jeden bajt.i jeszcze jedno dowolnie wymienialne narzędzie (
gzip
bz2
xz
żeby wymienić tylko kilka opcji), które przekształca dowolny wejściowy strumień bajtów w inny (miejmy nadzieję) mniejszy strumień wyjściowy.Takie podejście zapewnia szereg korzyści zarówno dla użytkownika, jak i dla programisty:
rozszerzalność Umożliwienie połączenia
tar
z dowolnym algorytmem kompresji już istniejącym lub dowolnym algorytmem kompresji jeszcze wymagającym opracowania, bez konieczności zmiany czegokolwiek w wewnętrznych działaniachtar
.Jak tylko pojawi się zupełnie nowe narzędzie do kompresji „hyper-zip-utra” lub Whater, jesteś już gotowy do użycia, obejmując swojego nowego sługę całą mocą
tar
.stabilność
tar
jest intensywnie używana od wczesnych lat 80. przetestowana i uruchomiona na wielu systemach operacyjnych i maszynach.Zapobiegając potrzebie ponownego odkrycia koła we wdrażaniu przechowywania własności, uprawnień, znaczników czasu itp. W kółko dla każdego nowego narzędzia do archiwizacji nie tylko oszczędza dużo (w przeciwnym razie niepotrzebnie) czasu na rozwoju, ale także gwarantuje taką samą niezawodność dla każdego Nowa aplikacja.
spójność Interfejs użytkownika pozostaje taki sam przez cały czas.
Nie trzeba pamiętać, że aby przywrócić uprawnienia za pomocą narzędzia A, musisz przekazać opcję,
--i-hope-you-rember-this-one
a za pomocą narzędzia B musisz użyć--this-time-its-another-one
narzędzia C: --hope-you-didnt-try-with-tool-as-switch.Podczas korzystania z narzędzia D naprawdę byś go zepsuł, gdybyś go nie używał
--if-you-had-used-tool-bs-switch-your-files-would-have-been-deleted-now
.źródło
Wiele dobrych odpowiedzi, ale wszystkie pomijają ważny fakt. Tar ma ugruntowany ekosystem użytkowników i programistów w świecie podobnym do Uniksa. Tak działa, podobnie jak ZIP działa w ekosystemie DOS / Windows. Posiadanie takiego ekosystemu podtrzymuje technologię, a nie jej zalety techniczne.
źródło
Powodem jest „umocnienie w kulturze”. Jest wielu ludzi takich jak ja, których oczy błyszczą, gdy są proszeni o przetworzenie czegokolwiek innego niż skompresowane archiwum tar lub okazjonalne ZIP, jeśli pochodzi ze świata Windows.
Nie chcę słyszeć o 7-Zip, RAR ani nic innego. Jeśli muszę zainstalować program do rozpakowania pliku, to działa. Zrobię to, jeśli spowoduje to moje wynagrodzenie lub jeśli treść jest czymś, co „muszę mieć” i nie jest dostępna w żaden inny sposób.
Zaletą tar jest to, że jeśli wyślesz komuś tarballa, zostanie on natychmiast rozpoznany. Odbiorca może wpisać polecenia ekstrakcji przy użyciu pamięci mięśni.
Prawdziwe pytanie brzmi: dlaczego niektórzy ludzie mają taką obsesję na punkcie oszczędzania jeszcze jednego bajtu miejsca, że proszą wszystkich innych o marnowanie czasu na instalowanie jakiegoś egzotycznego narzędzia i naukę korzystania z niego? A potem są głupie zastosowania egzotycznych formatów kompresji i archiwizacji. Czy wideo H.264 z dźwiękiem AAC naprawdę musi zostać umieszczone w wieloczęściowym pliku RAR?
Format tar może być stary, ale przechowuje wszystko, co jest istotne: zawartość pliku, ścieżki, znaczniki czasu, uprawnienia i prawa własności. Przechowuje nie tylko dowiązania symboliczne, ale może także zachować twardą strukturę linków. Przechowuje również specjalne pliki, więc archiwum taśm można wykorzystać do takich rzeczy, jak miniaturowy
/dev
katalog używany podczas ładowania. Możesz złożyć dystrybucję Linuksa, której format pakietu binarnego nie składa się z niczego, oprócz plików tar, które są nieskompresowane względem katalogu głównego systemu plików.źródło
Odpowiadając bezpośrednio na zadane pytania:
W ogólnych przypadkach występuje specyficzna poprawa wydajności,
tar
szczególnie przy użyciu wbudowanej biblioteki kompresji ( wiersze poleceńtar xvzf
lubtar xvjf
style, w których używana jest biblioteka kompresji zamiast drugiego procesu). Wynika to z dwóch głównych przyczyn:podczas przetwarzania dużej liczby stosunkowo małych plików, zwłaszcza tych powszechnie używanych w dystrybucji oprogramowania, występuje duża nadmiarowość. Kompresowanie wielu plików powoduje wyższą ogólną kompresję niż kompresja pojedynczych plików. „Słownik” jest obliczany raz dla każdego fragmentu danych wejściowych, a nie dla każdego pliku.
tar
rozumie systemy plików. Jest przeznaczony do zapisywania i przywracania działającego / działającego systemu operacyjnego. Głęboko chwyta dokładnie to, co ważne w systemie plików UNIX, i wiernie je przechwytuje i przywraca. Inne narzędzia ... nie zawsze, szczególnie rodzina zip, która jest lepiej zaprojektowana do udostępniania plików w rodzinie systemów operacyjnych, w których dokument jest ważny, a nie wierna kopia wrażliwa na system operacyjny.Rzadka obsługa plików. Niektóre biblioteki bezpośrednich baz danych opierają się na plikach rzadkich - plikach, w których dane są nominalnie GB, ale rzeczywiste dane zapisane i przechowywane są znacznie, dużo mniejsze i faktycznie wykorzystuje się tylko kilka bloków dysku. Jeśli użyjesz nieświadomego narzędzia, po dekompresji skończysz na ogromnym zużyciu bloku dysku, z których wszystkie zawierają zera. Przekształcenie tego z powrotem w rzadki plik jest ... bolesne. Jeśli masz nawet miejsce, aby to zrobić. Potrzebujesz narzędzia, które uchwyci, czym jest rzadki plik, i szanuje to.
Metadane Przez lata Unix ewoluował dziwne rzeczy. 14-znakowe nazwy plików, długie nazwy plików, linki sym linki, bity lepkie, bity administratora, odziedziczone uprawnienia dostępu do grup itp. Tar je rozumie i odtwarza. Narzędzia do udostępniania plików ... nie tyle. Wiele osób nie używa linków w sposób, w jaki mogliby ... Jeśli kiedykolwiek pracowałeś z oprogramowaniem, które używa linków, a następnie używałeś nieświadomego narzędzia do tworzenia kopii zapasowych i przywracania, masz teraz wiele niezależnych pliki zamiast jednego pliku o wielu nazwach. Ból. Twoje oprogramowanie ulega awarii i masz nadęty dysk.
tar
Pracuje. Wykonuje pracę, do której jest przeznaczony, cóż. Były też inne zamienniki reklamowany (cpio
,pax
, etc, etc). Ale tar jest zainstalowany na prawie wszystkim, a używane biblioteki kompresji są również bardzo popularne z innych powodów. Nie pojawiło się nic, co znacznie przewyższałoby to, co robi smoła. Bez wyraźnych korzyści i dużego osadzonego zastosowania i wiedzy w społeczności, nie będzie wymiany. Smoła ma wiele zastosowań na przestrzeni lat. Jeśli otrzymamy poważne zmiany w sposobie myślenia o systemach plików lub pliki nietekstowe w jakiś sposób staną się sposobem przesyłania kodu (obecnie nie wyobrażam sobie, jak to zrobić, ale zignoruj to ...), możesz znaleźć inne narzędzie. Ale to nie byłby typ systemu operacyjnego, którego używamy teraz. To byłaby inna rzecz, inaczej zorganizowana i potrzebowałaby własnych narzędzi.Najważniejsze pytanie, które, jak sądzę, nie zadałeś, brzmi: do jakich miejsc pracy „smoła” jest nieodpowiednia.
tar
z kompresją jest krucha. Potrzebujesz całego archiwum, kawałek po kawałku. Z mojego doświadczenia wynika, że nie jest odporny. Miałem błędy bitów powodujące, że archiwa wieloczęściowe stały się bezużyteczne. Nie wprowadza redundancji w celu ochrony przed błędami (które mogłyby pokonać jedno z zadanych pytań na temat kompresji danych). Jeśli istnieje możliwość uszkodzenia danych, chcesz sprawdzić błędy z redundancją, aby móc zrekonstruować dane. Oznacza to z definicji, że nie jesteś maksymalnie skompresowany. Nie możesz mieć zarówno wymaganej ilości danych, jak i wartości maksymalnej (kompresja maksymalna), a każdej części danych można utracić i odzyskać (redundancja i korekcja błędów). Więc ... jaki jest cel twojego archiwum?tar
jest świetny w środowiskach o wysokiej niezawodności i gdy można ponownie odtworzyć archiwum ze źródła. IME, w rzeczywistości jest gorzej w stosunku do oryginalnej rzeczy, którą sugerują jej nazwy - archiwizacji na taśmie. Błędy jednobitowe na taśmie (lub, co gorsza, błędy jednobitowe w głowicy taśmy, gdzie tracisz jeden bit na każdy bajt całej taśmy lub archiwum) powodują, że dane stają się bezużyteczne. Dzięki wystarczającej redundancji oraz wykrywaniu i korekcji błędów możesz przetrwać jeden z tych problemów.Więc ... ile hałasu i korupcji występuje w środowisku, na które patrzysz, i czy źródła można użyć do zregenerowania uszkodzonego archiwum? Odpowiedź z podanych przez ciebie wskazówek brzmi: system nie jest hałaśliwy, a to źródło jest w stanie zregenerować archiwum. W takim przypadku
tar
jest odpowiedni.tar
z kompresją również nie działa dobrze ze wstępnie skompresowanymi plikami. Jeśli wysyłasz już skompresowane dane ... po prostu użyj tar i nie zawracaj sobie głowy etapem kompresji - to tylko dodaje cykli procesora, aby niewiele. Oznacza to, że musisz wiedzieć, co wysyłasz i dlaczego. Jeśli cię to obchodzi. Jeśli nie przejmujesz się tymi szczególnymi przypadkami, tar będzie wiernie kopiować dane, a kompresja wiernie nie zrobi nic użytecznego, aby ją zmniejszyć. Nie ma dużego problemu, poza niektórymi cyklami procesora.źródło
TAR to Archiwum taśm. Jest dostępny od dziesięcioleci i jest powszechnie używany i obsługiwany. Jest to produkt dojrzały i dba o obecne i starsze potrzeby.
źródło