Jaka jest dziś zaleta używania „tar”?

209

Wiem, że tarzostał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 tarenkapsulacji w gziplub bzip2, 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 tarformatu plików, których inne formaty plików, takie jak .7zi .zipnie mają?

  • Ponieważ tarjest to tak stary format pliku, a nowsze formaty plików istnieją dzisiaj, dlaczego tar(bez względu na to, czy jest on enkapsulowany gzip, bzip2czy nawet nowy xz) 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?

MarcusJ
źródło
33
Nie zgadzam się, że „marnuje czas”. Jeśli masz na myśli wydajność, nie ma rzeczywistej obniżki wydajności dla tar, ponieważ format jest bardzo wydajny. Jeśli masz na myśli, że to marnuje twój czas, nie rozumiem, jak tar xvzftrudniej jest 7z -x...
allquixotic
41
Wydaje się, że lamentuje nad faktem, że tar nie przechowuje katalogu na początku, więc narzędzia do kompresji GUI, które chcą wypisać zawartość przed wypakowaniem, muszą rozpakować całą zawartość tar tylko po to, aby wypisać zawartość, a następnie dekompresują ją ponownie podczas wypakowywania .
psusi
10
@MarcusJ: myślisz, że 7z w jakiś sposób magicznie wie, gdzie zaczyna się każdy plik w archiwum? Poza tym zwykłe algorytmy kompresji (gzip, bzip2) działają ze strumieniowaniem zawartości: nie trzeba ukończyć 100% pierwszego etapu przed następnym.
souser12345
11
Również @MarcusJ wydajesz się mylić dwie różne rzeczy: kiedy to robisz tar xvzf, nieskompresowane dane nie są zapisywane na dysku twardym w .tarformacie! Masz rację, że jeśli uruchomiłeś, gunzip blah.tar.gza następnie tar xf blah.tarzapisałby dane dwa razy na dysku (raz jako .tar i ponownie jako pliki w systemie plików), ale tak naprawdę nikt tego nie robi. Do tar xzfużywa UNIX rurowe (w zasadzie kopia pamięci) do przesyłania danych nieskompresowanych z gzip(lub cokolwiek) do sprężarki tar, więc dane nie zapisane na dysku w .tarformacie.
allquixotic
14
Wiem tylko, że 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łota
PPC

Odpowiedzi:

178

Część 1: Wydajność

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

Na dysku blah.tar.gzznajduje 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:

tar cf blah.tar files ...

Spowodowałoby blah.tarto po prostu agregację files ...nieskompresowanej formy.

Wtedy byś zrobił

gzip blah.tar

Odczytuje to zawartość blah.tardysku, kompresuje je za pomocą algorytmu kompresji gzip, zapisuje zawartość blah.tar.gz, a następnie rozłącza (usuwa) plik blah.tar.

Teraz dekompresujmy!

Sposób 1

Masz blah.tar.gz, tak czy inaczej.

Zdecydowałeś się uruchomić:

gunzip blah.tar.gz

To będzie

  • PRZECZYTAJ 1 GB skompresowanej zawartości danych blah.tar.gz.
  • Przetwarzaj skompresowane dane przez gzipdekompresor w pamięci.
  • Gdy bufor pamięci zapełni się danymi o wartości „bloku”, NAPISZ nieskompresowane dane do pliku blah.tarna dysku i powtarzaj, aż wszystkie skompresowane dane zostaną odczytane.
  • Odłącz (usuń) plik blah.tar.gz.

Teraz masz blah.tarna 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:

tar xvf blah.tar

To będzie

  • PRZECZYTAJ 2 GB nieskompresowanej zawartości danych blah.tari tarstruktur danych formatu pliku, w tym informacje o uprawnieniach do plików, nazwach plików, katalogach itp.
  • NAPISZ 2 GB danych plus metadane na dysk. Obejmuje to: tłumaczenie informacji o strukturze danych / metadanych na tworzenie nowych plików i katalogów na dysku, odpowiednio, lub przepisywanie istniejących plików i katalogów z nową zawartością danych.

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ć:

