Szybko wypisz zawartość dużego archiwum tar

5

Muszę wymienić zawartość dość dużego (gzipowanego) archiwum tar (około 37 Gib). tar -ztvf archive trwa wiecznie. Czy jest jakiś sposób na szybkie uzyskanie tego wpisu? Prawdopodobnie tylko listując zawartość do określonej głębokości katalogu?

Czy mogę zrobić coś podczas pakowania archiwum, aby umożliwić szybsze wyświetlanie zawartości?

Thomas Arildsen
źródło
1
Myślę, że następnym razem, gdy zarchiwizuję duże kawałki plików, spróbuję dar zamiast.
Thomas Arildsen
2
Nie dotyczy bezpośrednio, ale przypomniał mi o: xkcd.com/1168
Kevin Fegan

Odpowiedzi:

2

Więc masz zestaw plików, z których korzystasz w archiwum "smoła" , który utworzy jeden plik wyjściowy. Wtedy użyłeś „gzip” skompresować ten ".smoła" plik do ".zamek błyskawiczny" .

Jeśli tak, to proces pobierania listy wszystkich plików w ".smoła" plik wymaga, aby ".smoła" plik musi być w pełni rozpakowany z ".zamek błyskawiczny" plik przed zawartością ".smoła" plik może zostać wyświetlony.

To zawsze zajmuje więcej czasu niż uzyskanie listy plików przechowywanych „bezpośrednio” w pliku ".zamek błyskawiczny" plik. Jeśli plik jest duży, czas ten może być znaczny.

Jeśli chcesz zmniejszyć czas wymagany do wyświetlenia plików w skompresowanym pliku archiwum, to:

  1. rozsunąć suwak (rozpakuj) ".smoła" plik z ".zamek błyskawiczny" plik i rozwiń wynik ".smoła" plik do podstawowego zestawu plików

  2. Stwórz ".zamek błyskawiczny" plik bezpośrednio z zestawu plików.

W ten sposób pliki w pliku archiwum można wyświetlić bez rozpakowywania archiwum.

Kevin Fegan
źródło
Tyle że powiedziano mu, żeby je zapakował tar -zcvf, tak. Nie zamierzam teraz konwertować archiwum, ponieważ nie będę go potrzebował po rozpakowaniu. Po prostu musiałem zidentyfikować, który z kilku archiwów zawierał plik, którego szukałem.
Thomas Arildsen
1

-z znaczy do ungzip lub gzip plik tar. Sama Tar pakuje się bez kompresji. Gdy gzip nie jest w stanie zrobić wiele, metadane znajdują się w skompresowanym pliku tar

$ gunzip -l co.tar.gz 
         compressed        uncompressed  ratio uncompressed_name
             177183             1044480  83.0% file.tar

To wszystko widzi gzip. Musisz wrócić do tar. Uniksowym sposobem obejścia tego problemu jest po prostu wygenerowanie manifestu, find . > MANIFEST i wysyłaj z tym. Istnieją jednak inne opcje, niż używanie .tar.gz wystarczy wysłać inny format, który nie kompresuje metadanych. Myślę 7zip pasuje do tego opisu.

Niedawno ludzie zaczęli używać sha1sum lub md5sum który jest lepszym planem niż zwykły MANIFEST.

find destination/ -type f -exec sha1sum {} +; > sha1sum

Można to również sprawdzić raczej łatwo, ale nie jest to konieczne, ponieważ obie tar i gzip wewnętrznie dostarczają sumy kontrolne,

sha1sum -c ./sha1sum
Evan Carroll
źródło