tar xvzf blah.tar.gz

To będzie

  • PRZECZYTAJ do pamięci skompresowaną zawartość 1 GB danych blah.tar.gz, blok na raz.
  • Przetwarzaj skompresowane dane przez gzipdekompresor w pamięci.
  • Gdy bufor pamięci się zapełnia, potokuje te dane w pamięci do tarparsera formatu pliku, który odczyta informacje o metadanych itp. I nieskompresowanych danych pliku.
  • Gdy bufor pamięci zapełni się w taranalizatorze 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 Ziplub 7-Zip , dostosowując się do wszelkich różnic w stopniu kompresji.

A jeśli Twoim problemem jest współczynnik kompresji, użyj Xzkompresora do enkapsulacji tar, 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.

allquixotic
źródło
Wyrazy uznania za świetną odpowiedź z całą zawartością oddzieloną pod trzema odrębnymi nagłówkami.
JFW
2
Wydaje się, że „Część 3: Kompatybilność” została skopiowana z odpowiedzi @ Kruug.
titaniumdecoy
23
@titaniumdecoy Czy zauważyłeś, że to allquixotic, który pierwotnie napisał tę część i zredagował ją w odpowiedzi Kruuga?
slhck,
2
Dzięki za zwrócenie na to uwagi, nie zauważyłem. Jednak wydaje mi się trochę głupie, aby mieć identyczny blok tekstu w dwóch różnych odpowiedziach na tej stronie.
titaniumdecoy
1
Odpowiada to, dlaczego tarpasuje 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 jak darte, nie są stosowane. Innymi słowy, ta odpowiedź uzasadnia użycie agregatorów plików, ale nie samego taroprogramowania.
gaboryczny
101

To zostało odebrane na przepełnienie stosu .

Bzip i gzip działają na pojedynczych plikach, a nie na grupach plików. Zwykły stary zip (i pkzip) działają na grupach plików i mają wbudowaną koncepcję archiwum.

Filozofia * nix jest jednym z małych narzędzi, które bardzo dobrze wykonują określone zadania i można je łączyć. Dlatego są tutaj dwa narzędzia, które mają określone zadania i zostały zaprojektowane tak, aby dobrze do siebie pasowały. Oznacza to również, że możesz używać tar do grupowania plików, a następnie masz do wyboru narzędzie do kompresji (bzip, gzip itp.).

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 tari gunzipbez 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.

Kruug
źródło
7
Cześć @Kruug, zredagowałem twój post, aby dać praktyczną perspektywę, dlaczego ludzie nadal decydują się na użycie tych formatów, kiedy mają wybór, aby użyć czegoś innego. Nie zmieniłem tekstu, który już miałeś. Ma to na celu zapewnienie, że to, co wydaje się być kanoniczną odpowiedzią na to pytanie, będzie miało pełny obraz. Jeśli chcesz, możesz edytować moją edycję :)
allquixotic
5
@allquixotic inception ktoś? Edytuj edycję i edytuj, aby móc edytować edycję ...
SnakeDoc
21
Ta odpowiedź jest zdecydowanie przypadkiem: „Czasem zachwycają mnie niezasłużone głosy poparcia”. Nie odnosi się do podstawowej kwestii pytania, która polega na wyszczególnieniu zawartości skompresowanej smoły i nie jest to nawet oryginalna odpowiedź!
Ярослав Рахматуллин
5
-1 za wielką sprawiedliwość. to powinien być komentarz.
wim
6
Nie kupuję argumentu „starszy / najniższy wspólny mianownik”; Pamiętam, że w nowych systemach (sun) często musiałem pobierać gzip / gunzip (z sunfreeware) tylko po to, aby zainstalować inne oprogramowanie w pakiecie tar.gz (plus tar gnu, ponieważ ssała tar smo). W przypadku wcześniejszego / niższego wspólnego mianownika miałeś 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.
Michał
63

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.

dmckee
źródło
12
Nie potrzebujesz GNU tar, aby użyć dowolnego kompresora: po prostu powiedz tarowi, aby zapisał archiwum na standardowe wyjście f -i potokował go do kompresora.
Ilmari Karonen
3
„Czy chcesz nieskompresowane dane (dlaczego?)?” tarBardzo 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. Np tar cf - * | tar xf - -C /somewhere.
Steve
1
Dodatkowo, chciałbyś mieć plik .tar, gdy docelowy system plików wykonuje duplikację. Tworzenie skompresowanych archiwów w systemie plików, który wykonuje duplikację, znacznie obniży współczynnik deduplikacji. Przykład: Raz usunęliśmy plik tar.gz o wartości 10 000,00 USD; co oznacza, że ​​zajmowało to 10 000 $ przestrzeni dyskowej, ponieważ ktoś użył kompresji.
Aaron
@Steve cykle procesora mogą być tańsze niż dyskowe IO dla algorytmów takich jak LZ4 lub LZO. Dlatego są używane w ZRAM i przezroczystych systemach kompresji plików, takich jak NTFS, ZFS, Btrfs ... więc czasami jest to rzeczywiście szybsze niż kompresja, ponieważ ilość operacji we / wy dysku jest znacznie zmniejszona
phuclv
30

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

tar cf - some_directory | ssh host "(cd ~/somewhere | tar xf -)"

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ą tarjest 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ć tarz gzipto: 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żywam gzip, 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: gzipmożna uznać, że jest dostępny wszędzie.

Powody korzystania tarna korzyść scp, rsyncitp

To bije, scpjeś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, rsyncnaprawdę się opłaca tylko wtedy, gdy część plików - lub starsza wersja - jest już obecna w miejscu docelowym. Początkowa kopia tarjest najszybsza, z kompresją lub bez, w zależności od rzeczywistych danych.

Marco
źródło
1
Ale jeśli zamierzasz archiwizować, dlaczego nie skompresować? Okej, tak, może zaoszczędzić czas na plikach, które nie są łatwo skompresowane, ale wtedy archiwa powinny prawdopodobnie wiedzieć, że na przykład muzyka nie jest bardzo ściśliwa, z wyjątkiem nagłówków.
MarcusJ
2
Może nie być konieczne lub zawartość może nie być ściśliwa.
Hasturkun
4
Ze względu na wydajność często łatwiej jest używać nieskompresowanej agregacji plików podczas wysyłania danych przez łącza sieciowe o bardzo dużej przepustowości, które przekraczają prędkość, z jaką kompresor może kompresować dane. Można to osiągnąć na przykład dzięki Gigabit Ethernet; tylko kilka dobrze zaprojektowanych algorytmów kompresji, które mają również bardzo niski współczynnik kompresji, może kompresować dane tak szybko, nawet na dużym procesorze stacjonarnym. Na urządzeniu wbudowanym masz jeszcze mniej czasu na procesor.
allquixotic
3
nie tylko przyspiesza to, ale pozwala także zachować własność pliku, znaczniki czasu i atrybuty (jeśli pozwalają na to uprawnienia użytkownika)
Andre Holzner
3
@AndreHolzner Right. Często tak robię tar cf - . | (cd ~/somewhere; tar xvf -). Naprawdę przydaje się nie czekać na zapisanie indeksu centralnego (jak na przykład w pliku zip).
user239558
24

Dodając do innych dobrych odpowiedzi tutaj, wolę kombinację tar+ gzip|bzip2|xzgłównie dlatego, że te skompresowane pliki są jak strumienie i można je łatwo potokować.

Muszę rozpakować plik dostępny w Internecie. Albo zipczy rarformatów muszę go pobrać, a następnie rozpakować go. Dzięki tar.{gz,bz2,xz}mogę pobierać i rozpakowywać w tym samym kroku, bez konieczności fizycznego przechowywania skompresowanego archiwum na dysku:

curl -s http://example.com/some_compressed_file.tar.gz | tar zx

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ą ziplub rarplików.

Carlos Campderrós
źródło
2
Nie wiem o rar (to okropny program, który wydaje się być popularny wśród piratów ze względu na jego zdolność do dzielenia się na wiele mniejszych plików), ale możesz dobrze przesyłać strumieniowo zip. Strona podręcznika nawet o tym wspomina. Ma również tę zaletę, że jest w stanie wydajnie wyodrębniać lub aktualizować pliki ze środka dużego archiwum, chociaż tar ma tendencję do uzyskiwania nieco lepszej kompresji. Kompresja a dostęp losowy jest kompromisem.
psusi
3
Nieprawidłowy @psusi. Można zrobić hacki jak ten , ale to, co robi jest pobrać wszystkie pliki w pamięci, a następnie rozpakuj go, zamiast rozpakować podczas pobierania. I funzippo prostu wypakowuje pierwszy plik z pliku zip, nie wszystkie.
Carlos Campderrós
2
@Stu tylko dla wyjaśnienia, to nie problem, to tylko optymalizacja twojego czasu (nie dbam o przestrzeń, jeśli tak myślałeś)
Carlos Campderrós
1
Obie strony działają: Możesz tar zc /some/folder | ssh user@host "cd /other/folder && tar zx"
tarować
1
@psusi, jak pamiętam ze starych czasów, kiedy korzystam z pkzip do przechowywania plików na wielu dyskietkach, katalog sklepu zip na końcu archiwum. Zawsze żąda ostatniej dyskietki, aby rozpocząć ekstrakcję lub pokazać katalog. Więc en.wikipedia.org/wiki/File:ZIP-64_Internal_Layout.svg
Michaił Moskalev
13

Istnieje kilka powodów, aby trzymać się Tar (GNU).

To jest:

  • Licencja GPL
  • dobre w sensie filozofii Unix
    • narzędzie jednofunkcyjne, zdolne do wykonania kilku zadań
  • dobrze udokumentowane i ma wiele zaufanych funkcji
  • kompatybilny z kilkoma algorytmami kompresji
  • łatwy w użyciu, a ludzie rozwinęli z nim nawyki
  • szeroko dostępny
  • Wewnątrz czuję się ciepło i niewyraźnie, gdy używam oprogramowania uruchomionego przez RMS (bez Emacsa )

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
1
To bezpłatne oprogramowanie - więc jest ich wiele. Jest dobry w tym, co robi - Trudno porównać z innymi rzeczami. Jest dobrze udokumentowany i ma wiele funkcji - Funkcje są rzadko używane i obrzydliwie łatwe w użyciu. Obsługuje kilka algorytmów kompresji - nie tak wiele jak inne
Griffin
4
stworzyli go Bogowie Unixowi - dlatego musimy go użyć!
SnakeDoc
28
Tar zapisuje również natywnie uprawnienia UNIX i jest bardzo dobrze znany i testowany. Istnieje więcej niż kilka przypadków, w których może być konieczne scalenie wiązki plików w jeden plik lub strumień, ale niekoniecznie kompresja.
LawrenceC
3
Na szczęście tar nie ogranicza się tylko do wersji GNU. Chociaż GNU tar jest z pewnością dobrym oprogramowaniem, interfejsy libarchive + są znacznie szybsze i łatwiejsze do osadzenia w innych projektach oprogramowania. Możesz argumentować za tar, nie zmieniając go w walkę o licencję.
Lucas Holt
1
Nie jestem sarkastyczny. Lubię RMS i sposób, w jaki przekazuje swoje wierzenia.
Ярослав Рахматуллин
11

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.

xorsyst
źródło
5
Nie, możesz zarówno czytać, jak i zapisywać pliki zip jako strumień zi do potoku.
Mark Adler
Może to być specyficzne dla implementacji, z pewnością nie jest obsługiwane przez oryginalny pkzip.
xorsyst
1
Tak, oprogramowanie musi być napisane, aby je obsługiwać. Format zip obsługuje go całkowicie, z deskryptorami danych, które mogą śledzić skompresowane dane o długości i CRC.
Mark Adler
@MarkAdler, jakie oprogramowanie? Infozip nie obsługuje rozpakowywania z potoku.
psusi
11

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ę.

Czy występuje utrata wydajności podczas etapów agregacji / kompresji / dekompresji za używanie tar zamkniętych w gzip lub bzip2, w porównaniu do używania 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).

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.

Czy istnieją funkcje formatu tar, których nie mają inne formaty plików, takie jak .7z i .zip?

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.

Skoro tar jest tak starym formatem plików, a dziś istnieją nowsze formaty plików, dlaczego tar (niezależnie od tego, czy jest zamknięty w gzip, bzip2, czy nawet w nowym xz) jest nadal tak szeroko stosowany w systemach GNU / Linux, Android, BSD i innych takich systemach UNIX systemy operacyjne, do przesyłania plików, źródła programów i pobierania plików binarnych, a czasem nawet jako format menedżera pakietów?

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.

Mark Adler
źródło
CW oznacza Community Wiki . Zobacz także Co to są posty „Wiki Wiki”? .
ctype.h
Myślę, że to CW, ponieważ pytanie ma więcej niż 15 odpowiedzi. Gdy opublikowałeś tę odpowiedź, ponieważ jest ona piętnasta, pytanie i wszystkie odpowiedzi zostały oznaczone jako CW.
ctype.h
Nie rozumiem, w jaki sposób ta odpowiedź mówi coś, czego nie robi żadna inna odpowiedź, poza bezpośrednim zacytowaniem pytań (które napisałem, BTW, ponieważ pierwotna wersja pytania była na tyle okropna, że ​​mogła zostać zamknięta jako NARQ). Niezła próba.
allquixotic
Okej Cokolwiek chcesz myśleć, jest w porządku. Twoja odpowiedź ani żadna inna odpowiedź wydaje się dotyczyć tego, czy istnieje kara za wyniki. Twoja odpowiedź nie rozwiązuje zauważalnej różnicy kompresji, chociaż inni tak. Ponieważ Twoja nie zajmuje się wydajnością (sekcja poświęcona wydajności dotyczy pracy, nic nie dotyczy wydajności), żadna inna odpowiedź nie odpowiada na wszystko w jednym miejscu. Interesujące jest to, że napisałeś pytanie dotyczące wydajności, ale nie odpowiedziałeś na nie! Domyśl.
Mark Adler
Nawiasem mówiąc, twoja dyskusja dotycząca przepływu pracy dotyczy czegoś, czego nikt nigdy nie robi, a mianowicie zapisania pliku tar na dysku, a następnie skompresowania go. tar jest zawsze używany albo bezpośrednio w programie kompresji, albo bezpośrednio w potoku do programu kompresji.
Mark Adler
11

Występ

Duża różnica polega na tym, że kolejność kompresji i archiwizacji jest wykonywana w. tarArchiwa, a następnie może opcjonalnie wysłać archiwum do kompresora, zipbuduje 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 zipmetodzie 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, ale darrobi i zipmoż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ą, tarjest 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ą. darnie zapewnia wystarczającej korzyści, aby uzasadnić publikowanie plików w formacie, gdy większość ludzi już tarzainstalowała, a niewielu wie o tym dar, więc prosta bezwładność utrzymuje nas na starym standardzie.

psusi
źródło
2
zip może przechowywać i przywracać uprawnienia Unix. Robi to zip i rozpakuj narzędzia InfoZIP normalnie dystrybuowane z systemem Unix.
Mark Adler
3
zip nie kompresuje pliku w porcjach po 32 KB. Zmieszasz rozmiar przesuwanego okna 32K ze sposobem kompresji.
Mark Adler
1
gzip -9 nie ma słownika 900 kB. Wszystkie poziomy gzip używają słownika 32K. Być może myślisz o bzip2.
Mark Adler
Tyle dezinformacji w jednej odpowiedzi.
Mark Adler
1
Musisz albo poprawić odpowiedź, albo ją usunąć.
Mark Adler
7

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:

  • własność pliku
  • uprawnienia do plików
  • mniej powszechne uprawnienia do plików (np. setuid, lepki bit)
  • linki symboliczne
  • twarde linki
  • wpisy urządzeń (tj. urządzenia znakowe i blokowe)
  • rzadkie pliki
  • Wpisy ACL ( nie obsługiwane przez wszystkie wersje )
  • atrybuty rozszerzone / użytkownika ( nie obsługiwane przez wszystkie wersje )
  • Etykiety SElinux ( nie obsługiwane przez wszystkie wersje )

Posiada również --one-file-systemopcję, 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 tarpierwsza (lub nawet wyłącznie). Jest to więc nadal najbardziej zgodny sposób zapisywania plików.

tylerl
źródło
Ta odpowiedź jest jedyna, która ma sens. Dziękujemy za opublikowanie go.
gaboryczny
5

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.

Michael Dillon
źródło
Praktycznie nigdy nie widzisz nieskompresowanych tarplików i jest ku temu powód. taruż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ć gzipbez zastanowienia się.
Christian
Zabawnym wyjątkiem jest to, że kod źródłowy gzip jest dostępny z nagiej zawartości tar, z oczywistych powodów.
Mark Adler
4

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.

Kriss
źródło
3

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ć tararchiwizacji. Zatrudnianie kogoś do „naprawy” wszystkich starych systemów nie jest opłacalne.

Keltari
źródło
3

tar to UNIX, ponieważ UNIX to tar

Moim zdaniem powodem tego, że wciąż go używam, tarjest 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 ( taraby 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 tarz dowolnym algorytmem kompresji już istniejącym lub dowolnym algorytmem kompresji jeszcze wymagającym opracowania, bez konieczności zmiany czegokolwiek w wewnętrznych działaniach tar.

    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-onea 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.

mykra
źródło
3

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.

Izaak Rabinowicz
źródło
Naprawdę dobry komentarz, nawet o tym nie myślałem, i to NAPRAWDĘ dobry punkt do zrobienia.
MarcusJ
3

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 /devkatalog 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.

Kaz
źródło
Re „So obsesja” ... wyobraź sobie, że utknąłeś w wojnie z pojedynczym, zahartowanym laptopem, a niewymiarowy dysk twardy 20G jest prawie pełny, może jeszcze Gig, i słysząc strzały z daleka, naprawdę chciałbyś przeglądać 100 MB instrukcja .PDF, która pokazuje, jak naprawić jeepa, ale plik znajduje się w 2-gigawowym pliku .tgz. Laptop działa na dziwnym, zastrzeżonym systemie operacyjnym i nie masz uprawnień roota do usuwania plików systemowych, nie znaczy to, że byłoby oczywiste, jak usunąć 4G + bez zepsucia przeglądarki lub przeglądarki plików PDF. Gdybyś mógł po prostu wyodrębnić ten plik 100 MB ...
agc
2

Odpowiadając bezpośrednio na zadane pytania:

Czy występuje utrata wydajności podczas etapów agregacji / kompresji / dekompresji za używanie tar zamkniętych w gzip lub bzip2, w porównaniu do używania 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).

W ogólnych przypadkach występuje specyficzna poprawa wydajności, tarszczególnie przy użyciu wbudowanej biblioteki kompresji ( wiersze poleceń tar xvzflub tar xvjfstyle, 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.

  • tarrozumie 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.

Czy istnieją funkcje formatu tar, których nie mają inne formaty plików, takie jak .7z i .zip?

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.

Skoro tar jest tak starym formatem plików, a dziś istnieją nowsze formaty plików, dlaczego tar (niezależnie od tego, czy jest zamknięty w gzip, bzip2, czy nawet w nowym xz) jest nadal tak szeroko stosowany w systemach GNU / Linux, Android, BSD i innych takich systemach UNIX systemy operacyjne, do przesyłania plików, źródła programów i pobierania plików binarnych, a czasem nawet jako format menedżera pakietów?

tarPracuje. 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.

tarz 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?tarjest ś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 tarjest odpowiedni.

tarz 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.

JezC
źródło
-3

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.

Edward
źródło